Подробный гайд: Почему пропадает сеть при истечении DHCP-аренды и как это исправить - Часть 1

Практическое руководство по устранению разрывов связи при истечении DHCP-аренды: диагностика клиента и сервера, анализ дампов, типовые решения.

2026.09.13                  


Подробный гайд: Почему пропадает сеть при истечении DHCP-аренды и как это исправить - Часть 1Подробный гайд: Почему пропадает сеть при истечении DHCP-аренды и как это исправить - Часть 1

1. Главное правило

Если машина, которая «теряет связь», сама является сервером — серверам обычно нельзя зависеть от динамической DHCP-аренды.

Для серверов, сетевых устройств, принтеров, контроллеров домена, DNS, баз данных, API-узлов и т.п. используйте:

  1. Статический IP, либо
  2. DHCP-резервирование по MAC/Client ID, либо
  3. Минимум: фиксированная аренда на DHCP-сервере и исключение адреса из динамического пула.


Если сервер получает адрес динамически и при продлении/перевыдаче адреса меняется, то клиенты, сессии, DNS, ARP, firewall-правила, балансировщики и приложения могут начать работать некорректно.


2. Как вообще работает DHCP-аренда

Упрощённо:

  1. Клиент получает IP-адрес, маску, шлюз, DNS и время аренды.
  2. Обычно через 50% времени аренды клиент пытается продлить аренду — отправляет DHCPREQUEST серверу.
  3. Если сервер не отвечает, примерно на 87.5% аренды клиент начинает рассылать запрос шире, уже не только конкретному DHCP-серверу.
  4. Если до окончания аренды продление не произошло, клиент, как правило, теряет право использовать адрес.
  5. После этого может появиться:
    • отсутствие IPv4-адреса;
    • адрес типа 169.254.x.x APIPA/IPv4LL;
    • новый адрес из другого пула;
    • старый адрес, который уже не принимается сетью.

Поэтому если связь пропадает именно к концу аренды — почти всегда проблема в одном из трёх:

  • клиент не может продлить аренду;
  • клиент получает другой адрес, и из-за этого ломаются сессии, DNS, маршруты, firewall или приложение;
  • сетевое оборудование перестаёт пропускать трафик после истечения DHCP-binding, например DHCP snooping / IP Source Guard / 802.1X.

3. Быстрая диагностика: что проверить в первые минуты

3.1. Зафиксируйте состояние до обрыва и после

Вам нужно понять, меняется ли IP-адрес.

Windows

ipconfig /all

Смотрите:

  • IPv4-адрес
  • Маска подсети
  • Основной шлюз
  • DNS-серверы
  • DHCP-сервер
  • Аренда получена
  • Аренда истекает

Полезно также:

Get-NetIPConfiguration -Detailed
Get-NetIPAddress -AddressFamily IPv4 |
  Where-Object { $_.PrefixOrigin -eq 'Dhcp' } |
  Select-Object InterfaceAlias, IPAddress, PrefixLength, AddressState

Linux

ip -brief -4 addr
ip route

Если используется NetworkManager:

nmcli device status
nmcli device show eth0

Для активного соединения:

nmcli -t -f NAME,DEVICE connection show --active
nmcli connection show "ИМЯ_СОЕДИНЕНИЯ" | grep -i dhcp

Если используется dhclient, посмотрите lease-файлы:

sudo grep -R . /var/lib/dhcp /var/lib/dhclient /var/lib/NetworkManager /run/systemd/netif/leases 2>/dev/null

3.2. Проверьте связь по уровням

Проверьте не только имя сервера, но и адреса.

Windows

ping 127.0.0.1
ping IP_шлюза
ping IP_сервера
ping DNS_имя_сервера
nslookup DNS_имя_сервера
tracert IP_сервера

Linux

ping -c 4 127.0.0.1
ping -c 4 IP_шлюза
ping -c 4 IP_сервера
ping -c 4 DNS_имя_сервера
getent hosts DNS_имя_сервера
ip route get IP_сервера

Интерпретация:

Результат Вероятная причина
127.0.0.1 не пингуется проблема стека ОС, драйвер, firewall, сеть сломана локально
шлюз не пингуется нет корректного IP/маски/шлюза, проблема L2, VLAN, DHCP не выдал параметры
IP сервера пингуется, имя нет DNS, суффиксы, кэш, политика разрешения имён
имя резолвится в старый IP DNS-запись не обновилась, большой TTL, статическая запись, старый кэш
по IP связь есть, приложение не работает приложение привязано к старому IP, firewall, сессия сбрасывается, сертификат, балансировка

4. Первый важный вопрос: кто теряет связь?

Есть три разные ситуации.

Ситуация A: клиент теряет связь с сервером

Например, рабочая станция или сервисная машина получает адрес по DHCP, и после окончания аренды у неё пропадает доступ к серверу.

Причины:

  • клиент получил другой IP;
  • клиент не получил адрес вообще;
  • клиент получил адрес, но без корректного шлюза или DNS;
  • сервер или межсетевой экран разрывает сессии из-за смены клиентского IP;
  • приложение не умеет переподключаться после смены адреса.


Ситуация B: сам сервер получает адрес по DHCP

Например, сервер приложений, база данных, веб-сервер, файловый сервер.

Причины:

  • сервер получил новый IP;
  • DNS-запись обновилась не сразу;
  • клиенты продолжают ходить по старому IP из кэша;
  • сервисы привязались к старому IP;
  • firewall/LOAD BALANCER/ACL завязаны на старый IP;
  • ARP-таблицы на маршрутизаторах или коммутаторах временно указывают на старый MAC.

Для сервера это почти всегда означает: нужен статический адрес или резервирование.


Ситуация C: адрес не меняется, но связь всё равно пропадает

Тогда проблема может быть не в самом DHCP, а в:

  • DHCP snooping / IP Source Guard;
  • 802.1X reauthentication;
  • firewall state timeout;
  • проблемах драйвера/гипервизора;
  • сбое сетевого порта;
  • энергосбережении сетевой карты;
  • неверном времени в системе;
  • ошибке клиента DHCP;
  • смене маршрутов.

5. Как понять, что проблема именно в окончании аренды

Вам нужно собрать временную линию.

5.1. Запишите время истечения аренды

Windows

В ipconfig /all смотрите:

Аренда получена . . . . . . . . . : 14 сентября 2026 г. 9:00:00
Аренда истекает . . . . . . . . . : 14 сентября 2026 г. 17:00:00

Linux

Ищите в логах и lease-файлах слова:

expire
renew
lease
DHCPACK
DHCPNAK
DHCPREQUEST

Пример поиска по журналам:

journalctl --since "2 hours ago" | grep -Ei 'dhcp|lease|ack|nak|request|offer|renew'

5.2. Включите непрерывную проверку доступности

Windows

Можно использовать простой PowerShell-лог:

while ($true) {
    $time = Get-Date -Format o
    $gw = Test-Connection -ComputerName 10.0.0.1 -Count 1 -Quiet
    $srv = Test-Connection -ComputerName 10.0.10.20 -Count 1 -Quiet
    "$time gateway=$gw server=$srv" | Add-Content C:\diag\ping.log
    Start-Sleep -Seconds 5
}

Замените:

  • 10.0.0.1 — шлюз;
  • 10.0.10.20 — IP сервера.

Linux

ping -D -i 5 10.0.0.1 | tee -a /tmp/ping_gateway.log

И отдельно:

ping -D -i 5 10.0.10.20 | tee -a /tmp/ping_server.log

Флаг -D добавляет метку времени.


5.3. Параллельно снимайте дамп DHCP

Это один из самых полезных шагов.

Windows

Можно использовать pktmon, если система современная.

Запуск от администратора:

pktmon filter add -p 67 -p 68
pktmon start --capture --file C:\diag\dhcp.etl

Ждёте до момента проблемы, затем:

pktmon stop
pktmon etl2pcap C:\diag\dhcp.etl -o C:\diag\dhcp.pcap

Полученный файл можно открыть в Wireshark.

Linux

sudo tcpdump -ni eth0 -vvv 'udp port 67 or udp port 68'

Или сразу в файл:

sudo tcpdump -ni eth0 -w /tmp/dhcp.pcap 'udp port 67 or udp port 68'

Замените eth0 на ваш интерфейс:

ip link

6. Что должно быть видно в DHCP-дампе

Нормальное продление аренды выглядит примерно так:

1. Клиент отправляет:

DHCPREQUEST

2. Сервер отвечает:

DHCPACK

Если клиент отправляет DHCPREQUEST, но нет DHCPACK, значит:

  • пакет не доходит до DHCP-сервера;
  • сервер не отвечает;
  • сервер отвечает, но ответ не доходит до клиента;
  • промежуточное устройство блокирует DHCP;
  • сервер считает аренду недействительной и отвечает DHCPNAK.

Если приходит:

DHCPNAK

значит сервер говорит клиенту: «Твоя аренда/запрос некорректны, начинай процесс заново».

Причины DHCPNAK:

  • сервер перезапущен и потерял базу аренд;
  • клиент обратился не к тому DHCP-серверу;
  • клиент мигрировал в другую подсеть;
  • изменился клиентский идентификатор;
  • аренда удалена;
  • конфликт конфигурации;
  • ошибка резервного копирования/восстановления DHCP;
  • неверная настройка failover.

7. Диагностика клиента на Windows

7.1. Проверьте службу DHCP-клиента

Get-Service Dhcp

Должна быть запущена:

Status   Name               DisplayName
------   ----               -----------
Running  Dhcp               DHCP Client


Если остановлена:

Start-Service Dhcp
Set-Service Dhcp -StartupType Automatic

7.2. Посмотрите события DHCP-клиента

Get-WinEvent -LogName Microsoft-Windows-Dhcp-Client/Admin -MaxEvents 50 |
  Select-Object TimeCreated, Id, LevelDisplayName, Message

Если журнала Admin нет или он пуст, попробуйте:

Get-WinEvent -LogName Microsoft-Windows-Dhcp-Client/Operational -MaxEvents 50

Ищите сообщения про:

  • невозможность продлить аренду;
  • истечение аренды;
  • отсутствие ответа от DHCP-сервера;
  • получение автоназначенного адреса 169.254.x.x;
  • ошибки применения сетевых параметров.

7.3. Проверьте текущий DHCP-сервер

ipconfig /all | findstr /i "DHCP"

Запомните адрес DHCP-сервера.

Далее проверьте маршрутизацию до него:

tracert DHCP_SERVER_IP

Если DHCP-сервер в другой подсети, должен работать маршрутизируемый путь или DHCP Relay.

7.4. Аккуратно проверьте продление

Если вы не удалённо на критичной машине, можно выполнить:

ipconfig /renew "Ethernet"

Имя адаптера можно посмотреть в ipconfig /all.

Осторожно:

ipconfig /release

может сразу отключить сеть. На удалённой машине это рискованно.


8. Диагностика клиента на Linux

8.1. NetworkManager

Посмотреть состояние:

nmcli device status

Подробнее:

nmcli device show eth0

Для соединения:

nmcli connection show
nmcli connection show "ИМЯ_СОЕДИНЕНИЯ" | grep -i dhcp

Логи:

journalctl -u NetworkManager --since "2 hours ago" | grep -Ei 'dhcp|lease|ack|nak|offer|request'

8.2. systemd-networkd

networkctl status eth0

Логи:

journalctl -u systemd-networkd --since "2 hours ago" | grep -Ei 'dhcp|lease|ack|nak|offer|request'

8.3. dhclient

Классические пути к арендам:

sudo cat /var/lib/dhcp/dhclient.leases
sudo cat /var/lib/dhclient/dhclient.leases
sudo cat /var/lib/NetworkManager/internal-*eth0.lease
sudo ls /run/systemd/netif/leases

Путь зависит от дистрибутива и менеджера сети.

Логи:

journalctl -u dhclient --since "2 hours ago"

Или общий журнал:

journalctl --since "2 hours ago" | grep -Ei 'dhclient|dhcp|lease|ack|nak|request|offer'

8.4. Проверка продления

Для NetworkManager можно перевзвести соединение, но это кратковременно оборвёт сеть:

sudo nmcli connection down "ИМЯ_СОЕДИНЕНИЯ"
sudo nmcli connection up "ИМЯ_СОЕДИНЕНИЯ"

Для dhclient:

sudo dhclient -r eth0
sudo dhclient -v eth0

Опять же: на удалённом сервере делайте это только при наличии консольного доступа.


9. Диагностика сетевого уровня

9.1. Проверьте, есть ли адрес после обрыва

Если адрес пропал

Симптом:

Нет IPv4-адреса

или интерфейс без адреса.

Причины:

  • DHCP-сервер недоступен;
  • клиент не успел продлить аренду;
  • DHCP-запросы блокируются;
  • служба клиента зависла;
  • порт/линок упал;
  • драйвер сбросил интерфейс;
  • виртуальный коммутатор не пропустил трафик.

Если появился 169.254.x.x

Это признак, что клиент не получил ответ от DHCP и включил автоматическое назначение link-local адреса.

Причины:

  • нет ответа от DHCP-сервера;
  • неверный порт;
  • блокировка BOOTP/DHCP;
  • нет ip helper-address на маршрутизаторе;
  • сервер выключен;
  • исчерпан пул адресов;
  • неверный VLAN.

Если адрес стал другим

Это может быть нормально, если сервер выдал новую аренду. Но если клиенты/приложения ожидают старый адрес, связь может потеряться.

Что делать:

  • сделать резервирование по MAC;
  • проверить, не меняется ли MAC/Client ID;
  • проверить, не используется ли случайный MAC на клиенте;
  • проверить, не клонирована ли машина с одинаковым MAC;
  • проверить DHCP-сервер на несколько активных аренд с одним устройством.



10. Проверка маршрутизации и DNS

Если DHCP выдаёт адрес, но связь с сервером теряется, проверьте, не поменялись ли:

  • маска;
  • шлюз;
  • метрика;
  • DNS;
  • поисковые суффиксы;
  • маршруты.

Windows

route print
ipconfig /all
nslookup server.domain.local

Linux

ip route
resolvectl status
cat /etc/resolv.conf
getent hosts server.domain.local

Если по IP сервер доступен, а по имени нет — проблема не в DHCP-аренде как таковой, а в имени/кэше/суффиксах/DNS.


Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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