![Web 服务器多个网关](https://linux22.com/image/803458/Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%9A%E4%B8%AA%E7%BD%91%E5%85%B3.png)
我有 Ubuntu Server 12.04
我的局域网上有 3 个网关
10.0.0.1
10.0.0.2
10.0.0.3
Ubuntu 有 3 个网卡
eth0 10.0.0.60 gw 10.0.0.1
eth1 10.0.0.61 gw 10.0.0.2
eth2 10.0.0.62 gw 10.0.0.3
如果请求来自 gw 10.0.0.1,则它可以正常工作。其他网关则不行
我曾尝试通过路线修复此问题,但似乎无法解决问题。
我的 ISP 只能为每台调制解调器提供 10Mbps 的带宽,服务器会传输实时视频。我需要所有 3 个调制解调器来实现负载平衡
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.3 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
如果可以用一个 NIC 来完成这个任务,那我就没问题,我只需要能够平衡这个流量。
我尝试了这个(但是之后所有的网络都停止了):
#echo "60 out60" >> /etc/iproute2/rt_tables
#echo "61 out61" >> /etc/iproute2/rt_tables
#echo "62 out62" >> /etc/iproute2/rt_tables
#ip route add default via 10.0.0.1 table out60
#ip route add default via 10.0.0.2 table out61
#ip route add default via 10.0.0.3 table out62
#ip rule add from 10.0.0.60 table out60
#ip rule add from 10.0.0.61 table out61
#ip rule add from 10.0.0.62 table out62
该图表没有相关的服务器,只是为了让您看到网络布局。
Network Diagram
http://23.31.204.85/netdiag.png
答案1
我强烈建议更改子网。在我看来,对所有接口及其网关使用相同的子网是非常糟糕的主意
我建议使用类似下面的方法
eth0 10.0.1.61 gw 10.0.1.1
eth1 10.0.2.62 gw 10.0.2.1
eth2 10.0.3.63 gw 10.0.3.1
你可以尝试设置 PBR,但我不知道它是否适合你的环境
#!/bin/sh
IP1='10.0.0.60'
IF1='eth0'
GW1='10.0.0.1'
P1_NET='10.0.0.0/24'
IP2='10.0.0.61'
IF2='eth1'
GW2='10.0.0.2'
P2_NET='10.0.0.0/24'
IP3='10.0.0.62'
IF3='eth2'
GW3='10.0.0.3'
P3_NET='10.0.0.0/24'
/sbin/ip route add $P1_NET dev $IF1 src $IP1 table ISP1
/sbin/ip route add default via $GW1 table ISP1
/sbin/ip route add $P2_NET dev $IF2 src $IP2 table ISP2
/sbin/ip route add default via $GW2 table ISP2
/sbin/ip route add $P3_NET dev $IF3 src $IP3 table ISP3
/sbin/ip route add default via $GW3 table ISP3
/sbin/ip rule add from $IP1 table ISP1
/sbin/ip rule add from $IP2 table ISP2
/sbin/ip rule add from $IP3 table ISP3
/sbin/ip route add default via $P1
/sbin/ip route flush cache
不要忘记启用 IP 转发并禁用反向路径过滤
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
答案2
评论中表达的困惑源于这种私有 A 类 LAN 网络方案在实践中并不十分常规或常见。通常每个网络块(/28、/16 等)被分解,网关设置为第一个可用的 IP。在这种情况下,每个调制解调器看起来都是 /31。
如果您对每个接口认为它具有的网关感兴趣,请粘贴 route -n 或 netstat -nra 的输出(应该适用于大多数 *nix 变体),以便进行进一步诊断。