我的设置是单个接口和单个网络上的两个 ISP。我可以将默认网关设置为192.168.0.1
或192.168.1.250
,并且两者都可以工作。
编辑:网络掩码(如评论中所注意到的)is 255.255.254.0
- 正如我所说,它们在同一个子网上。
我希望利用它们两者进行一些负载平衡。我尝试遵循此处给出的建议 https://serverfault.com/a/96586
#!/bin/sh
ip route show table main | grep -Ev '^default' \
| while read ROUTE ; do
ip route add table ISP1 $ROUTE
done
ip route add default via 192.168.1.250 table ISP1
ip route add default via 192.168.0.1 table ISP2
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
iptables -t mangle -A PREROUTING -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m statistic --mode random --probability 0.5 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
现在我反复执行“traceroute somehost”,但只能通过我的默认路由 192.168.1.250 获得路由。数据包不应该以随机方式更改路由吗?如何调试?
答案1
据我所知,拥有多个默认网关的唯一方法是利用此处显示的方法:http://lartc.org/howto/lartc.rpdb.multiple-links.html。但是,我建议对此方法进行一项修改,即不要将内容放在 /etc/rc.local 中,而是将它们存储在网络路由/规则文件中(再次强调,这是假设使用红帽,因此 YMMV - /etc/sysconfig/network-scripts/route- 和 /etc/sysconfig/network-scripts/rule-。
为了使单个接口被视为两个接口,您可以按照如下所示的方法创建子接口:http://linux-101.org/howto/create-sub-interfaces-centos-and-redhat