プライマリネットワークインターフェイスに障害が発生した場合は、別のネットワークインターフェイスを使用してインターネットにアクセスする

プライマリネットワークインターフェイスに障害が発生した場合は、別のネットワークインターフェイスを使用してインターネットにアクセスする

3GモデムとEthernetインターフェース(eth0)を備えたUbuntu 18.04 LTSを実行する組み込みシステムがあります。

どちらのインターフェイスもインターネットへのアクセスを提供します。

イーサネットインターフェイスがインターネットにアクセスできない場合(ネットワークケーブルの取り外し)、システムが常にインターネットに接続できるように、デフォルトゲートウェイを3Gモデムの1つに自動的に設定したいと思います。

テスト目的と簡単化のために、3Gモデムを別のイーサネットインターフェイス(別のネットワークに接続されているUSBイーサネットアダプタ - インターフェイスenxd037458b96e3)に置き換え、eth0のイーサネット接続が切断されると(4ポートギガビットにケーブルで接続されている)ルータのデフォルトゲートウェイが消えます。 USBイーサネットインターフェイスが有効な間はインターネットにアクセスできません(IPアドレスはeth0と同様にDHCPを介して自動的に割り当てられます)。

この場合、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

答え1

この質問に似ています。https://askubuntu.com/questions/948453/internet-connection-stops-after-one-interface-is-down-in-ubuntu-serverNetworkManagerを使用して接続(3Gも同様)を管理します。

ただし、最も低いメトリックを持つインターフェイスがインターネットアクセスを失うと、システムはもはやインターネットにアクセスできなくなり、より高いメトリックを持つインターフェイスはインターネットに接続されます(たとえば、3Gモデム)。インターネットインターフェイスの未接続インジケータを手動で増やす必要があります。

インターフェイスバインディングが組み込まれた新しいシステムイメージを要求できるかどうかを見てみましょう。

それ以外の場合は、最も指標の低いデフォルトルートがインターネットに接続されているかどうかを監視し、NetworkManagerを制御できるサービスを作成できます。

関連情報