DHCP-сервер раздаёт компьютерам сети IP-адреса и сетевые параметры: шлюз, DNS-серверы, имя домена. В Windows Server это отдельная роль, которой можно управлять из консоли DHCP или PowerShell. Ниже - полный цикл: установка, области, резервирования, параметры, связка с DNS, отказоустойчивость, резервное копирование, перенос на новый сервер и поиск неполадок.

Инструкция подходит для Windows Server 2016, 2019, 2022 и 2025.

Установка и авторизация

Роль ставится через «Диспетчер серверов» («Добавить роли и компоненты» → «DHCP-сервер») или PowerShell:

powershell
Install-WindowsFeature DHCP -IncludeManagementTools

После установки диспетчер серверов предлагает «Завершить настройку DHCP». Мастер делает две вещи, которые можно выполнить и вручную:

  1. Создаёт локальные группы «Администраторы DHCP» и «Пользователи DHCP»:

    powershell
    netsh dhcp add securitygroups
    Restart-Service DHCPServer
    

    В PowerShell то же делает Add-DhcpServerSecurityGroup.

  2. Авторизует сервер в Active Directory:

    powershell
    Add-DhcpServerInDC -DnsName dhcp01.corp.example -IPAddress 192.168.10.5
    

Авторизация защищает домен от случайных DHCP-серверов: сервер Windows, входящий в домен, не будет выдавать адреса, пока его не авторизовали. Для авторизации нужны права администратора предприятия. Список авторизованных серверов показывает Get-DhcpServerInDC. На сервере вне домена авторизация не нужна.

Серверу DHCP нужен статический IP-адрес. Если у него несколько сетевых адаптеров, проверьте привязки: в консоли DHCP откройте свойства узла IPv4 → «Дополнительно» → «Привязки» и оставьте только интерфейсы, через которые нужно раздавать адреса. В PowerShell - Get-DhcpServerv4Binding и Set-DhcpServerv4Binding -InterfaceAlias "LAN" -BindingState $true.

Консоль DHCP

Консоль открывается командой dhcpmgmt.msc. Через «Действие» → «Добавить сервер» к ней подключают другие DHCP-серверы и управляют ими удалённо.

Службу запускают и останавливают в консоли (контекстное меню сервера → «Все задачи») или командами:

powershell
Restart-Service DHCPServer
Stop-Service DHCPServer
Start-Service DHCPServer

Статистика (сколько адресов выдано и свободно) не обновляется сама: в консоли нажмите «Обновить» или откройте «Отобразить статистику» в контекстном меню области. В PowerShell статистика всегда актуальна:

powershell
Get-DhcpServerv4ScopeStatistics

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

Полоса адресов, начало заштриховано как исключение

Область - диапазон адресов одной подсети с общими параметрами. Мастер «Создать область» спрашивает диапазон, маску, исключения, срок аренды и основные параметры. То же в PowerShell:

powershell
Add-DhcpServerv4Scope -Name "Офис" -StartRange 192.168.10.50 -EndRange 192.168.10.250 `
    -SubnetMask 255.255.255.0 -LeaseDuration 8.00:00:00 -State Active

Идентификатором области служит адрес подсети - в примере 192.168.10.0.

Срок аренды выбирайте по характеру сети. Для офиса со стационарными компьютерами подойдёт несколько дней, для гостевого Wi-Fi с постоянной сменой устройств - несколько часов, иначе адреса закончатся.

Исключения

Исключения - адреса внутри диапазона, которые сервер не будет выдавать: например, занятые принтерами или серверами со статическими адресами.

powershell
Add-DhcpServerv4ExclusionRange -ScopeId 192.168.10.0 -StartRange 192.168.10.50 -EndRange 192.168.10.59

Проще сразу выбрать диапазон области так, чтобы статические адреса в него не попадали, а исключения оставить для отдельных случаев.

Параметры области

Без параметров клиент получит адрес, но не сможет выйти за пределы подсети. Основные параметры:

  • 003 Маршрутизатор - шлюз по умолчанию;
  • 006 DNS-серверы;
  • 015 DNS-имя домена - суффикс для коротких имён.
powershell
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 -Router 192.168.10.1 `
    -DnsServer 192.168.10.5,192.168.10.6 -DnsDomain corp.example

Параметры можно задать на трёх уровнях: сервера (для всех областей), области и резервирования. Более конкретный уровень перекрывает общий: параметр резервирования важнее параметра области, а тот - параметра сервера. Общие для всех областей значения, например DNS-серверы, удобно задать на уровне сервера (Set-DhcpServerv4OptionValue без -ScopeId).

Для разных типов устройств внутри одной области (например, IP-телефонов) используют классы поставщика и политики DHCP: политика выбирает клиентов по MAC-адресу, классу или другим признакам и выдаёт им свой диапазон и параметры.

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

Принтер с замком на бирке и линией к серверу

Резервирование закрепляет за устройством постоянный адрес. Это удобнее статической настройки на самом устройстве: все адреса учитываются в одном месте, а шлюз и DNS по-прежнему приходят по DHCP.

powershell
Add-DhcpServerv4Reservation -ScopeId 192.168.10.0 -IPAddress 192.168.10.20 `
    -ClientId "00-15-5D-0A-1B-2C" -Name "Принтер бухгалтерии"

ClientId - MAC-адрес устройства. Его можно взять из списка аренд: в консоли в узле «Арендованные адреса» в контекстном меню аренды выберите «Добавить к резервированию».

Посмотреть, изменить и удалить аренды и резервирования:

powershell
Get-DhcpServerv4Lease -ScopeId 192.168.10.0
Get-DhcpServerv4Reservation -ScopeId 192.168.10.0
Remove-DhcpServerv4Lease -IPAddress 192.168.10.77
Remove-DhcpServerv4Reservation -IPAddress 192.168.10.20

Удаление аренды не отключает клиента сразу: он продолжит пользоваться адресом, пока не попробует продлить аренду. Если удалили аренду, чтобы выдать адрес другому устройству, на старом клиенте выполните ipconfig /release или перезагрузите его.

Суперобласти и другие типы областей

Суперобласть объединяет несколько областей, которые обслуживают один физический сегмент сети. Это нужно, когда в одном сегменте работают несколько подсетей, например старая закончилась и рядом добавили новую:

powershell
Add-DhcpServerv4Superscope -SuperscopeName "Этаж 2" -ScopeId 192.168.20.0,192.168.21.0

Область IPv6. В большинстве сетей IPv6-адреса клиенты получают сами по объявлениям маршрутизатора, а DHCPv6 сообщает только DNS-серверы (режим без отслеживания состояния). Если нужна выдача адресов, создайте область:

powershell
Add-DhcpServerv6Scope -Prefix 2001:db8:10:: -Name "Офис IPv6"

Будет ли клиент брать адрес у DHCPv6, решают флаги в объявлениях маршрутизатора, их настраивают на маршрутизаторе.

Многоадресная область (MADCAP) раздаёт групповые адреса для приложений многоадресной рассылки. Встречается редко, создаётся в контекстном меню узла IPv4 → «Создать многоадресную область».

Интеграция с DNS

DHCP-сервер может сам регистрировать в DNS записи A и PTR для своих клиентов. Настройка - на вкладке «DNS» в свойствах узла IPv4 или области:

  • «Включить динамические обновления DNS» - режим «только по запросу клиента» или «всегда». Компьютеры Windows обычно регистрируют запись A сами, а сервер - запись PTR.
  • «Удалять записи A и PTR при удалении аренды» - чтобы в DNS не копились устаревшие записи.
  • «Динамически обновлять записи DNS для DHCP-клиентов, не запрашивающих обновления» - для принтеров, телефонов, Linux-машин и других устройств, которые не регистрируются сами.

Чтобы записи создавались под одной учётной записью и их можно было обновлять при переходе клиента на другой DHCP-сервер, задайте серверу отдельную учётную запись для обновлений:

powershell
Set-DhcpServerDnsCredential -Credential (Get-Credential) -ComputerName dhcp01

Если DHCP-сервер установлен на контроллере домена, это особенно важно: иначе записи создаются от имени учётной записи компьютера контроллера.

Защита от конфликтов адресов

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

powershell
Set-DhcpServerSetting -ConflictDetectionAttempts 2

В консоли это «Число попыток обнаружения конфликтов» на вкладке «Дополнительно» свойств IPv4. Одна-две попытки достаточно, больше заметно замедляет выдачу адресов. Клиенты Windows и сами проверяют полученный адрес и отказываются от занятого.

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

Два сервера со стрелками синхронизации над сетью компьютеров

Два DHCP-сервера могут обслуживать одни и те же области, синхронизируя аренды. Режима два:

  • балансировка нагрузки - оба сервера выдают адреса, по умолчанию поровну;
  • горячий резерв - работает основной сервер, второй включается, когда основной недоступен.
powershell
Add-DhcpServerv4Failover -ComputerName dhcp01 -PartnerServer dhcp02 -Name "dhcp01-dhcp02" `
    -ScopeId 192.168.10.0 -LoadBalancePercent 50 -SharedSecret "общий_секрет"

Для горячего резерва вместо -LoadBalancePercent укажите -ServerRole Active (или Standby, если команда выполняется на резервном). В консоли то же делается командой «Настроить отработку отказа» в контекстном меню области. После изменения параметров области на одном сервере синхронизируйте их: «Репликация области» или Invoke-DhcpServerv4FailoverReplication.

Если клиенты находятся в других подсетях, на маршрутизаторах должен быть настроен агент ретрансляции DHCP (relay, на многих устройствах - ip helper-address) с адресами обоих серверов.

Резервное копирование и восстановление

Windows сама каждые 60 минут сохраняет базу DHCP в папку %SystemRoot%\System32\dhcp\backup. Ручная копия:

powershell
Backup-DhcpServer -Path "D:\DHCPBackup"

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

powershell
Restore-DhcpServer -Path "D:\DHCPBackup"
Restart-Service DHCPServer

В консоли - «Архивировать» и «Восстановить» в контекстном меню сервера. Копируйте папку резервной копии на другой сервер или в систему архивации: копия только на этом же диске не спасёт при отказе сервера.

Перенос на новый сервер

Удобнее всего экспорт и импорт конфигурации вместе с арендами:

powershell
Export-DhcpServer -ComputerName dhcp-old -File C:\Temp\dhcp.xml -Leases
Import-DhcpServer -ComputerName dhcp-new -File C:\Temp\dhcp.xml -BackupPath C:\Temp\DHCPBackupNew -Leases

Порядок:

  1. На новом сервере установите роль, но области пока не активируйте.
  2. Экспортируйте конфигурацию со старого сервера и импортируйте на новый.
  3. Остановите службу DHCP на старом сервере и отключите её автозапуск.
  4. Авторизуйте новый сервер (Add-DhcpServerInDC) и удалите старый из списка (Remove-DhcpServerInDC).
  5. Обновите адреса DHCP-серверов в агентах ретрансляции на маршрутизаторах.

Согласование и сжатие базы

Если статистика и список аренд расходятся или консоль показывает странные записи, выполните согласование: контекстное меню узла IPv4 → «Согласовать все области», затем «Согласовать». Сервер сравнит сводные данные с подробными и предложит исправить расхождения.

База хранится в %SystemRoot%\System32\dhcp\dhcp.mdb. Сервер сжимает её автоматически, но при очень большой базе можно сжать вручную при остановленной службе:

batch
cd %SystemRoot%\System32\dhcp
jetpack dhcp.mdb temp.mdb

Устранение неполадок

Клиент не получает адрес

Если клиент Windows получил адрес вида 169.254.x.x, значит, ответа от DHCP-сервера не было. Проверьте по порядку:

  1. Работает ли служба и авторизован ли сервер (Get-DhcpServerInDC).
  2. Активна ли область и есть ли свободные адреса (Get-DhcpServerv4ScopeStatistics, поле PercentageInUse).
  3. Привязан ли сервер к нужному интерфейсу.
  4. Если клиент в другой подсети - настроен ли агент ретрансляции и не блокируются ли UDP-порты 67 и 68 между сегментами.
  5. Не стоит ли в сети другой DHCP-сервер, например, домашний маршрутизатор, подключённый к офисной сети. Посторонний сервер выдаёт неверные адреса и шлюзы.

На клиенте:

batch
ipconfig /release
ipconfig /renew
ipconfig /all

В выводе ipconfig /all видно, какой DHCP-сервер выдал адрес и когда истекает аренда.

Журналы

Журнал аудита DHCP включён по умолчанию и пишется в %SystemRoot%\System32\dhcp\DhcpSrvLog-<день недели>.log, по файлу на каждый день недели. Каждая строка начинается с кода события. Полезные коды:

  • 10 - новая аренда, 11 - продление, 12 - освобождение адреса;
  • 13 - адрес уже используется в сети (конфликт);
  • 14 - в области закончились адреса;
  • 15 - в аренде отказано.

Расшифровка всех кодов записана в начале каждого файла журнала. Включить или выключить аудит можно на вкладке «Общие» свойств IPv4 или командой Set-DhcpServerAuditLog.

Ошибки службы, проблемы авторизации и отработки отказа - в журнале событий: «Журналы приложений и служб» → «Microsoft» → «Windows» → «DHCP-Server».

NAP

В Windows Server 2008-2012 R2 DHCP-сервер мог работать с защитой доступа к сети (NAP) и выдавать ограниченный адрес компьютерам, не соответствующим политике безопасности. NAP был объявлен устаревшим в Windows Server 2012 R2 и удалён начиная с Windows Server 2016, а для контроля доступа к сети используют проверку подлинности 802.1X на коммутаторах и точках доступа.