| 
 | 
	
 
参考了下论坛中关于电信+网通双线策略路由的帖子,并结合实际环境,将实现双线策略的几种方式总结如下,对有需要的朋友有所帮助,双线比单线要复杂多了,但把策略的原理弄明白了,就会发现其实并不难。 
 环境 
 服务器(网关): 
 eth0 为LAN口,IP为 LAN_IP = 192.168.0.1 
 eth1 为第一个WAN口,接电信线路,IP为 CTC_IP,网关为 CTC_GW 
 eth2 为第二个WAN口,接网通线路,IP为 CNC_IP,网关为 CNC_GW 
 内网网站 
 HTTP_SERVER = 192.168.0.100 
 内核打补丁 
 如果你外网用户,不管通过哪个IP都可以访问到服务器或映射后的内网服务器,那么你就需要为内核打上补丁, 
 补丁在 http://www.ssi.bg/~ja/#routes 可以下载到,在 Static, Alternative Routes, Dead Gateway Detection, NAT 找和内核对应的 patch 
 下载后为内核打上,然后在 
 Networking  ---   Networking options  ---   IP: advanced router 
 把 IP: equal cost multipath with caching support (EXPERIMENTAL) 前面的勾去掉 
 如果你不想打补丁,或不想动内核,有个简单的办法来实现,即写一个脚本,每隔2秒钟刷新一次route cache 
 while : ; do 
 ip route flush cache 
 sleep 2 
 done 
 双线策略的实现 
 1. 静态方式(这种方式是最简单的) 
 1) 设置默认,比如电信 
 ip route replace default via 电信网关 dev eth1 
 2) 设置策略,对另外一条线路 
 ip route add 网通表1 via 网通网关 dev eth2 metric 1 
 ip route add 网通表2 via 网通网关 dev eth2 metric 1 
 .... 
 3) 添加原路返回 
 策略路由规则设置完后,还要为每条线路加入相应的 “原路返回”(从哪条线进来的数据,最终还是从这条线出去),不然就会出现这样的问题: 
 电信用户通过网通的IP访问不到服务器,网通用户也不能通过电信IP访问到服务器 
 ip route flush table 100 
 ip route add default via 电信网关 dev eth1 src 电信IP table 100 prio 50 
 ip rule  
1 |   
 
 
 
 |