Подробный гайд: Почему пропадает сеть при истечении DHCP-аренды и как это исправить - Часть 1
1. Главное правило
Если машина, которая «теряет связь», сама является сервером — серверам обычно нельзя зависеть от динамической DHCP-аренды.
Для серверов, сетевых устройств, принтеров, контроллеров домена, DNS, баз данных, API-узлов и т.п. используйте:
- Статический IP, либо
- DHCP-резервирование по MAC/Client ID, либо
- Минимум: фиксированная аренда на DHCP-сервере и исключение адреса из динамического пула.
Если сервер получает адрес динамически и при продлении/перевыдаче адреса меняется, то клиенты, сессии, DNS, ARP, firewall-правила, балансировщики и приложения могут начать работать некорректно.
2. Как вообще работает DHCP-аренда
Упрощённо:
- Клиент получает IP-адрес, маску, шлюз, DNS и время аренды.
- Обычно через 50% времени аренды клиент пытается продлить аренду — отправляет
DHCPREQUESTсерверу. - Если сервер не отвечает, примерно на 87.5% аренды клиент начинает рассылать запрос шире, уже не только конкретному DHCP-серверу.
- Если до окончания аренды продление не произошло, клиент, как правило, теряет право использовать адрес.
- После этого может появиться:
- отсутствие IPv4-адреса;
- адрес типа
169.254.x.xAPIPA/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.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.