
systemd を使用して Linux 上でネットワークを動作させようとすると、奇妙な問題が発生します。
私のネットワークは、eth0
DHCP サーバーを備えた企業ネットワークに接続されています。
# more /etc/systemd/network/main.network
#Main connection to the outside world
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
# networkctl status eth0
2: eth0
Link File: n/a
Network File: /etc/systemd/network/main.network
Type: ether
State: routable (configured)
HW Address: 00:03:2d:32:85:3a (IBASE Technology, Inc.)
MTU: 1500
Address: 10.0.7.134
fe80::203:2dff:fe32:853a
Gateway: 10.0.7.1
DNS: 10.0.7.10
ただし、wait-online サービスは失敗します。
# /lib/systemd/systemd-networkd-wait-online --interface eth0 --timeout=10
ignoring: sit0
Event loop failed: Connection timed out
システムは有効な IP アドレスを取得していたのでeth0
、なぜオンラインにならないのかわかりません。
システムにはeth1
、接続されていない別のインターフェースがあります。
答え1
systemd-networkd-wait-online
フラグを指定したにもかかわらず、他のインターフェイスが起動するのを待機している可能性があります--interface
。 最初に指定したフラグのフォーマットは ですが、man ページではそのフラグのフォーマットは またはの--interface eth0
いずれかである必要があると示されているため、これが問題である可能性があります。-i eth0
--interface=eth0
マニュアルページによると、この問題を解決するもう 1 つの方法は、 でコマンドを実行し--any
、インターフェースがオンラインになるまで待機することです。
つまり
systemd-networkd-wait-online --any
回答この質問systemd-networkd
、そして私が見つけた設定に関する情報ここまた、次のコマンドを実行して、この待機を実行する systemd サービスを編集する方法も示します。
sudo systemctl edit systemd-networkd-wait-online.service
次に次のように入力します:
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any