使用 eth0 和 wlan0 进行 WAN 故障转移

使用 eth0 和 wlan0 进行 WAN 故障转移

我需要使用 wifi 创建故障转移 - 连接到无线 3G 调制解调器和连接到 adsl 路由器的局域网

当 Adsl 出现故障时,需要故障转移到 wlan0 上的 3G

我已在线尝试过许多脚本,但均不起作用,请将我需要的正确脚本发送给我。

PS:我需要检查诸如 www.google.com 之类的主机,如果仅在物理拔下以太网电缆后才进行故障转移,则故障转移将毫无用处。如果我拔下路由器上的电话线,它必须进行故障转移

答案1

运行nmcli con list找出您的 3G 连接的 UUID,然后运行sudoedit /usr/local/bin/inettest并复制以下内容:

#!/bin/bash

ping -I eth0 -q -c 2 8.8.4.4 > /dev/null 2>&1

if [ $? -ne 0 ]; then
    nmcli con down uuid 03e5a69a-2682-47df-a443-59cec06802aa
else
    nmcli con up uuid 03e5a69a-2682-47df-a443-59cec06802aa
fi

将上面的 UUID 替换为您的 UUID(显然)并保存。运行chmod +x /usr/local/bin/inettest以使其可执行。

现在测试一下。

  • inettest使用有效连接运行eth0
  • 然后中断eth0并再次运行。
  • 并修复它并再次运行。

3G 连接应该会恢复,然后又会断开。如果没有,那么脚本可能出了问题。但假设一切运行正常,我们可以安排它每 5 分钟运行一次,方法是运行crontab -e并在新行中添加以下内容:

*/5 * * * *    /usr/local/bin/inettest

您可能需要更严格的分辨率。 Cron 只能精确到分钟地安排,但您可以使用 sleeps 堆叠多个调用。此示例每分钟运行两次:

* * * * *    /usr/local/bin/inettest & sleep 30; /usr/local/bin/inettest

我认为你不会想走得比这更紧。

相关内容