DHCP в systemd-networkd¶
DHCP позволяет получить IP-адрес, маршрут и параметры DNS от DHCP-сервера. Это типичный вариант для виртуальной машины в облачной сети, но он подходит не для каждого провайдера и не для каждого производственного сегмента.
Что проверить до изменения¶
ens3 здесь и далее — пример; подставьте фактическое имя. Если интерфейс уже обслуживается cloud-init, изменение постоянной конфигурации может быть перезаписано при следующей загрузке; см. раздел cloud-init.
Пример конфигурации клиента DHCP¶
Создайте файл /etc/systemd/network/10-ens3.network только если именно этот интерфейс должен обслуживаться DHCP и вы подтвердили, что файл не конфликтует с существующим профилем:
При необходимости 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
Если интерфейс получал адрес раньше и требуется запросить новую аренду, доступна команда:
Для некоторых версий 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 из нового соединения.