我有一台运行 Debian 的 Linux 服务器,它充当网络的路由器/网关。
该服务器有 3 个网卡,eth0 是主 ISP,eth1 是备份 ISP,eth2 是网络。
是否可以设置一个脚本或类似的东西来检查与主 ISP 的连接是否正常,如果没有,则切换(并正确设置路由)到备份 ISP?
答案1
请参阅此处的“Linux 高级路由和流量控制”文档中的“多个上行链路/提供商的路由”:
https://web.archive.org/web/20180304202946/http://lartc.org/howto/lartc.rpdb.multiple-links.html
答案2
你可能会读Linux/bsd 上网关状态检查方法这和你问的类似。
准确回答你的问题。你通常有 2 个公共 IP 地址,一个在 eth0 上,一个在 eth1 上。
你可以编写一个脚本,尝试 ping isp1 的默认网关(在 eth0 上),如果 ping 失败,则切换到 eth1。但这只会在你这边的链接断开(如 DSL 线路断开)时切换,而不会因为 ISP 网络内的中断而切换,因为他的网关仍然会 ping。
所以你可能要:
1.Ping ISP1 默认网关
2. Ping www.google.com 或其他可靠地址
3. 使用 tcpdump 检查 eth0 上的 paquet 3.
如果 1 发生故障,则应将默认网关更改为 ISP2 网关 IP。如果 1
正常但 2 是 Ko,则可能是谷歌的问题,可能是 ISP 方面出现故障,您可以尝试其他知名服务 yahoo.com、microsoft.com,如果全部是 Ko,则您可能需要切换到 ISP2。您可以在此处使用 3 来查看是否仍从互联网接收数据包。
根据您的发行版,您肯定会在 /etc 中的某个位置有一些 ifup/ifdown 脚本,当接口启动和关闭时,它们会被调用。这也可以用于切换网关。只有当您丢失以太网链接时,才会调用它们。
答案3
事实上,真正的互联网连接冗余只能通过使用 BPG 作为自治系统。这样,你可以从任意数量的 ISP 获得任意数量的上行链路,它们都将指向你的 IP 地址,这些 IP 地址将是确实您的子网,不是租赁或租用的,而是您可以在任何地方使用的子网……
虽然获取 ASN 和设置 BGP 的主题超出了原始问题的范围,但我认为还是有必要提一下。如果您感兴趣,可以参考以下指南:
https://www.auvik.com/media/blog/redundant-internet-connection-bgp/
答案4
在路由器上这样做怎么样?
Draytek 2910(以太网)和 2820(ADSL)路由器支持两个 WAN 端口,具有负载平衡和故障转移功能。价格稍贵一些的 3300 路由器支持 4 个 WAN 端口。
JR