Перейти к содержанию

DHCP в systemd-networkd

DHCP позволяет получить IP-адрес, маршрут и параметры DNS от DHCP-сервера. Это типичный вариант для виртуальной машины в облачной сети, но он подходит не для каждого провайдера и не для каждого производственного сегмента.

Что проверить до изменения

ip -br link
networkctl list
networkctl status ens3
ip -4 address show dev ens3
ip -4 route

ens3 здесь и далее — пример; подставьте фактическое имя. Если интерфейс уже обслуживается cloud-init, изменение постоянной конфигурации может быть перезаписано при следующей загрузке; см. раздел cloud-init.

Пример конфигурации клиента DHCP

Создайте файл /etc/systemd/network/10-ens3.network только если именно этот интерфейс должен обслуживаться DHCP и вы подтвердили, что файл не конфликтует с существующим профилем:

[Match]
Name=ens3

[Network]
DHCP=ipv4

При необходимости DHCP для IPv4 и IPv6 используется DHCP=yes — только если это соответствует политике вашей сети. Имя файла 10-ens3.network выбрано так, чтобы он обычно предшествовал поставляемому 99-dhcp-en.network; всё равно проверяйте реальный выбор через networkctl status.

Удобный способ создания файла из консоли:

sudo mkdir -p /etc/systemd/network
sudo cp -a /etc/systemd/network/10-ens3.network \
  /etc/systemd/network/10-ens3.network.bak 2>/dev/null || true
sudoedit /etc/systemd/network/10-ens3.network

Если файла раньше не было, резервной копии не будет. В редактор внесите содержимое примера выше. Не перезаписывайте существующий профиль без предварительного изучения.

Применение с консоли

sudo networkctl reload
sudo networkctl reconfigure ens3
networkctl status ens3
ip -4 addr show dev ens3
ip -4 route

Если интерфейс получал адрес раньше и требуется запросить новую аренду, доступна команда:

sudo networkctl renew ens3

Для некоторых версий systemd и сетей поведение DHCP-аренды различается. Проверяйте результат, а не только код возврата команды.

Проверка

networkctl status ens3
ip -4 route get 1.1.1.1
resolvectl status ens3
journalctl -u systemd-networkd -b -n 70 --no-pager

Успешное состояние: интерфейс получил ожидаемый адрес и шлюз, DNS определяется согласно политике DHCP/локальной конфигурации, соединение с нужным ресурсом действительно работает.

Если адрес не появился

Симптом Возможная причина Что смотреть
unmanaged не выбран .network networkctl status, имена файлов
configuring долго нет ответа DHCP журнал networkd, VLAN, интерфейс гипервизора
Адрес есть, выхода нет отсутствует шлюз или iptables запрещает ip route, iptables -L -n -v
DNS не работает DHCP не передал DNS или resolved не использует интерфейс resolvectl status
После перезагрузки настройки изменились cloud-init перегенерировал файлы журналы и /etc/cloud

Откат: из консоли верните прежний .network-файл или удалите созданный новый профиль, выполните networkctl reload и networkctl reconfigure ens3. После применения подтвердите IP, маршрут и вход по SSH из нового соединения.