不明なインターフェイスが原因でシステムネットワークサービスが失敗します。

不明なインターフェイスが原因でシステムネットワークサービスが失敗します。

私の問題はUSBテザリングとネットワークインターフェースに関連しています。

を実行すると、通常、ifconfig -aループバック、WiFi、イーサネットの3つのインターフェイスが表示されます。 NETでは、それぞれのゲートウェイ、ネットマスク、およびブロードキャストを定義しました/etc/networking/interfaces

時には、USBテザリングのために携帯電話をコンピュータに接続して実行すると、名前が異なるifconfig -a1つのインターフェースが表示されることがありますenp0s20u2。このインターフェイスは、携帯電話が接続されていてUSBテザリングが有効になっている場合にのみ表示されます。そのインターフェースを呼び出すために、次の行を追加しました/etc/networking/interfaces

# For USB tethering
auto enp0s20u2
iface enp0s20u2 inet dhcp
    address 192.168.42.56
    gateway 192.168.42.1
    netmask 255.255.255.0
    broadcast 192.168.42.255

これにより、携帯電話を接続するとインターフェイスが自動的に表示され、設定されます。

質問つまり、電話が接続されていない場合、systemd サービスを開始できません。enp0s20u2ほとんどの場合、インターフェイスが不明なため、systemctl起動時や手動で実行すると起動できませんsystemctl restart networking

このインターフェイス設定がサービスの起動に失敗するのを防ぐ方法はありますか?

答え1

ディレクティブを置き換えると、この問題はエレガントに解決されますautoallow-hotplugインターフェイスはifup -aサービスによって開始されなくなりますが、接続または起動時に検出されると開始されますsystemd networkingudev

# For USB tethering
allow-hotplug enp0s20u2
iface enp0s20u2 inet dhcp
    address 192.168.42.56
    gateway 192.168.42.1
    netmask 255.255.255.0
    broadcast 192.168.42.255

からman 5 interfaces

「allow-」で始まる行は、そのサブシステムで自動的に起動する必要があるインターフェイスを識別します。これは、「allow-hotplug」行にリストされている場合にeth0またはeth1のみを表示する「ifup --allow = hotplug eth0 eth1」などのコマンドを使用して実行できます。 「allow-auto」と「auto」は同義語です。 (「allow-hotplug」と表示されたインターフェイスは、udevがそれを検出すると起動します。)インターフェイスがすでに存在する場合は、起動中に起動したり、後でUSBネットワークカードを接続したりすることができます。ありません)。

関連情報