Linux: интерфейс не получает IP-адрес по DHCP

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Проверьте кабель, состояние интерфейса (ip link), работу DHCP-клиента и службы NetworkManager/systemd-networkd.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Исправление
  6. Сеть и сервер

#Что означает ошибка

Сообщение
Нет IP-адреса

Если на интерфейсе нет IPv4-адреса (ip a показывает только inet6 fe80::... или адрес 169.254.x.x), DHCP не отработал. Причины: сеть не подключена, DHCP-сервер недоступен, интерфейс выключен, конфликт сетевых менеджеров, неверное VLAN или ограничение по MAC-адресу.

Определите, какая подсистема управляет сетью: NetworkManager, systemd-networkd, netplan, ifupdown.

Лечить нужно именно её.

Проверьте кабель, состояние интерфейса (ip link), работу DHCP-клиента и службы NetworkManager/systemd-networkd.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Интерфейс выключенlink down.Нет IP.Поднимите.
DHCP недоступенРоутер.Нет.Проверьте.
Служба не работаетNetworkManager.Нет.Запустите.
Неверная конфигурацияnetplan.Нет.Исправьте.

#Пошаговое решение

  1. Проверьте ip -br a и ip linkОткройте терминал Linux и выполните ip -br link и ip -br addr. Найдите интерфейс по имени и посмотрите UP/DOWN, наличие адреса inet и тип подключения. Если интерфейс отключён, прежде чем включать его вручную, выясните, управляет ли им NetworkManager (nmcli device status) или systemd-networkd (networkctl status). Запишите результаты: отсутствие адреса и отсутствие маршрута требуют разной диагностики.
  2. Определите менеджер сетиОткройте терминал и выполните systemctl is-active NetworkManager и systemctl is-active systemd-networkd; если есть nmcli, проверьте nmcli device status. Для Ubuntu Server дополнительно посмотрите /etc/netplan/, для Debian — /etc/network/interfaces. Не изменяйте несколько систем конфигурации сети параллельно, особенно на сервере по SSH: сначала определите, какая управляет конкретным интерфейсом.
  3. Запросите адрес вручнуюСначала в терминале выполните ip -br addr и nmcli device status, если NetworkManager установлен. Для интерфейса, которым управляет NetworkManager, найдите реальное имя профиля через nmcli -f NAME,DEVICE con show --active, затем используйте sudo nmcli device reapply ИМЯ_ИНТЕРФЕЙСА (подставьте имя интерфейса, например enp3s0) либо штатное переподключение профиля через графические настройки. На системах, где DHCP управляется dhclient и он установлен, администратор может выполнить sudo dhclient -v ИМЯ_ИНТЕРФЕЙСА вместо nmcli, а не после него. При удалённом доступе не отключайте единственный интерфейс: можно потерять SSH. Проверка успеха — новый IPv4-адрес и маршрут default в ip route.
  4. Проверьте настройки профиля dhcp4Если после повторного запроса нет IPv4-адреса, выясните управляющую систему. Для NetworkManager откройте терминал и выполните nmcli -f NAME,DEVICE con show --active, затем nmcli -f ipv4.method con show "ИМЯ_ПРОФИЛЯ", подставив точное имя подключения; для автоматического адреса должен быть метод auto. В netplan проверьте YAML-файл для этого интерфейса в /etc/netplan/ и параметр dhcp4: true, не меняя сразу все файлы. В /etc/network/interfaces проверьте, не задан ли статический адрес для того же устройства. Правки выполняйте только при доступе к консоли и с резервной копией — ошибочная сеть может разорвать SSH.
  5. Проверьте DHCP-сервер, VLAN и кабельЕсли интерфейс имеет UP, но адрес IPv4 не назначен, проверьте кабель/порт и состояние DHCP на управляемом вами маршрутизаторе. В Linux соберите ip -br a и журналы менеджера сети, а для проверки отключите и подключите один раз конкретное соединение только если есть альтернативный доступ. Для VLAN или корпоративной сети сначала уточните идентификатор VLAN и настройки у администратора; не назначайте случайный IP в чужой подсети.
  6. Адреса интерфейсов
    Linux · Терминал (Bash)Команда
    Адреса интерфейсов.
    ip -br addr

#Диагностика

Выполните ip -br a, ip link (интерфейс должен быть UP, LOWER_UP), nmcli device status, networkctl status. Проверьте кабель/Wi-Fi и светодиоды. Журнал: journalctl -b -u NetworkManager | tail -50 или journalctl -u systemd-networkd. Попробуйте получить адрес вручную: sudo dhclient -v eth0 либо sudo nmcli device connect eth0. Проверьте другой кабель/порт и другой компьютер в этом порту.

#Исправление

Включите интерфейс: sudo ip link set eth0 up. Перезапустите менеджер: sudo systemctl restart NetworkManager (или systemd-networkd). Создайте/проверьте профиль: nmcli connection add type ethernet ifname eth0 con-name wired ipv4.method auto, nmcli connection up wired. Для netplan: в /etc/netplan/*.yaml задайте dhcp4: true, затем sudo netplan apply. Для ifupdown: /etc/network/interfaces → iface eth0 inet dhcp и sudo ifup eth0.

#Сеть и сервер

Убедитесь, что на DHCP-сервере есть свободные адреса и не включена привязка к MAC. В виртуальных машинах проверьте режим сети (мост/NAT) и правильность виртуального коммутатора. Отключите конфликтующие менеджеры (не запускайте одновременно NetworkManager и systemd-networkd на одном интерфейсе). Временное решение — статический адрес: sudo ip addr add 192.168.1.50/24 dev eth0 и sudo ip route add default via 192.168.1.1, DNS в /etc/resolv.conf.

Linux · Терминал (Bash)КомандаНужен sudo
Диагностика сети и ручной запрос адреса по DHCP (замените eth0 на имя интерфейса).
ip -br addr
nmcli device status
# Имя интерфейса посмотрите в выводе выше. Если DHCP управляет dhclient и он установлен:
# sudo dhclient -v ИМЯ_ИНТЕРФЕЙСА

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.