![连接失败时切换 ISP(冗余互联网连接)](https://linux22.com/image/116416/%E8%BF%9E%E6%8E%A5%E5%A4%B1%E8%B4%A5%E6%97%B6%E5%88%87%E6%8D%A2%20ISP%EF%BC%88%E5%86%97%E4%BD%99%E4%BA%92%E8%81%94%E7%BD%91%E8%BF%9E%E6%8E%A5%EF%BC%89.png)
在编写自己的软件之前,我正在寻找管理冗余互联网连接的软件。我确信很多人已经编写了快速技巧来做到这一点,但是有很多奇怪的极端情况......
我们工作时有两个 Internet 连接,并且(不幸的是)没有足够的地址空间来运行 BGP,因此不幸的是我们只能使用次优的解决方案。无论如何,其中一个连接比另一个连接快得多,因此我们将它们用作主连接和备份连接。
目前,它们是通过运行手动切换的,例如ip rule del pref 2500
(使用备份)或ip rule add pref 2500 from all lookup comcast
(将其添加回来)。
不幸的是,确定连接是否断开的唯一方法是通过 ping 或类似方法 - 两者都使用外部调制解调器桥或调制解调器路由器,因此以太网链路保持正常状态。外部设备有时知道它已关闭,但并非总是如此(而且我认为它们不会以任何有用的方式公开这一点,例如发送 ICMP 无法访问或通过 SNMP。
- 只需要添加/删除
ip rule
. NAT、fwmark等已经设置好并且运行良好。 (还有其他复杂性,包括 VPN 和通过 OSPF 进行内部动态路由,这使得让其他东西控制防火墙或路由表成为问题)。 - 需要设置一个已配置的源(本地)IP 以进行 ping 等连接检查,这将使其发送到正确的 ISP。
- 如果它可以 ping 几个 IP,其中一些 IP 比其他 IP 更频繁,那就太好了。例如,经常 ping 我们控制的主机来检查任何连接,很少会 ping 一些其他主机以最终捕获部分连接。
- 如果可配置的丢包率也算作下降,那就太好了。特别是如果它可以比较两个链路(因此,例如,远端附近的损耗被抵消)。
- 有一天我们可能会得到第三个链接(我们过去有过第三个)。如果也能使用两个备份链接那就太好了。
我知道网络 ISP 平衡,但它似乎想要控制防火墙并且只支持每个 ISP 一个 ping IP。