在Linux上死网关检测

我必须在三个networking接口的Linux机器上设置死网关检测。 我迄今发现的关于该主题的唯一指南意味着修补内核,我们并不十分热衷。 有没有其他的方法?

谢谢。

编辑澄清

3个接口是:1个以太网,1个wifi和1个3G调制解调器。 有线是主要连接,另外两个用于备份目的,作为最后一个资源的3G调制解调器。

高可用性不是问题,因为我们可以在短时间内断开连接。

该框同时是客户端(将数据发送到中央服务器)和服务器(中央服务器可以更改其configuration),并通过类似dyndns的机制公开它是当前的IP。

最后,我们将有数百个盒子向一个中央服务器报告,因此盒子的维护应该尽可能低。

如果网关响应ICMP请求,您可以使用ping:

ping -qc 4 $GATE1 > /dev/null if [ "$?" -ne 0 ]; ping -qc 4 GATE2 > /dev/null if [ "$?" -ne 0 ]; ping -qc 4 $GATE3 > /dev/null if [ "$?" -ne 0 ]; ip route del default;ip route add default via $GATE3 else echo "Three gateway down!" fi else ip route del default;ip route add default via $GATE2 fi 

如果网关不响应ICMP请求,请将“ping -qc 4”更改为“ping -qc 4 -I IP_OF_INTERFACE_TO_GATE_N 8.8.8.8”

为什么不运行rip或其他路由协议? 这正是他们所devise的。 Quagga运行在Linux上(等等),并且很好地实现了许多这些协议。

在我自己的系统中,我使用ucarppipe理虚拟IP,然后通过DHCP将虚拟地址作为网关发布给我的客户端。 然后,真正的网关使用rip来决定如何处理收到的数据包。

iproute2有一个“ip monitor”选项,可以监视路由状态,并在必要时进行更改。

从来没有尝试过,但它看起来不复杂,似乎更可用的脚本。