Настройка DHCP-сервера в Windows Server

настройка DHCP сервера в Windows Server

DHCP-сервер в Windows Server автоматически раздаёт IP-адреса компьютерам в сети, избавляя администратора от ручной настройки сетевых параметров на каждом устройстве. Установка и базовая настройка занимают 15-20 минут, а экономят десятки часов работы.

Зачем нужен DHCP

Короче, вот ситуация. У вас 50 компов в офисе. Каждому нужен IP-адрес, маска подсети, шлюз по умолчанию, DNS-сервер. Без DHCP вы идёте к каждому компу и вбиваете эти параметры руками. Записываете, какой IP кому выдали, чтобы не было конфликтов. Пришёл новый сотрудник? Ищете свободный IP, настраиваете. Кто-то случайно поставил чужой IP? Сетевой конфликт, два компа не работают.

DHCP решает всё это автоматически. Компьютер включился, отправил запрос «дайте мне IP», DHCP-сервер выдал адрес из пула. Всё. Никаких конфликтов, никакой ручной работы.

Мой коллега Алексей работает в производственной компании (серверная на базе Dell PowerEdge R640 с двумя Xeon Silver 4214). До внедрения DHCP у них была Excel-таблица с IP-адресами. 200 строк. Половина неактуальна. Кто-то забыл записать, кто-то записал не тот адрес. Регулярно случались конфликты IP. После настройки DHCP эта таблица стала не нужна.

Как работает DHCP: процесс DORA

На самом деле, процесс получения IP-адреса состоит из четырёх шагов (DORA):

  1. Discover. Клиент отправляет широковещательный запрос: «Есть ли тут DHCP-сервер?»
  2. Offer. DHCP-сервер отвечает: «Я есть, вот тебе IP 192.168.1.115»
  3. Request. Клиент подтверждает: «Беру 192.168.1.115»
  4. Acknowledge. Сервер подтверждает: «Готово, этот IP твой на 8 дней»

Весь процесс занимает миллисекунды. Пользователь даже не замечает. Кстати, именно поэтому DHCP-сервер должен быть в той же подсети, что и клиенты (или нужен DHCP Relay на маршрутизаторе).

Установка роли DHCP

Тут такое дело. Установка элементарная.

# Устанавливаем роль DHCP-сервера
Install-WindowsFeature DHCP -IncludeManagementTools

# Авторизация DHCP-сервера в Active Directory
# Без этого шага DHCP не будет раздавать адреса в доменной сети
Add-DhcpServerInDC -DnsName "server01.company.local" -IPAddress 192.168.1.10
# Авторизация нужна для защиты от "левых" DHCP-серверов в сети

# Убираем флаг необходимости настройки (убирает жёлтый треугольник в Server Manager)
Set-ItemProperty -Path "HKLM:SOFTWAREMicrosoftServerManagerRoles12" `
    -Name "ConfigurationState" -Value 2

Авторизация в AD это важный шаг. Если честно, многие новички его пропускают и потом удивляются, почему DHCP не работает. В доменной среде неавторизованный DHCP-сервер молча отключается, чтобы не конфликтовать с другими. Это защита от ситуации, когда кто-то случайно поднял DHCP на своём ноутбуке и сломал всю сеть.

Настройка статического IP на самом DHCP-сервере

Вот в чём прикол: DHCP-сервер сам должен иметь статический IP-адрес. Он не может получать адрес от самого себя. Это первое, что нужно настроить до установки роли.

# Настраиваем статический IP на сервере
New-NetIPAddress -InterfaceAlias "Ethernet" `
    -IPAddress 192.168.1.10 `
    -PrefixLength 24 `
    -DefaultGateway 192.168.1.1

# Настраиваем DNS
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" `
    -ServerAddresses "192.168.1.10","192.168.1.11"

На самом деле, это очевидный шаг, но новички его иногда пропускают. Сервер с динамическим IP, раздающий динамические IP, это рецепт для катастрофы. При перезагрузке сервер может получить другой адрес, и клиенты потеряют связь с DHCP.

Создание области (scope)

Область это пул IP-адресов, которые DHCP будет раздавать. Без области DHCP-сервер бесполезен.

# Создаём область для основной сети
Add-DhcpServerv4Scope `
    -Name "Офисная сеть" `
    -StartRange 192.168.1.100 `
    -EndRange 192.168.1.250 `
    -SubnetMask 255.255.255.0 `
    -LeaseDuration 8.00:00:00 `
    -State Active
# Диапазон 192.168.1.100-250 это 151 адрес
# Аренда 8 дней - стандартное значение для офисной сети

# Настраиваем параметры области
Set-DhcpServerv4OptionValue `
    -ScopeId 192.168.1.0 `
    -Router 192.168.1.1 `
    -DnsServer 192.168.1.10 `
    -DnsDomain "company.local"
# Router - это шлюз по умолчанию (ваш роутер)
# DnsServer - адрес DNS (обычно контроллер домена)

На самом деле, адреса 192.168.1.1-99 мы оставили для статических устройств: серверы, принтеры, сетевое оборудование. Это хорошая практика. Грубо говоря, делим подсеть на две части: статическую и динамическую.

Исключения из диапазона

Бывает, что в динамическом диапазоне нужно исключить отдельные адреса (уже заняты статически):

# Исключаем адреса из выдачи
Add-DhcpServerv4ExclusionRange -ScopeId 192.168.1.0 `
    -StartRange 192.168.1.200 -EndRange 192.168.1.210
# Адреса 200-210 DHCP не будет раздавать

Время аренды: какое ставить

Знаете что? Время аренды зависит от типа сети:

Тип сетиРекомендуемая арендаПочему
Офис (постоянные сотрудники)8 днейКомпьютеры включены каждый день, адрес продлевается автоматически
Гостевой Wi-Fi4-8 часовГости приходят и уходят, адреса освобождаются быстро
Кафе / коворкинг1-2 часаБыстрый оборот устройств
Серверная VLAN30 днейСерверы работают постоянно, частое обновление ни к чему

Резервирование адресов

Некоторым устройствам нужен постоянный IP-адрес. Принтерам, серверам, IP-телефонам. DHCP позволяет зарезервировать адрес за конкретным устройством по MAC-адресу.

# Резервируем IP для сетевого принтера
Add-DhcpServerv4Reservation `
    -ScopeId 192.168.1.0 `
    -IPAddress 192.168.1.50 `
    -ClientId "00-1A-2B-3C-4D-5E" `
    -Name "Принтер бухгалтерии"
# ClientId - это MAC-адрес устройства
# Теперь принтер всегда будет получать 192.168.1.50

# Резервируем IP для IP-камеры
Add-DhcpServerv4Reservation `
    -ScopeId 192.168.1.0 `
    -IPAddress 192.168.1.51 `
    -ClientId "AA-BB-CC-DD-EE-FF" `
    -Name "Камера вход"

# Смотрим все резервации
Get-DhcpServerv4Reservation -ScopeId 192.168.1.0

Вот в чём прикол: резервирование лучше статического IP на самом устройстве. Если устройство заменят, достаточно поменять MAC-адрес в резервации. А при статической настройке нужно лезть в настройки нового устройства. Плюс все резервации видны в одном месте на DHCP-сервере, а статические IP раскиданы по устройствам.

Настройка DHCP для нескольких VLAN

В крупных сетях используются VLAN-ы. Каждый VLAN, это отдельная подсеть, и DHCP должен обслуживать их все. Тут такое дело: DHCP-сервер может быть в одном VLAN, а обслуживать клиентов в других, но для этого на маршрутизаторе нужен DHCP Relay (ip helper-address).

# Создаём области для разных VLAN
# VLAN 10 - Офис
Add-DhcpServerv4Scope -Name "VLAN 10 - Офис" `
    -StartRange 10.10.10.100 -EndRange 10.10.10.250 `
    -SubnetMask 255.255.255.0 -State Active

# VLAN 20 - Бухгалтерия
Add-DhcpServerv4Scope -Name "VLAN 20 - Бухгалтерия" `
    -StartRange 10.10.20.100 -EndRange 10.10.20.250 `
    -SubnetMask 255.255.255.0 -State Active

# VLAN 30 - Гостевой Wi-Fi
Add-DhcpServerv4Scope -Name "VLAN 30 - Гости" `
    -StartRange 10.10.30.100 -EndRange 10.10.30.250 `
    -SubnetMask 255.255.255.0 -LeaseDuration 4:00:00 -State Active

Отказоустойчивость DHCP

Один DHCP-сервер это точка отказа. Упал сервер, и через несколько часов (когда истечёт аренда) компьютеры начнут терять IP-адреса. В Windows Server есть встроенная отказоустойчивость DHCP:

# Настройка DHCP Failover (горячий резерв)
Add-DhcpServerv4Failover `
    -Name "DHCP-Failover" `
    -PartnerServer "server02.company.local" `
    -ScopeId 192.168.1.0 `
    -SharedSecret "SecretKey123!" `
    -Mode HotStandby `
    -ReservePercent 10
# Второй сервер будет держать 10% адресов в резерве
# Если основной упадёт, резервный подхватит раздачу

Знаете что? Настройка отказоустойчивости занимает 5 минут, а спасает от часов простоя. Всегда настраивайте, если есть второй сервер.

По факту, есть два режима отказоустойчивости: Hot Standby (один основной, один резервный) и Load Balance (оба раздают адреса, делят нагрузку 50/50). Для большинства компаний Hot Standby подходит лучше: проще, понятнее, меньше шансов что-то сломать.

Мониторинг и диагностика

# Посмотреть все выданные аренды
Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Format-Table IPAddress, HostName, ClientId

# Статистика области
Get-DhcpServerv4ScopeStatistics -ScopeId 192.168.1.0
# Покажет: всего адресов, выдано, свободно, процент использования

# Проверка здоровья DHCP
Get-DhcpServerv4Statistics
# Общая статистика сервера: запросы, подтверждения, отказы

# Найти конкретное устройство по MAC-адресу
Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object {$_.ClientId -like "*3C-4D-5E*"}

Кстати, следите за процентом использования области. Если он приближается к 80%, пора расширять пул или создавать новую подсеть. Моя знакомая Наталья (она сисадмин в рекламном агентстве, сервер у них Supermicro на Xeon E-2236) как-то прозевала этот момент. Пул закончился, новые устройства не могли получить IP. А в агентстве постоянно подключаются ноутбуки фрилансеров. Ну и началось.

Дополнительные параметры DHCP (Options)

Кроме IP-адреса, маски и шлюза, DHCP может передавать клиентам десятки других параметров. Вот самые полезные:

# Option 66 - TFTP Boot Server (для PXE-загрузки)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 `
    -OptionId 66 -Value "192.168.1.20"

# Option 67 - Boot file name (для PXE)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 `
    -OptionId 67 -Value "bootx64wdsnbp.com"

# Option 44 - WINS Server (если ещё используете WINS)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 `
    -OptionId 44 -Value "192.168.1.10"

# Option 252 - WPAD (автоматическая настройка прокси)
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 `
    -OptionId 252 -Value "http://proxy.company.local/wpad.dat"

По факту, Option 66 и 67 критически важны для развёртывания Windows через WDS (Windows Deployment Services). Без них сетевая загрузка не работает. Если планируете ставить винду по сети на 50 компов, эти опции обязательны.

Бэкап и восстановление DHCP

DHCP-сервер хранит все настройки, области, резервации и аренды в базе данных. Потерять эти данные, значит перенастраивать всё с нуля.

# Бэкап DHCP-сервера
Backup-DhcpServer -Path "D:DHCP-Backup"

# Восстановление на новом сервере
Restore-DhcpServer -Path "D:DHCP-Backup"

# Экспорт конфигурации в XML (для документации)
Export-DhcpServer -File "D:dhcp-config.xml"

На самом деле, Windows Server автоматически бэкапит DHCP каждые 60 минут в папку %SystemRoot%System32dhcpbackup. Но лучше не полагаться только на автобэкап. Настройте отдельную задачу в Task Scheduler для регулярного экспорта на внешний диск или сетевую папку.

Частые проблемы и их решение

Если честно, DHCP, одна из самых стабильных служб Windows Server. Но проблемы бывают.

  • Клиент получает APIPA-адрес (169.254.x.x). DHCP-сервер недоступен. Проверьте, запущена ли служба, авторизован ли сервер в AD, нет ли проблем с сетью
  • Конфликт IP-адресов. Кто-то прописал статический IP из DHCP-диапазона. Решение: используйте исключения или проверьте, нет ли «левого» DHCP-сервера в сети
  • DHCP не обновляет DNS. Проверьте настройки: DHCP Properties > DNS tab > «Enable DNS dynamic updates». Должно быть включено

Логирование и аудит DHCP

Знаете что? Логи DHCP это бесценный инструмент при расследовании инцидентов. Когда безопасники спрашивают «какой IP был у компьютера в прошлый четверг в 15:00», DHCP-логи дают точный ответ.

# Включаем расширенное логирование DHCP
Set-DhcpServerAuditLog -Enable $true -Path "D:DHCP-Logs" -MaxMBFileSize 100

# Просмотр логов
Get-Content "D:DHCP-LogsDhcpSrvLog-Mon.log" | Select-String "Assign"

По факту, логи DHCP хранят информацию о каждой выданной и освобождённой аренде. Кто получил IP, когда, с какого MAC-адреса. Для compliance и безопасности это обязательные данные.

А ещё DHCP-сервер требует лицензию Windows Server. На keytrust24.store есть ключи Windows Server Standard, которого более чем достаточно для DHCP. Ну и клиентские CAL-лицензии, но это отдельная тема.

Интеграция DHCP с DNS: динамическое обновление

Тут такое дело: DHCP и DNS вместе работают гораздо лучше, чем по отдельности. Когда DHCP выдаёт IP-адрес компьютеру, он может автоматически создать DNS-запись для этого компьютера. Это называется Dynamic DNS Update.

# Настройка динамического обновления DNS через DHCP
Set-DhcpServerv4DnsSetting -ScopeId 192.168.1.0 `
    -DynamicUpdates "Always" `
    -DeleteDnsRROnLeaseExpiry $true `
    -UpdateDnsRRForOlderClients $true

# Проверяем настройки DNS для DHCP
Get-DhcpServerv4DnsSetting -ScopeId 192.168.1.0

Вот в чём прикол: параметр DeleteDnsRROnLeaseExpiry удаляет DNS-запись, когда аренда истекает. Без этого параметра в DNS копятся устаревшие записи компьютеров, которых уже нет в сети. Через год в DNS будет мусор из сотен несуществующих записей. Короче, всегда включайте эту опцию.

Мой знакомый Олег, сисадмин в проектной организации (два сервера Dell PowerEdge T440), полгода не мог понять, почему некоторые компьютеры не видят друг друга по имени. Оказалось, DHCP не обновлял DNS-записи для старых клиентов (Windows 7 машины в цеху). Включил UpdateDnsRRForOlderClients, и проблема ушла. На самом деле, эта настройка критична для сетей со смешанным парком устройств.

Политики DHCP и фильтрация по MAC-адресам

Если честно, в корпоративной сети стоит контролировать, каким устройствам DHCP выдаёт адреса. Принёс сотрудник из дома ноутбук, подключил к сети и получил IP. А на ноутбуке вирусы. Знакомая ситуация?

# Включаем фильтрацию MAC-адресов на DHCP
Set-DhcpServerv4FilterList -Allow $true -Deny $true

# Добавляем MAC-адреса в разрешённый список (whitelist)
Add-DhcpServerv4Filter -List Allow -MacAddress "00-1A-2B-3C-4D-5E" -Description "Рабочая станция Иванов"
Add-DhcpServerv4Filter -List Allow -MacAddress "AA-BB-CC-DD-EE-FF" -Description "Ноутбук Петров"

# Проверяем списки фильтрации
Get-DhcpServerv4Filter -List Allow

Грубо говоря, если включить Allow-список и добавить туда только корпоративные устройства, то случайные ноутбуки и телефоны не получат IP от DHCP. Строго, но безопасно.

DHCP это одна из тех вещей, которые настраиваются за полчаса и потом просто работают. Годами. Без вмешательства. Но когда DHCP ломается, ощущение такое, будто вся сеть умерла. Поэтому не забывайте про отказоустойчивость и мониторинг. Грубо говоря, потратив полчаса на настройку DHCP Failover и логирование, вы обеспечите себе спокойный сон на годы вперёд.

Частые вопросы

Исключения из диапазона

Бывает, что в динамическом диапазоне нужно исключить отдельные адреса (уже заняты статически):

Время аренды: какое ставить

Знаете что? Время аренды зависит от типа сети: