Linux 上的死网关检测

Fig*_*igo 5 networking linux routing centos

我必须在具有三个网络接口的 linux 机器上设置死网关检测。到目前为止,我找到的有关该主题的唯一指南暗示修补内核,我们不太热衷于这样做。有没有其他办法?

谢谢。

编辑以澄清

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

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

该盒子同时是客户端(向中央服务器发送数据)和服务器(中央服务器可以更改其配置)并通过类似 dyndns 的机制公开其当前 IP。

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

alv*_*osu 5

如果网关响应 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
Run Code Online (Sandbox Code Playgroud)

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


Fle*_*exo 2

为什么不运行 rip 或其他路由协议?这正是它们的设计目的。Quagga在 Linux(以及其他)上运行,并且很好地实现了许多这样的协议。

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

  • 这当然取决于您的上游提供商支持路由协议。 (2认同)