Адрес не получен: нет ответа от сервера DHCP
Отсутствие адреса после загрузки останавливает все службы, зависящие от сети. Разбор идёт от интерфейса: поднят ли он, уходят ли запросы, приходят ли ответы.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Нет ответов от сервера
Сервер недоступен, порт закрыт или запросы не проходят через сеть. В журнале это видно как повторяющиеся попытки без результата.
-
Интерфейс не поднят физически
Без соединения запросы не уходят вовсе. Признак — состояние отсутствия несущей.
-
Служба ожидания сети завершилась раньше получения адреса
Цель готовности сети может быть достигнута до получения адреса, и службы стартуют без сети.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Адреса и состояние интерфейсов.
ip -brief addr && ip -brief linkИстория попыток получить адрес.
journalctl -u systemd-networkd -b --no-pager | grep -i dhcp | tail -20Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Сервер недоступен, порт закрыт или запросы не проходят через сеть. В журнале это видно как повторяющиеся попытки без результата.
- Как проверить
-
Посмотрите сообщения службы сети и состояние интерфейса.
journalctl -u systemd-networkd -n 30 --no-pager | grep -i dhcp ip -brief addr
- Как исправить
- Проверьте сеть и доступность сервера. Для серверов надёжнее статический адрес: он не зависит от внешней службы.
- Почему происходит
- Без соединения запросы не уходят вовсе. Признак — состояние отсутствия несущей.
- Как проверить
-
Посмотрите состояние интерфейса.
ip -brief link sudo ethtool eth0 2>/dev/null | grep -i "link detected"
- Как исправить
- Проверьте кабель, порт коммутатора и настройки виртуальной сети.
- Почему происходит
- Цель готовности сети может быть достигнута до получения адреса, и службы стартуют без сети.
- Как проверить
-
Посмотрите состояние службы ожидания.
systemctl status systemd-networkd-wait-online --no-pager | head -8
- Как исправить
- Настройте ожидание конкретного интерфейса и адреса: тогда цель не будет достигаться преждевременно.
Пример вывода
Запросы уходят, ответов нет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd-networkd[600]: eth0: DHCPv4 client: Failed to send DHCP request: Network is unreachable
systemd-networkd[600]: eth0: DHCPv4 client: STARTED on ifindex 2
systemd-networkd-wait-online[620]: Timeout occurred while waiting for network connectivity.
Связанные ошибки
- Цель не достигнута: служба ждёт target, который не наступает Служба не запускается, потому что не достигнута цель из After= или Requires=. Разбор целей multi-user, network-online, graphical.
- Интерфейс не настроен: systemd-networkd не применил описание Сеть не поднимается: файл описания не подхвачен, интерфейс под управлением другой службы, неверное совпадение по имени.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
- Temporary failure in name resolution в журнале службы Служба не может разрешить имя: не готова сеть, нет сервера имён, мешает изоляция. Разбор при загрузке и в работе.
- nginx: [emerg] host not found in upstream nginx не запускается: не разрешается имя узла из upstream или proxy_pass. Разбор порядка запуска и работы с именами.
- Интерфейс не переименовался: имя занято другим устройством Сеть не поднимается после загрузки: правило переименования не применилось, интерфейс сохранил временное имя.
- A start job is running: загрузка висит на одной службе Загрузка останавливается с обратным отсчётом: служба не укладывается в таймаут. Как найти виновника и не ждать.
- Address already in use при запуске службы Порт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
Источники
-
systemd.network(5)
Настройка получения адреса и ожидание сети. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено отключением сети виртуальной машины при загрузке.