linux 双线-自动选择指定出口-(策略Route和iptable) | |
| |
来源: ChinaUnix博客 日期: 2007.03.30 13:55 (共有条评论) 我要评论 | |
机器接了双线,电信和网通线路,代理下面的客户端上网,根据客户端访问的请求自动选择对应的线路出去,如,客户端访问网通,就从网通出去。 在网上看了一些文章,觉得这篇文章讨论很精彩 http://www.chinaunix.net/jh/4/536582.html ,从中很是很受益,里面有几位兄弟确实让我敬佩,不只是技术方面,更多的他们学习态度。 根据那篇文章自己归纳了一下,实现上面需求,有两个办法可以实现。一个根据策略路由,一个根据iptable中的一个标记功能实现。由于自己现没有此环境,所以没有在实践去使用,但是还是将自己的理解记录下来,做为自己学习的笔记和以后工作中的需要。 第一方法: 实现方式是这样,三块网卡,eth0 为LAN口,eth1 为第一个WAN口,接电信线路,eth2为第二个WAN口,接网通线路。我这里都是按照固定IP方式配置的,如果是要PPPOE则自己配置PPPOE部分,我这里主要是给大家提供策略部分。 将从两个WAN口出去的数据包MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE 然后,给系统增加一个标示为100的路由表,增加一个默认网关,这个默认网关是网通提供的网关。 ip route add 0/0 via 218.59.*.* table 100 然后给系统主路由表配置网关,这个网关是电信的网关 ip route add 0/0 via 219.146.*.* 然后添加路由规则,让所有通向网通的数据查询标示为100的路由表: ip rule add to 60.0.0.0/13 table 100 ip rule add to 60.8.0.0/15 table 100 ip rule add to 60.10.0.0/16 table 100 这个例子,默认使用的电信网关,也就是默认都使用电信线路,而对于符全ip rule中规则的使用table 100表中定义的路由,也就是网通。 第二方法: # echo "200 DIANXIN" >;>; /etc/iproute2/rt_table(这个是添加到文件,执行一次即可) # ip route replace default via 222.168.1.2 table DIANXIN # ip rule add fwmark 1 table DIANXIN(这个注意顺序,用ip rule可以查看) # iptables -t nat -F # iptables -t mangle -F # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1 # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1 # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接网通线路网卡的地址 # ip route flush cache 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11765/showart_268223.html |