
У меня возникла странная проблема при попытке настроить работу сети в Linux с помощью systemd.
Моя сеть 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
Однако услуга ожидания онлайн не работает:
# /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
. Форматирование для флага, которое вы указали изначально, показывает, --interface eth0
хотя страница руководства показывает, что форматирование для этого флага должно быть или -i eth0
, --interface=eth0
поэтому это может быть проблемой.
Согласно странице руководства, еще одним потенциальным способом решения этой проблемы является запуск команды с параметром --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