networkingpipe理员能够检查默认网关是否可以将包路由到互联网?
我有两个接口,都提供了一个路由到互联网。
当我从其中任何一个拔下电缆时,默认网关正在更新,并且我的互联网连接正常工作。 但是,如果当前首选网关发生故障而没有中断物理链路,则系统不会故障切换到第二个网关。
我试图设置一个更高的指标手动失败的GW,它的工作,但这是我想避免的手动步骤。
networkingpipe理员可以解决这个问题吗?
我的设置:Ubuntu 16.04,NM 1.2.2
UPD
在NM的irc频道上的社区成员回答说,NM不检查网关是否实际工作,不进行GW切换。
VRRP / ucarp / heartbeat / keepalived也不检查它。 他们只检查networking可用性,并将上游GW切换到虚拟接口后面。 这在我的情况没有帮助。
Iproute的nexthop还挺有效,但是延迟很大。 内核caching路由,甚至在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
我目前的解决scheme:一个shell脚本,检查当前的默认gw是否提供互联网访问; 如果不是,则会增加当前GW的度量值,并将系统故障转移到具有较低度量值的第二个度量值。
我仍然希望find一个更优雅的解决scheme。
我认为有几种可能性:最好/现代的方法是使用iproute2“表”; 我还没有把它完整的,但它的描述在这里: http ://mlvpn.readthedocs.io/en/latest/linux_example.html不幸的是,这个例子做比你所要求的更多,这混淆了这个问题。 但我相信这样的事情可能会起作用:
ip route show table main
ip route add default via 10.70.1.1 dev eth0 table 100
ip route add default via 10.70.70.1 dev eth0 table 101
(可选)编辑/etc/iproute2/rt_tables并添加两行
100 myfavgw
101 myothergw
然后你可以参考这些名字:
ip route add default via 10.70.70.1 dev eth0 table myothergw
等等。 可能需要一些额外的摆弄。但上述看起来似乎是一个有希望的开始; 我无法testing,因为我的两个网关之一刚刚被closures了:-(
方法二似乎依赖于相当老的技术:从2005年的这篇文章表明,如果你有两个网卡,你可以为每个网卡指定一个不同的默认网关: https : //www.linux.com/news/using-linux-failover-路由器所以 – 大声思考 – 如果你没有两个网卡,有一种方法(我已经忘记如何)创build第二个虚拟接口,并使用相同的以太网卡。 (这样做就像加载内核模块一样简单,而且效果很好)如果仍然可以为每个接口指定一个不同的默认gw,那么这个第二种方法将是一个老问题的解决scheme。
第三个解决scheme是丑陋的:正如你所指出的,每分钟可以运行一个shell脚本来检查。 这样的脚本在这里:rapellys.biz /?p = 59