Linux下的策略路由

如果我们有两条上网线路可以使用,那么策略路由就是个好的选择了。

基本概念:

  • 策略路由表(Policy routing tables): Linux 缺省有3个表, local (不能改也不能删), main, 和 default。添加路由的时候如果不指定,缺省是添加到main路由表里的。
  • 策略路由规则(Policy routing rules): Linux 缺省也有三套路由规则,对应三个缺省路由表。

查看一下就可以看到三个表:

1# ip rule list
20:    from all lookup local  
332766:    from all lookup main  
432767:    from all lookup default  

查local表的路由规则:

 1# ip route list table local
 2local 10.10.0.1 dev tun0  proto kernel  scope host  src 10.10.0.1  
 3broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1  
 4local 192.168.122.1 dev virbr0  proto kernel  scope host  src 192.168.122.1  
 5local 172.16.8.1 dev br0  proto kernel  scope host  src 172.16.8.1  
 6broadcast 192.168.122.0 dev virbr0  proto kernel  scope link  src 192.168.122.1  
 7broadcast 172.16.8.0 dev br0  proto kernel  scope link  src 172.16.8.1  
 8broadcast 172.16.9.255 dev br0  proto kernel  scope link  src 172.16.8.1  
 9broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1  
10broadcast 192.168.122.255 dev virbr0  proto kernel  scope link  src 192.168.122.1  
11local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1  
12local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1  

使用策略路由的方法也很简单,1、定义一个路由表,2、定义路由规则,3、应用路由规则。

一、先建立一个自定义的路由表,ID 是 10000 ,名字叫做mygod(注意,ID从0-32766之间随你便起,3万多个可选):

1echo 10000 mygod >> /etc/iproute2/rt_tables  

二、建立路由规则

1ip rule add from <source address> lookup <table name>  

假设我们机器上连了两条线路,两块网卡,分配了2个ip,第一个线路是eth0,ip是192.168.1.1,第二个线路是eth1,ip是192.168.2.1。我们添加一下策略路由规则,从192.168.2.1过来的走mygod规则。

1ip rule add from 192.168.2.1 lookup mygod  

三、应用路由规则

1ip route add default via 192.168.2.1 dev eth1 table mygod  

注意,这里是应用了缺省路由,当然你也可以弄其他的。比如,一台机器一个网卡,N个IP,每个ip对应不同的专线。你就可以添加不同的非缺省路由。另外,也是支持vlan的。

1ip route add default via 192.168.2.1 dev eth0.30 table vlan30  

如果想把策略路由固定下来,不用每次都执行shell脚本,生成下面两个文件:

1# vi /etc/sysconfig/network-scripts/route-eth1
2192.168.2.0/24 dev eth1 table mygod  
3default via 192.168.2.1 dev eth1 table mygod
4
5# vi /etc/sysconfig/network-scripts/rule-eth1
6from 192.168.2.0/24 lookup mygod  

服务器R920的一次急速故障处理
Docker急速搭建运行ikev2 Vpn来让iphone翻墙
comments powered by Disqus