使用同一网络上的两个网关,使用相同的接口,实现负载平衡

使用同一网络上的两个网关,使用相同的接口,实现负载平衡

我的设置是单个接口和单个网络上的两个 ISP。我可以将默认网关设置为192.168.0.1192.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

相关内容