· 15 мин чтения

DHCP-сервер Windows Server: установка, области и управление из PowerShell

DHCP-сервер Windows Server: установка, области и управление из PowerShell

Привет! Я Евгений Семёнов, директор ITFresh. За свои пятнадцать лет в IT я поднял DHCP, кажется, почти в каждой московской подворотне. Шучу, конечно, но сотня офисов — это факт! Мы работали и с крошечными студиями на 12 мест, и с довольно серьёзными дистрибьюторами, где четыре VLAN и целая сотня IP-телефонов. Казалось бы, DHCP в Windows — ну что там сложного? Но на практике вокруг него столько подводных камней, что ни одна другая инфраструктурная служба рядом не стоит по количеству проблем. В этой статье я поделюсь, как мы в ITFresh ставим DHCP, чтобы никаких сюрпризов, а потом сопровождаем его с помощью хитрых скриптов.

Зачем вообще отдельный DHCP в офисе

Иногда поражаюсь: сколько компаний до сих пор живут на DHCP, который раздаёт обычный Keenetic или Mikrotik. Роутер стоит где-нибудь у входа, и все довольны. Пока у вас десяток сотрудников — вопросов нет. Но что происходит, как только появляется второй VLAN? Или, скажем, гостевая сеть? А если к этому добавить IP-телефонию или PXE-загрузку? Всё, роутер просто не справляется, он выдыхается. Вы ведь не сможете задать разные опции для разных scope, там нет резервирования по MAC-адресам, да и интеграция с DNS отсутствует как класс. Получается бардак.

Windows Server решает все эти задачи одной-единственной ролью. Мы выбираем его, потому что плюсы очевидны:

И знаете, что самое классное? При всех своих невероятных возможностях эта роль абсолютно неприхотлива к ресурсам. Возьмём продакшн-сервер: там 600 активных лизов, и что? DHCP занимает всего 80–120 МБ памяти. Просто чудо!

Что спланировать до установки

Самая частая ошибка, которую мы видим у новичков, — это подход «поставим DHCP, а там разберёмся». Я же всегда трачу минимум полчаса, чтобы набросать подробный план на бумаге. Правда, это бесценно! Без такого черновика вы рискуете уже через месяц получить на выходе пересекающиеся scope, полное отсутствие резервирования и ворох непонятных опций. А кому это нужно?

ПараметрЧто решаемТиповое значение
Подсеть/маскаКуда выдаём адреса192.168.10.0/24 — офис, 192.168.20.0/24 — Wi-Fi
Диапазон scopeКакие IP раздавать.50–.200, фиксированная инфраструктура — .1–.49
Срок арендыКак часто продлевать8 дней — офис, 4 часа — гости
DNS-серверыОпция 006Два DC с AD-интегрированной зоной
ШлюзОпция 003IP маршрутизатора VLAN
Опция 066/067TFTP-образ для PXE/IP-тел.Адрес и путь до prov-файла

Если у вас сложная сеть, где несколько VLAN, мой однозначный совет: сразу делайте отдельный scope для каждого. И, пожалуйста, не забудьте про DHCP Relay (или ip helper-address) на ваших коммутаторах L3. Это гораздо изящнее, чем изобретать велосипед с какими-то Super Scope.

Установка роли DHCP через PowerShell

Всё устанавливается одной командой. На изолированном сервере я обычно делаю так:

Install-WindowsFeature DHCP -IncludeManagementTools
Add-DhcpServerSecurityGroup
Restart-Service dhcpserver

# Авторизуем сервер в AD
Add-DhcpServerInDC -DnsName "dhcp01.corp.example.ru" -IPAddress 192.168.1.10

# Подтверждаем выполнение пост-инсталл шага
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ServerManager\Roles\12 `
  -Name ConfigurationState -Value 2

Кстати, последняя строка убирает из Server Manager тот противный жёлтый значок «Configuration required». Многие его просто игнорируют, а потом при перезагрузке забывают авторизовать сервер в домене. Вот такая мелочь, а сколько проблем потом!

Создание scope и нужных опций

Конечно, scope можно создать и через консоль dhcpmgmt.msc. Но если речь идёт о повторяемых инсталляциях, я лично предпочитаю работать со скриптами. Так документ проекта буквально за секунды превращается в готовый рабочий код. Это безумно удобно, экономит кучу времени.

# Офисная сеть 192.168.10.0/24
Add-DhcpServerv4Scope `
  -Name "Office LAN" `
  -StartRange 192.168.10.50 `
  -EndRange 192.168.10.200 `
  -SubnetMask 255.255.255.0 `
  -LeaseDuration (New-TimeSpan -Days 8) `
  -State Active

# Опции на scope
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 `
  -Router 192.168.10.1 `
  -DnsServer 192.168.1.10, 192.168.1.11 `
  -DnsDomain "corp.example.ru"

# Опция 066 и 067 — для IP-телефонов Yealink
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 `
  -OptionId 66 -Value "ftp.corp.example.ru"
Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 `
  -OptionId 67 -Value "y000000000028.cfg"

На моей практике есть золотое правило: перед запуском scope я всегда пропинговываю весь диапазон по ICMP. Зачем? Чтобы случайно не раздать IP-адрес, который уже занимает какой-нибудь старенький принтер со статикой из прошлой жизни. Представляете, потом искать, кто кому мешает?

Резервирование IP и исключения

Резервирование мы используем для всего, что должно иметь постоянный IP в пределах scope, но при этом не выводится из DHCP. Возьмём, к примеру, наши корпоративные МФУ — Kyocera или Samsung. Если их IP-адрес вдруг поменяется, печать из 1С просто встанет. Кому это нужно? Никому!

Add-DhcpServerv4Reservation -ScopeId 192.168.10.0 `
  -IPAddress 192.168.10.35 `
  -ClientId "00-25-B3-44-AA-BB" `
  -Description "МФУ Kyocera ресепшн"

# Исключить адреса, занятые статикой
Add-DhcpServerv4ExclusionRange -ScopeId 192.168.10.0 `
  -StartRange 192.168.10.2 -EndRange 192.168.10.49

Один раз, это было в 2024 году, я не исключил диапазон .2–.49. И что вы думаете? Два маршрутизатора получили адреса, которые уже стояли на коммутаторе. Весь офис лег на 40 минут. С тех пор исключения прописываю исключительно до активации scope, никогда после. Урок усвоен!

DHCP Failover: зачем и как настраивать

Один-единственный DHCP-сервер — это, по сути, бомба с часовым механизмом. Представьте себе: виртуалка падает, и что дальше? Новые сотрудники не могут даже в домен войти, ведь они просто не получили IP-адрес. Катастрофа! Но с функцией DHCP Failover, которая появилась в Windows Server 2012 и всех последующих версиях, эта проблема решается очень элегантно, без всяких сложных «плясок» с кластером.

Add-DhcpServerv4Failover `
  -ComputerName "dhcp01.corp.example.ru" `
  -PartnerServer "dhcp02.corp.example.ru" `
  -Name "FO-Office" `
  -ScopeId 192.168.10.0, 192.168.20.0 `
  -SharedSecret "S#перСекретAyT1fresh" `
  -LoadBalancePercent 50 `
  -MaxClientLeadTime (New-TimeSpan -Hours 1) `
  -AutoStateTransition $true `
  -StateSwitchInterval (New-TimeSpan -Minutes 60)

Для большинства офисов мы выбираем режим Load Balance 50/50: оба сервера активно работают, обслуживая клиентов. Если один вдруг упадёт, второй моментально подхватит весь трафик. А вот в сетях, где есть один основной и один «холодный» резерв, мы ставим Hot Standby с коэффициентом 80/20. Каждому своё.

Кейс: холдинг в Северном Бутово, 4 VLAN, 180 устройств

Вспомните август 2025 года. К нам тогда обратилась одна торговая компания из Северного Бутово. У них четыре филиала, около 180 устройств, Wi-Fi, IP-телефония Yealink, и, конечно, PXE-загрузка для тонких клиентов HP. До того, как мы пришли, за DHCP отвечал Mikrotik. И вот что там творилось: гостевая сеть постоянно получала адреса из рабочего VLAN, а телефоны вечно не могли автоматически подтянуть прошивку. Сплошной хаос!

Что мы сделали за две рабочие смены:

Знаете, во сколько это обошлось клиенту? Всего 95 000 рублей. А вот что действительно круто: за полгода после внедрения не было ни минуты простоя! И самое приятное — время на регистрацию нового телефона с нуля сократилось с 20 минут ручной настройки до каких-то 90 секунд. Телефон просто загружается и сам подхватывает все нужные prov-файлы. Фантастика, правда?

Мониторинг и резервное копирование

Что, если вдруг откажет сервер DHCP, а у вас нет бэкапа? Все ваши резервирования и настройки scope просто пропадут! Это серьёзный риск, особенно при фатальном сбое. Но не беда: в Windows Server есть встроенная команда, которая позволяет экспортировать абсолютно всё — да-да, всю базу — прямо в XML. Очень удобно!

# Еженедельный бэкап
Export-DhcpServer -ComputerName "dhcp01" `
  -File "\\backup\dhcp\dhcp01-$(Get-Date -Format yyyy-MM-dd).xml" `
  -Leases -Force

# Восстановление на новом сервере
Import-DhcpServer -ComputerName "dhcp01-new" `
  -File "\\backup\dhcp\dhcp01-2025-11-20.xml" `
  -BackupPath "C:\dhcp-restore" -Leases -ScopeOverwrite -Force

Мы мониторим DHCP, отслеживая всего два простых, но важных счётчика: сколько активных аренд и на сколько процентов заполнен scope. Наша система (будь то Zabbix или PRTG) подключается через WMI и сразу же шлёт тревожное сообщение в Telegram, если заполнение scope достигло 85%. Поверьте, это не раз спасало нас от криков типа «у нас в офисе у всех пропал интернет!» прямо посреди рабочего дня.

Типичные ошибки, которые вижу в чужих сетях

Развернём DHCP и приведём в порядок IP-адресацию

Мы можем быстро поднять DHCP на Windows Server 2019 или 2022, расписать детальный план адресации, настроить Failover и, конечно, интеграцию с AD DNS. А ещё привяжем вашу IP-телефонию Yealink или Grandstream через опции 066/067, чтобы всё работало как часы. Работаем мы по Москве и МО, готовы выехать к вам в течение 2–4 часов, а удалённое сопровождение обеспечим по SLA.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — частые вопросы по DHCP Windows Server

Нужно ли ставить DHCP на контроллер домена?
Формально можно, но я так давно не делаю. Правильнее держать DHCP на отдельном инфраструктурном сервере и поднимать второй узел для DHCP Failover.
Как избежать конфликта IP с «левым» DHCP-сервером?
В домене не авторизованный в AD DHCP-сервер Windows не начнёт выдавать адреса. Для неофициальных роутеров поможет DHCP Snooping на управляемом коммутаторе.
Какой срок аренды оптимален для офиса?
Обычно 8 суток. Для гостевой сети и Wi-Fi — 2–4 часа. Для инфраструктурных scope с редкими изменениями — 30 суток.
Для чего настраивать опцию 066 и 067?
Эти опции передают клиенту адрес TFTP-сервера и путь к загрузочному файлу. Используются для PXE и автопровижна IP-телефонов.
Сохранит ли DHCP аренды при перезагрузке?
Да, база dhcp.mdb в C:\Windows\System32\dhcp сохраняет состояние. После ребута служба встаёт за 10–30 секунд. Резервную копию делайте через Export-DhcpServer.

Подпишитесь на рассылку ITfresh

Раз в неделю мы делимся с вами полезным! Только представьте: практические гайды для руководителя IT и любого сисадмина. Мы охватываем всё: от безопасности и нюансов работы с 1С до сложных миграций и создания непробиваемых резервных копий. И, конечно, даём ценные лайфхаки, проверенные в реальных проектах. Никакой теории, только практика!

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.