systemd-networkd — это встроенный в systemd сетевой менеджер для настройки Ethernet-соединений, адресов, маршрутов, мостов, VLAN и других сетевых устройств. Для базового проводного подключения настройка проста: определите интерфейс, создайте файл .network, убедитесь, что другой менеджер не использует тот же интерфейс, запустите systemd-networkdи проверьте результат.
В этом руководстве используется DHCP на проводном интерфейсе Ethernet. Если вы подключены к машине через SSH, используйте локальную консоль или внеполосное управление, прежде чем переключаться между сетевыми менеджерами, поскольку переключение может временно разорвать соединение.
1. Проверьте свой Ethernet-интерфейс и текущий сетевой менеджер.
Для начала перечислите ссылки, о которых знает systemd:
networkctl list
Найдите проводной интерфейс, обычно он называется, например enp3s0, , eno1, или eth0. Вы также можете запустить ip link. Не копируйте пример имени интерфейса вслепую.

Далее проверьте, активен ли NetworkManager:
systemctl status NetworkManager
NetworkManager и systemd-networkd могут сосуществовать, если они управляют разными интерфейсами, но не следует позволять им обоим управлять одним и тем же Ethernet-соединением. В текущей документации systemd.network объясняется, как .networkфайлы сопоставляют интерфейсы и как networkd определяет права собственности.

2. Создайте сетевой профиль DHCP.
Профили локальных администраторов должны находиться в /etc/systemd/network/каталоге `/etc/admin 20-wired.network...
sudo mkdir -p /etc/systemd/network
sudo nano /etc/systemd/network/20-wired.network
Для обычного Ethernet-соединения, получающего адрес от маршрутизатора или DHCP-сервера, используйте:
[Match]
Name=enp3s0
[Network]
DHCP=yes
Замените enp3s0на ваш фактический интерфейс. Файлы должны заканчиваться на .network. Когда несколько файлов соответствуют ссылке, systemd-networkd использует первый соответствующий файл в алфавитно-цифровом порядке, поэтому конкретное имя, например, 20-wired.networkпроще для понимания, чем общее универсальное имя.

Дополнительно: используйте статический IPv4-адрес.
Если устройству требуется фиксированный адрес, замените его DHCP=yesзначениями, подходящими для вашей сети:
[Match]
Name=enp3s0
[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=1.1.1.1
DNS=9.9.9.9
Не используйте повторно эти примеры адресов, если они не соответствуют вашей подсети. См. официальные справочные документы systemd.networkDHCP= , Address=а также более подробные параметры маршрутизации.Gateway=DNS=
3. Включите systemd-networkd
После того, как профиль будет готов, включите networkd и запустите его немедленно:
sudo systemctl enable --now systemd-networkd
Если другой службой в данный момент управляет тем же интерфейсом Ethernet, выполните переключение с локальной консоли. Для хоста, полностью переключающегося с NetworkManager, вы можете остановить и отключить его с помощью:
sudo systemctl disable --now NetworkManager
Не отключайте NetworkManager, если он вам все еще нужен для Wi-Fi или других интерфейсов. systemd-networkdОн настраивает IP-сети, но для аутентификации по Wi-Fi обычно требуется отдельный компонент, такой как iwd или wpa_supplicant.

4. При необходимости настройте DNS с помощью systemd-resolved.
systemd-resolvedЭто не является обязательным требованием для самого networkd, но он хорошо интегрируется с networkd и может использовать DNS-серверы, полученные через DHCP. Если ваш дистрибутив еще не использует другой резолвер, включите его:
sudo systemctl enable --now systemd-resolved
В документации systemd-resolved рекомендуется создавать ссылку /etc/resolv.confна его файл-заглушку, если resolved является системным резолвером. Проверьте это в первую очередь:
readlink -f /etc/resolv.conf
Если вы намеренно хотите, чтобы systemd-resolved предоставлял resolv.conf, используйте:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Не заменяйте, /etc/resolv.confесли ваш дистрибутив или другой инструмент DNS намеренно управляет этим.

5. Перезагрузите конфигурацию и перенастройте интерфейс.
После редактирования .networkфайла перезагрузите конфигурацию networkd. Затем вы сможете явно перенастроить целевое соединение:
sudo networkctl reload
sudo networkctl reconfigure enp3s0
Замените enp3s0на имя вашего интерфейса. В официальном руководстве по networkctl описаны обе команды. Полная systemctl restart systemd-networkdперезагрузка также приводит к обновлению службы, но networkctlобычно является более целенаправленным вариантом.

6. Убедитесь, что systemd-networkd работает.
Проверьте состояние интерфейса:
networkctl status enp3s0
Для корректного DHCP-соединения вы должны увидеть, что канал настроен с IP-адресом, шлюзом по умолчанию и, как правило, информацией DNS.

Затем подтвердите маршрутизацию и подключение:
ip route
ping -c 3 1.1.1.1
Если пинг по IP-адресу работает, но веб-сайты или имена хостов не разрешаются, проверьте DNS с resolvectl query example.comпомощью systemd-resolved. Если интерфейс остается пустым unmanaged, перепроверьте [Match]имя и убедитесь, что другой сетевой менеджер не претендует на то же устройство.

Для сложных настроек, таких как мосты, объединения каналов, VLAN, туннели или виртуальные устройства, см. официальную документацию по службе systemd-networkd и соответствующие systemd.netdevсправочные systemd.linkматериалы.