DHCP-сервер Windows Server: установка, области и управление из PowerShell
Мы поднимали DHCP в сотне с лишним офисов — от крошечных студий на 12 мест до серьёзных дистрибьюторов с четырьмя VLAN и сотней IP-телефонов. Казалось бы, DHCP в Windows — что там сложного? Но на практике вокруг него столько подводных камней, что ни одна другая инфраструктурная служба рядом не стоит по количеству проблем. Дальше расскажу, как мы ставим DHCP, чтобы никаких сюрпризов, и сопровождаем его хитрыми скриптами.
Зачем вообще отдельный DHCP в офисе
Иногда поражаюсь: сколько компаний до сих пор живут на DHCP, который раздаёт обычный Keenetic или Mikrotik. Роутер стоит где-нибудь у входа, и все довольны. Пока у вас десяток сотрудников — вопросов нет. Но что происходит, как только появляется второй VLAN? Или, скажем, гостевая сеть? А если к этому добавить IP-телефонию или PXE-загрузку? Всё, роутер просто не справляется, он выдыхается. Вы ведь не сможете задать разные опции для разных scope, там нет резервирования по MAC-адресам, да и интеграция с DNS отсутствует как класс. Получается бардак.
Windows Server решает все эти задачи одной-единственной ролью. Мы выбираем его, потому что плюсы очевидны:
- Удобно, когда все области, все VLAN — под контролем из одной-единственной консоли, без переключения, только централизованное управление.
- Забудьте про ручную регистрацию! DHCP автоматически пропишет арендованные адреса в DNS. Это значит, что ваши клиенты моментально станут доступны по имени. Очень удобно, не правда ли?
- Боитесь, что кто-то подключит «левый» DHCP-сервер? Мы об этом позаботились! В домене эта служба просто не сможет запуститься без авторизации в Active Directory. Ваша сеть надёжно защищена.
- Надоел страх, что DHCP «упадёт»? У нас есть DHCP Failover! Это значит, два сервера работают синхронно, будь то в режиме Hot Standby для мгновенного переключения или Load Balance для равномерного распределения нагрузки. Никаких простоев!
- Не нужно изобретать велосипед! У нас уже есть сотни готовых опций. Мы говорим про PXE, автопровижининг VoIP-телефонов и даже автоматическое обнаружение VoIP VLAN. Это просто сказка для сисадмина!
И знаете, что самое классное? При всех своих невероятных возможностях эта роль абсолютно неприхотлива к ресурсам. Возьмём продакшн-сервер: там 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-интегрированной зоной |
| Шлюз | Опция 003 | IP маршрутизатора VLAN |
| Опция 066/067 | TFTP-образ для 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, а телефоны вечно не могли автоматически подтянуть прошивку. Сплошной хаос!
Что мы сделали за две рабочие смены:
- Мы развернули две виртуалки с Windows Server 2022 Standard. Разместили их, конечно, на наших собственных серверах Dell с топовыми Xeon Platinum 8280, прямо в современном дата-центре МТС. Надёжность и производительность — это про нас!
- Затем мы создали четыре отдельных scope. Каждый под свой VLAN: 10 для офиса, 20 для Wi-Fi, 30 для голосового трафика и 40 для PXE. Порядок во всём!
- Для нашего голосового VLAN 30 мы сделали кое-что особенное. Настроили опцию 066, указав адрес FTP-сервера для автоматического провижена. А ещё добавили опцию 43 с тегом голосового VLAN. Зачем? Чтобы телефоны переключались сами, без вашего участия! Разве это не магия?
- Конечно, мы сразу же включили DHCP Failover! Выбрали режим Load Balance с распределением 50/50 между двумя серверами. Максимальная отказоустойчивость и равномерная нагрузка — вот что это даёт.
- И, конечно, чтобы вы спали спокойно, мы настроили ежедневное резервное копирование. База DHCP выгружается раз в сутки с помощью Export-DhcpServer прямо в общий сетевой шар. Так что ваша критически важная информация всегда будет в безопасности.
Знаете, во сколько это обошлось клиенту? Всего 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 на контроллере домена. Так делают, потому что «экономим лицензию». Но перевод роли DC, повышение/понижение и миграция становятся адскими.
- Один большой scope на /16. Диагностика broadcast-шторма в такой сети — отдельный вид спорта.
- Опция DNS указывает на провайдерский 8.8.8.8. При наличии AD клиенты не разрешают внутренние имена.
- Нет резервирования MFU и сетевой техники. Через месяц принтер получает новый IP, и все сотрудники снова добавляют его вручную.
- Scope активен без DHCP Failover. Отказ сервера = весь офис стоит.
- Журналы DHCP не ротируются. Спустя год C:\Windows\System32\dhcp раздувается до десятков ГБ.
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.
