我有一个运行 Ubuntu 18.04 LTS 的嵌入式系统,它有一个 3G 调制解调器和一个以太网接口 (eth0)。
这两个接口都可以访问互联网。
当以太网接口无法上网时(拔掉网线),我想自动将默认网关设置为其中一个3G调制解调器,以便系统始终可以访问互联网。
现在,出于测试目的并为了简单起见,我用另一个以太网接口(连接到另一个网络的 USB 以太网适配器 - 接口 enxd037458b96e3)替换 3G 调制解调器,并且我注意到当 eth0 上的以太网连接丢失时(它的电缆连接到 4 端口千兆路由器)默认网关消失,我无法访问互联网,而 USB 以太网接口处于活动状态(并且其 IP 地址是通过 DHCP 自动分配的,就像 eth0 一样)。
在这种情况下,这是路由命令的输出:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 uap0
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 enxd037458b96e3
而当 eth0 启动或恢复时:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.30.102 0.0.0.0 UG 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 uap0
192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 enxd037458b96e3
下面,这个/etc/network/interfaces的内容
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet dhcp
# post-up route add default via [gateway-ip-address] dev eth0
# interface usb eth
allow-hotplug enxd037458b96e3
iface enxd037458b96e3 inet dhcp
# auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto uap0
# allow-hotplug uap0
iface uap0 inet static
address 192.168.2.10
netmask 255.255.255.0
broadcast 192.168.2.255
post-up /etc/rc.apstart || true
# post-up /bin/uaputl.exe sys_cfg_80211d country DE || true
# post-up /bin/uaputl.exe sys_config /etc/uapTest.conf || true
# post-up /bin/uaputl.exe bss_start || true
post-down /bin/uaputl.exe bss_stop
post-down /bin/uaputl.exe sys_reset
# post-up /sbin/ifconfig uap0 192.168.0.2
更新:与 eth0 接口不同,当我从 USB 以太网适配器拔下电缆时,路由始终显示最后一个的默认网关。使用 eth0 接口时,默认网关会消失,只有插上电缆后才会恢复。
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.137.1 0.0.0.0 UG 0 0 0 enxd037458b96e3
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 uap0
192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 enxd037458b96e3
答案1
类似于这个问题:https://askubuntu.com/questions/948453/internet-connection-stops-after-one-interface-is-down-in-ubuntu-server我将使用 NetworkManager 来管理我的连接(也包括 3G)。
然而,当具有最低指标的接口失去互联网访问时,系统将无法再访问互联网,而存在具有较高指标但连接到互联网的接口(例如3G调制解调器),在这种情况下我们确实需要手动增加未连接互联网的接口的指标。
我将看看是否可以请求一个带有内置接口绑定的新系统映像。
否则,可以编写一项服务来监视具有最低度量的默认路由是否连接到互联网并可以控制 NetworkManager。