О том как работает DHCP можно целую книгу написать.
Протокол динамической конфигурации узлов (DHCP) — это та невидимая магия, которая раздает IP-адреса вашим устройствам. Обычно он работает безотказно, но когда возникают сбои (клиент не получает адрес, появляются дубли, пропадает связь), офис парализуется. В этот момент администратору нужны не догадки, а факты.
Главный инструмент расследования — это журналы DHCP. В этой статье мы разберем, как читать логи Windows Server, находить критические ошибки и настраивать систему так, чтобы вы могли заглянуть в прошлое глубже, чем на неделю.
Как работает DHCP: DORA
Клиент и сервер общаются в 4 шага, известных как аббревиатура DORA:
- Discover (Обнаружение): Клиент кричит в сеть: "Есть тут DHCP?".
- Offer (Предложение): Сервер отвечает: "Держи адрес 192.168.1.10".
- Request (Запрос): Клиент говорит: "Беру!".
- Acknowledge (Подтверждение): Сервер фиксирует сделку.
Логи фиксируют каждый из этих шагов. Если один из них падает, вы увидите это в записях.
Где живут логи DHCP
Многие администраторы по привычке идут в Event Viewer (Просмотр событий). Event Viewer показывает только общее состояние службы (запуск/остановка). Для детальной разведки нужны текстовые файлы. Их местоположение по умолчанию: C:\Windows\system32\dhcp\.
Формат именования:
IPv4: DhcpSrvLog-<ДЕНЬ>.log (например, DhcpSrvLog-Mon.log)
IPv6: DhcpV6SrvLog-<ДЕНЬ>.log
Сервер хранит записи только за последние 7 дней. Каждый день недели перезаписывается. Если инцидент случился 8 дней назад — данных нет, если вы не настроили архивацию.
Анатомия лога
Файлы имеют расширение .log, но внутри это обычный CSV (почти).
Список Event ID
00 The log was started.
01 The log was stopped.
02 The log was temporarily paused due to low disk space.
10 A new IP address was leased to a client.
11 A lease was renewed by a client.
12 A lease was released by a client.
13 An IP address was found to be in use on the network.
14 A lease request could not be satisfied because the scope's address pool was exhausted.
15 A lease was denied.
16 A lease was deleted.
17 A lease was expired and DNS records for an expired leases have not been deleted.
18 A lease was expired and DNS records were deleted.
20 A BOOTP address was leased to a client.
21 A dynamic BOOTP address was leased to a client.
22 A BOOTP request could not be satisfied because the scope's address pool for BOOTP was exhausted.
23 A BOOTP IP address was deleted after checking to see it was not in use.
24 IP address cleanup operation has began.
25 IP address cleanup statistics.
30 DNS update request to the named DNS server.
31 DNS update failed.
32 DNS update successful.
33 Packet dropped due to NAP policy.
34 DNS update request failed.as the DNS update request queue limit exceeded.
35 DNS update request failed.
36 Packet dropped because the server is in failover standby role or the hash of the client ID does not match.
50+ Codes above 50 are used for Rogue Server Detection information.
Ключевые Event ID
В начале каждого лога есть легенда. Вот самые важные коды, которые вы должны знать:
- 10 — Выдана новая аренда (клиент получил IP)
- 11 — Аренда продлена (обновление через 4 дня)
- 12 — Аренда освобождена (ipconfig /release)
- 13 — Конфликт IP-адресов (уже используется). Кто-то воткнул статику вручную или сбой в сети.
- 14 — Пул адресов истощён (кончились IP). Сервер перегружен клиентами. Увеличивайте область или сокращайте время аренды.
- 15 — Отказ в аренде. Сервер узнал клиента и сказал "Нет". Проверьте фильтры MAC-адресов.
Ищите в логах строки с ID 13, 14, 15. Это ваши цели при аварии.
Сценарии устранения неполадок
Сценарий 1: "Всё встало. Дуплет!"
- Симптом: Пользователь не выходит в сеть. Ошибка "IP-адрес уже используется".
- Действие: Открываем лог, ищем Event ID 13.
- Что пишет: An IP address was found to be in use on the network.
- Решение: Лог покажет MAC-адрес и IP. Идите и выключите устройство, которое украло адрес.
Сценарий 2: "Сотрудникам не хватает IP"
- Симптом: Часть устройств не подключается, старые работают.
- Действие: Ищем Event ID 14.
- Что пишет: Lease request unsatisfied due to pool exhaustion.
- Решение: Увеличьте размер Scope (диапазона) или уменьшите время аренды (Lease Duration) с 8 дней до 1 дня, чтобы адреса возвращались быстрее.
Сценарий 3: "DHCP не отвечает"
- Симптом: Клиент висит на "Получение адреса".
- Действие: Смотрим логи на наличие ID 10 или 11. Если их нет, а сервер запущен — проблема в маршрутизации (DHCP Relay).
Как настроить архивацию
По умолчанию DhcpSrvLog-Sun.log перезаписывается каждое воскресенье. Если аудит нужен за месяц, внедрите автоматизацию через планировщик задач и PowerShell.
Пример скрипта для архивации (PowerShell). Этот скрипт копирует воскресный лог и добавляет в имя файла сегодняшнюю дату, убирая риск перезаписи.
# Архивация IPv4 лога за воскресенье
Copy-Item "C:\Windows\system32\dhcp\DhcpSrvLog-Sun.log" "D:\DHCP_Archive\DhcpSrvLog-Sun-$(Get-Date -Format 'yyyy-MM-dd').log"
# Архивация IPv6 лога за воскресенье
Copy-Item "C:\Windows\system32\dhcp\DhcpV6SrvLog-Sun.log" "D:\DHCP_Archive\DhcpV6SrvLog-Sun-$(Get-Date -Format 'yyyy-MM-dd').log"
Лучшие практики
- Включите аудит: В консоли DHCP → Свойства IPv4 → вкладка Advanced → галочка "Enable DHCP audit logging" (обычно включена по умолчанию).
- Выделите отдельный том для логов (не диск C:), чтобы при росте логов не убить систему.
- Настройте сжатие старых архивов раз в месяц.
- Включите Conflict Detection Attempts (в свойствах IPv4) со значением 1 или 2. Сервер будет пинговать адрес перед выдачей — это снизит количество ошибок ID 13.
- Настройте архивацию любым скриптом (см. выше), чтобы хранить историю > 7 дней.
- Ищите сначала ошибки: ID 13 (конфликт), ID 14 (истощение), ID 15 (отказ).
- Интегрируйте вашу SIEM систему с папкой C:\Windows\system32\dhcp, чтобы логи не лежали мертвым грузом.
- Если в подсети имеются статические IP адреса, не включайте их в диапазон выдаваемых IP адресов сервером DHCP.
Источник:
Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.