Web 服务器多个网关

Web 服务器多个网关

我有 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 1​​0.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 变体),以便进行进一步诊断。

相关内容