當主要網路介面關閉時,使用另一個網路介面的網際網路訪問
我有一個執行 Ubuntu 18.04 LTS 的嵌入式系統,它有一個 3G 調製解調器和一個乙太網介面 (eth0)。
這兩個介面都可以訪問 Internet。
當乙太網介面無法上網時(拔掉電纜),我想將預設網關自動設置為 3G 調製解調器之一,以便系統始終可以訪問網際網路。
現在,出於測試目的和簡單起見,我將 3G 調製解調器替換為另一個乙太網介面(連接到另一個網路的 USB 乙太網適配器 - 介面 enxd037458b96e3),我注意到當乙太網連接在 eth0 上失去時(它的電纜連接到 4 埠千兆路由器)預設網關消失,我無法訪問網際網路,而 USB 乙太網介面處於活動狀態(並且它的 IP 地址自動分配給 DHCP,就像 eth0 一樣)。
在這種情況下,這是 route 命令的輸出:
$ 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
類似於這個問題:https ://askubuntu.com/questions/948453/internet-connection-stops-after-one-interface-is-down-in-ubuntu-server我將使用 NetworkManager 來管理我的連接(3G 也是) .
但是,當度量值最低的介面無法訪問網際網路時,系統將無法再訪問網際網路,而存在度量值較高但連接到網際網路的介面(例如 3G 調製解調器),在這種情況下,我們確實需要手動增加未連接到網際網路的介面的指標。
我會看看我是否可以請求一個帶有內置介面綁定的新系統映像。
否則,可以編寫一個服務來監控具有最低度量的預設路由是否連接到網際網路並可以控制 NetworkManager。