我正在设置一个 Linux 服务器 (CentOS),用作具有负载平衡和故障转移功能的路由器(当一条互联网线路中断时,另一条线路将接管)。连接到 eth1 ( LAN ) 的客户端应该能够访问互联网。
我的参考(http://fatalsite.net/?p=90)
接口:
eth1 = LAN
eth2 = WAN1 - 192.168.1.100 / 网关 192.168.1.1 - ISP1
eth3 = WAN2 - 192.168.10.5 / 网关 192.168.10.1 - ISP2
我怎么做?
谢谢你!
好的。所以我确实设置了 nat 并启用了转发,但仍然可以通过 LAN 接口访问互联网。
我也这样做过,但没有成功:
iptables -A INPUT -i eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth3 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface eth2 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface eth3 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
答案1
实际上,您提供的参考资料描述了网关路由器的解决方案。缺少的是本地局域网设置。如下所示:
- 在两个接口上设置 NAT
iptables -t nat -A POSTROUTING -o eth2 -s -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -s -j MASQUERADE
确保您已启用转发 (
sysctl -w net.ipv4.ip_forward=1
)通过 ping 或尝试 http 请求检查 facebook.com 是否处于活动状态 - 如果处于活动状态,则不执行任何操作 ;-) 您可以假设如果 facebook.com 处于活动状态,则您的 WAN 链接工作正常。如果它已关闭 - 人们无论如何都会打电话给您大喊互联网已关闭,因为 facebook 不再工作。您可以编写一个脚本来执行此操作。
如果连接中断,您只需执行一项任务:添加 IP 规则并通过故障转移 WAN 链接引导您的流量。如果主 WAN 再次打开,请删除规则并刷新缓存。像这样:
ip rule add from 1.2.3.0/24 table WAN2
ip route flush cache
或恢复流量:
ip rule delete from 1.2.3.0/24 table WAN2
ip route flush cache
使更改永久生效。我不熟悉 CentOS,但 sysctl.conf 和 rc.local 应该对你有用。
为什么您不必在您的盒子上切换默认网关?根据您的参考,您已经向不同的路由表添加了默认路由。这意味着,您的盒子仍然可以通过辅助路由表访问。是的,即使主网关死机,您也可以通过具有其自己的默认路由的辅助表访问它。
我还会避免通过不同的提供商来平衡流量,因为负载平衡是基于路由缓存的,因此可能会导致许多无法识别的连接问题。我宁愿坚持使用故障转移。
最后还有一件事——如果您的 WAN 链接是专用网络,您将无法通过其他方式从网络外部访问您的设备,除非重定向端口或设置 VPN 链接。在这种情况下,可能需要切换网关。
供参考点击此处。