参照http://blog.chinaunix.net/uid-13423994-id-3212414.html作了基于连接的网络负载平衡策略,利用ubuntu 14.04 pc机搭建了如下测试环境:
即PC插入无线网卡当wifi热点用,另有两个网络出口,作如下路由策略设置:
sudo iptables -t mangle -A PREROUTING -s 10.42.0.0/24 -m conntrack --ctstate NEW -m statistic --mode nth --every 2 --packet 1 -j CONNMARK --set-mark 1
sudo iptables -t mangle -A PREROUTING -s 10.42.0.0/24 -m conntrack --ctstate NEW -m statistic --mode nth --every 2 --packet 0 -j CONNMARK --set-mark 2
sudo iptables -t mangle -A PREROUTING -m connmark --mark 1 -j MARK --set-mark 1
sudo iptables -t mangle -A PREROUTING -m connmark --mark 2 -j MARK --set-mark 2
sudo iptables -t nat -A POSTROUTING -s 10.42.0.0/24 -o eth1 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.42.0.0/24 -o eth2 -j MASQUERADE
sudo ip route add default via 192.168.4.254 table 10
sudo ip route add 10.42.0.0/24 dev wlan0 table 10
sudo ip route add default via 10.231.59.252 table 20
sudo ip route add 10.42.0.0/24 dev wlan0 table 20
sudo ip rule add pref 10 fwmark 1 table 10
sudo ip rule add pref 11 fwmark 2 table 20
系统默认的table main表如下,
default via 192.168.4.254 dev eth1 proto static
10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 metric 9
10.231.0.0/16 dev eth2 proto kernel scope link src 10.231.58.252 metric 1
192.168.4.0/24 dev eth1 proto kernel scope link src 192.168.4.14 metric 1
假设移动设备M通过wifi连接到wlan上,分配的IP地址为 10.42.0.83,此时的问题是table main中设置的默认网关是哪个网关,则那条网路是通的,另一个网关对就的网络. 例如默认网关为eth1, 用tcmdump抓eth2上的数据包,是有数据出去(源地址已经过NAT转变为10.231.58.252),网络server主机也有数据返回,但因为网关的原因不能正常返回给设备M,导致TCP的三次握手不能成功,以至于数据不断重发。
参照网上的一些资料,再加上如下策略,并去掉table main的路由,则网络异常,都不通。
sudo ip route add default via 192.168.4.254 dev eth1 table 11
sudo ip route add 10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 table 11
sudo ip route add 192.168.4.0/24 dev eth1 proto kernel scope link src 192.168.4.14 table 11
sudo ip route add default via 10.231.59.252 dev eth2 table 21
sudo ip route add 10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 table 21
sudo ip route add 10.231.0.0/16 dev eth2 proto kernel scope link src 10.231.58.252 table 21
sudo ip rule add pref 12 from 192.168.4.14 table 11
sudo ip rule add pref 13 from 10.231.58.252 table 21
求大神指导,谢谢!