我有两个接口,都提供到互联网的路由.
当我从其中任何一个拔下电缆时,默认网关正在更新,我的互联网连接正常工作.
但是,如果当前首选网关在不中断物理链路的情况下发生故障,则系统不会故障转移到第二个网关.
我试图手动为失败的GW设置更高的度量标准,但它是有效的,但这是我想要避免的手动步骤.
可以使用网络管理器解决此问题吗?
我的设置:Ubuntu 16.04,NM 1.2.2
UPD
NM的irc频道上的社区成员回答说,NM不检查网关是否实际工作,并且不执行任何GW切换.
VRRP / ucarp / heartbeat / keepalived也不检查它.它们仅检查网络可用性,并在虚拟接口后面切换上游GW.这对我的情况没有帮助.
Iproute的nexthop有点工作,但具有巨大的延迟.
内核正在缓存路由,甚至在ip route flush cache之后
系统故障转移到第二个GW需要大约10分钟.
ip route replace default scope global \ nexthop via 11.22.33.1 dev eth0 weight 1 \ nexthop via 55.66.77.1 dev eth1 weight 1
我目前的解决方案:一个shell脚本,它检查当前的默认gw是否提供Internet访问;如果不是 – 它增加当前GW的度量,并且系统故障转移到具有较低度量的第二个.
我仍然希望找到更优雅的解决方案.
解决方法
我没有看到任何人使用NetworkManager作为此程度路由的运行时配置工具. NM在使用许多路线时遇到了不能很好地扩展的历史问题,并且有更好的软件可以满足您的需求.
大多数商用路由器都具有BGP功能,因此您可以将其“封装”.如果我要使用“软件路由器”,我通常会使用pfSense或VyOS,因为它们都可以很好地虚拟化. VyOS甚至维护LXD图像,所以我通常使用它.您也可以使用openbgbpd或quagga软件包手动在大多数Linux发行版上使用BGP.
许多SDN解决方案使用BGP来提供冗余和网络平衡,而不是像MLAG这样的系统,因为以太网交换机和路由器上的许多MLAG实现过去一直是供应商特定的或者不能按预期运行,尤其是在使用非匹配硬件时.与其担心每个交换机的控制驱动程序相比,SDN通常适用于在第2层上运行,即使在内部网络中也能实现这些多节点冗余解决方案.