Введение: зачем нужен DHCP и как он работает
Ручное назначение IP-адресов, маски подсети, шлюза и DNS-серверов каждому устройству в сети - это прямой путь к хаосу и ошибкам. Опечатка в одном октете приводит к конфликту адресов и недоступности сервиса. DHCP (Dynamic Host Configuration Protocol) решает эту проблему централизованно: сервер автоматически выдаёт корректные сетевые параметры клиентам при подключении.
Ядро работы DHCP - четырёхшаговый процесс DORA. Клиент отправляет широковещательный запрос Discover на поиск серверов. Один или несколько серверов отвечают сообщением Offer с предложением IP-адреса. Клиент выбирает предложение и отправляет Request для подтверждения. Сервер фиксирует аренду ответом Acknowledge. Вся процедура занимает доли секунды.
Ключевые термины, с которыми вы будете работать: scope (область) - диапазон адресов для конкретной подсети, lease (аренда) - временной интервал, на который выдаётся адрес, и reservation (резервирование) - привязка фиксированного IP к MAC-адресу устройства. Мы разберём настройку на Windows Server и Linux с пошаговыми инструкциями, готовыми к применению.
Перед началом убедитесь, что сервер, на который вы устанавливаете роль DHCP, сам имеет статический IP-адрес. Это обязательное требование - DHCP-сервер с динамическим адресом создаст петлю неопределённости в сети.
Установка и базовая настройка DHCP сервера на Windows Server
Установка роли DHCP на Windows Server выполняется через стандартный мастер добавления ролей и компонентов. Процесс одинаков для Windows Server 2016, 2019, 2022 и 2026. После установки обязательна авторизация сервера в Active Directory - без неё служба не начнёт раздавать адреса клиентам.
Добавление роли DHCP через Server Manager
Откройте Server Manager и выберите Add Roles and Features. На экране Before You Begin нажмите Next. Выберите Role-based or feature-based installation и укажите целевой сервер из пула. В списке ролей отметьте DHCP Server - мастер предложит добавить необходимые компоненты управления, подтвердите.
На шаге Features оставьте значения по умолчанию. Экран DHCP Server содержит краткое описание роли - прочитайте и нажмите Next. Завершите установку кнопкой Install. Процесс занимает одну-две минуты. После завершения в Server Manager появится уведомление о необходимости завершить настройку - нажмите на него для запуска мастера пост-установки.
Мастер пост-установки предложит создать группы безопасности DHCP Administrators и DHCP Users. Первая даёт права на управление конфигурацией DHCP, вторая - только на просмотр. Если вы работаете в доменной среде, делегируйте эти группы через AD для разграничения доступа.
Авторизация DHCP-сервера в Active Directory
Авторизация - это механизм защиты от несанкционированных DHCP-серверов в домене. Неавторизованный сервер не отвечает на запросы клиентов. Откройте консоль DHCP из меню Tools в Server Manager. Если сервер не авторизован, его иконка будет с красной стрелкой вниз. Щёлкните правой кнопкой по имени сервера и выберите Authorize. Через несколько секунд иконка сменится на зелёную стрелку вверх.
Для принудительной авторизации через командную строку используйте netsh:
netsh dhcp add server <имя_сервера> <IP_адрес>
Эта команда требует прав Enterprise Admin. После авторизации сервер готов к созданию областей и раздаче адресов.
Установка и базовая настройка DHCP сервера на Linux
На Linux стандартным решением выступает пакет isc-dhcp-server от Internet Systems Consortium. Он поддерживает все возможности протокола DHCP, включая динамическое обновление DNS и резервирование. Установка и минимальная конфигурация занимают не более десяти минут.
Установка и минимальная конфигурация isc-dhcp-server
Установите пакет через менеджер пакетов вашего дистрибутива:
sudo apt update && sudo apt install isc-dhcp-server -y # Debian/Ubuntu
sudo dnf install dhcp-server -y # RHEL/Rocky Linux
После установки укажите сетевой интерфейс, на котором служба будет слушать запросы. Отредактируйте файл /etc/default/isc-dhcp-server (Debian) или /etc/sysconfig/dhcpd (RHEL):
INTERFACESv4="eth1"
Теперь создайте минимальную рабочую конфигурацию в файле /etc/dhcp/dhcpd.conf:
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
Этот блок определяет подсеть 192.168.10.0/24, пул адресов от 100 до 200, шлюз по умолчанию и DNS-серверы. Параметр default-lease-time задаёт время аренды в секундах (600 = 10 минут), max-lease-time - максимальное время, которое клиент может запросить.
Запустите службу и добавьте её в автозагрузку:
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-server
sudo systemctl status isc-dhcp-server
Статус должен показывать active (running). Если запуск не удался, проверьте логи: sudo journalctl -u isc-dhcp-server -f.
Настройка файрвола для DHCP-трафика
DHCP использует порты 67/UDP (сервер) и 68/UDP (клиент). Если файрвол блокирует эти порты, клиенты не получат адреса. Для UFW откройте порты командой:
sudo ufw allow 67/udp
sudo ufw allow 68/udp
sudo ufw reload
Для iptables добавьте правила:
sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 68 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4
Проверьте, что правила применились: sudo iptables -L -v | grep -E "67|68". После открытия портов клиенты в подсети начнут получать адреса из настроенного пула.
Создание и управление областями (Scopes) и пулом IP-адресов
Область (scope) - это логическая единица конфигурации DHCP, привязанная к одной подсети. Она определяет диапазон раздаваемых адресов, исключения, время аренды и дополнительные параметры. Грамотное проектирование областей исключает конфликты адресов и упрощает диагностику.
Создание новой области (Scope) в Windows Server
В консоли DHCP раскройте дерево сервера, щёлкните правой кнопкой по IPv4 и выберите New Scope. Мастер проведёт вас через пять шагов:
- Имя и описание: укажите понятное имя, например «Офисная подсеть 2-й этаж».
- Диапазон адресов: введите начальный и конечный IP. Маска подсети подставится автоматически по классу, но вы можете указать свою через CIDR-нотацию.
- Исключения: добавьте адреса, которые не должны выдаваться динамически - например, статические IP серверов и сетевого оборудования.
- Длительность аренды: значение по умолчанию - 8 дней. Измените при необходимости.
- Настройка параметров DHCP: укажите шлюз (003 Router), DNS-серверы (006 DNS Servers) и доменное имя (015 DNS Domain Name).
На последнем шаге мастер предложит активировать область - выберите Yes, I want to activate this scope now. Неактивная область не раздаёт адреса.
Определение подсети и пула адресов в dhcpd.conf
В Linux конфигурация области задаётся блоком subnet в файле dhcpd.conf. Синтаксис строгий - каждая директива заканчивается точкой с запятой, блоки обрамляются фигурными скобками. Пример расширенной конфигурации:
subnet 10.0.1.0 netmask 255.255.255.0 {
range 10.0.1.50 10.0.1.150;
range 10.0.1.200 10.0.1.220;
option routers 10.0.1.1;
option domain-name-servers 10.0.1.10, 10.0.1.11;
option domain-name "office.local";
default-lease-time 86400;
max-lease-time 604800;
}
Директива range может повторяться для создания несмежных пулов. Адреса, не попавшие ни в один range, автоматически считаются исключёнными. После изменения конфигурации перезапустите службу: sudo systemctl restart isc-dhcp-server.
Управление временем аренды адресов (Lease Time)
Время аренды определяет, как долго клиент может использовать выданный IP без повторного запроса. Слишком короткий интервал создаёт лишний трафик, слишком длинный - истощает пул адресами отключённых устройств.
Рекомендации по выбору длительности:
- Стационарные ПК в офисе: 8 дней (691200 секунд). Минимизирует служебный трафик, адреса стабильны.
- Гостевые Wi-Fi сети: 1–2 часа (3600–7200 секунд). Освобождает адреса ушедших посетителей.
- Серверная подсеть: 30 дней с резервированиями для критичных узлов.
В Windows время аренды настраивается в свойствах области на вкладке General. В Linux - параметрами default-lease-time и max-lease-time в секундах. Просмотреть активные аренды в Windows можно через консоль DHCP в разделе Address Leases, в Linux - командой dhcp-lease-list из пакета isc-dhcp-server.
Если вы переносите DHCP-сервер на новую платформу, изучите наше руководство по миграции DHCP на Windows Server 2026 - там детально разобран экспорт и импорт базы аренд с сохранением всех резервирований.
Резервирование IP-адресов (Reservations) для статических устройств
Резервирование привязывает конкретный IP-адрес к MAC-адресу устройства. Принтер, сервер или IP-камера всегда получают один и тот же адрес, но при этом управляются централизованно через DHCP. Это удобнее ручного назначения статики на каждом устройстве - вы меняете параметры (DNS, шлюз) в одном месте, и они применяются ко всем зарезервированным узлам.
Создание резервирования в Windows Server
В консоли DHCP раскройте нужную область и щёлкните правой кнопкой по папке Reservations. Выберите New Reservation. Заполните поля:
- Reservation name: имя устройства, например «Принтер бухгалтерии».
- IP address: желаемый адрес из пула области.
- MAC address: физический адрес устройства без дефисов и двоеточий.
MAC-адрес можно узнать через ipconfig /all на Windows или ip link на Linux. Для сетевых принтеров он обычно указан на наклейке или в веб-интерфейсе. После создания резервирования устройство всегда будет получать заданный IP - даже если его выключить на месяц.
Настройка статического IP через DHCP в Linux
В dhcpd.conf резервирование задаётся блоком host внутри соответствующего блока subnet:
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
host printer-accounting {
hardware ethernet 00:1A:2B:3C:4D:5E;
fixed-address 192.168.10.50;
}
}
Директива hardware ethernet указывает MAC-адрес, fixed-address - закрепляемый IP. Адрес из fixed-address должен находиться внутри подсети, но вне диапазона range, иначе возможен конфликт с динамической выдачей. После редактирования конфигурации выполните sudo systemctl restart isc-dhcp-server.
Интеграция DHCP с DNS: настройка динамического обновления записей
Динамическое обновление DNS (DDNS) автоматически создаёт и удаляет прямые (A) и обратные (PTR) записи при выдаче и освобождении аренды. Без этой настройки вы не узнаете имя хоста по IP-адресу, а клиенты не найдут друг друга по имени. В средах с Active Directory DDNS критически важен - контроллеры домена регистрируют через него служебные SRV-записи.
Для глубокой настройки DNS в смешанных средах обратитесь к нашему руководству по DNS-маршрутизации Linux, Windows и BSD - там разобрана интеграция BIND с Active Directory и автоматическое обновление через DHCP.
Настройка динамического обновления DNS в Windows Server
Откройте свойства области в консоли DHCP и перейдите на вкладку DNS. Включите опцию Enable DNS dynamic updates according to the settings below. Доступны три режима:
- Dynamically update DNS records only if requested by the DHCP clients: обновление выполняется, только если клиент явно запросил его. Режим по умолчанию, подходит для большинства сред.
- Always dynamically update DNS records: сервер обновляет записи принудительно, даже если клиент не запрашивал. Полезно для устаревших клиентов, не поддерживающих DDNS.
- Discard A and PTR records when lease is deleted: автоматически удаляет записи при истечении или удалении аренды. Рекомендуется включить для предотвращения мёртвых записей.
Для безопасного обновления в доменной среде настройте учётную запись на вкладке Advanced → Credentials. Создайте отдельного пользователя в AD с минимальными правами и укажите его здесь - DHCP-сервер будет выполнять обновление DNS от его имени.
Интеграция DHCP с BIND DNS в Linux
Связка isc-dhcp-server и BIND требует генерации TSIG-ключа для аутентификации обновлений. Сгенерируйте ключ:
dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST dhcp-update
Скопируйте содержимое ключа из сгенерированного файла .private в оба конфигурационных файла. В /etc/bind/named.conf.local добавьте:
key "dhcp-update" {
algorithm hmac-sha256;
secret "ваш_сгенерированный_ключ";
};
zone "office.local" {
type master;
file "/etc/bind/db.office.local";
allow-update { key dhcp-update; };
};
В /etc/dhcp/dhcpd.conf добавьте глобальные директивы и описание зон:
ddns-updates on;
ddns-update-style interim;
update-static-leases on;
key dhcp-update {
algorithm hmac-sha256;
secret "ваш_сгенерированный_ключ";
}
zone office.local {
primary 127.0.0.1;
key dhcp-update;
}
zone 10.168.192.in-addr.arpa {
primary 127.0.0.1;
key dhcp-update;
}
После перезапуска обеих служб проверьте логи на наличие ошибок аутентификации. Успешное обновление записей подтвердит появление A и PTR записей в зонах BIND.
Диагностика и устранение типовых ошибок DHCP
Даже правильно настроенный DHCP-сервер может столкнуться с проблемами. Конфликты адресов, истощение пула и ошибки авторизации - три самые частые причины сбоев. Разберём каждую с конкретными методами диагностики.
Конфликты IP-адресов и как их обнаружить
Конфликт возникает, когда два устройства получают одинаковый IP. На Windows-клиенте появляется сообщение «Обнаружен конфликт IP-адресов», сетевое соединение работает нестабильно или отключается. Причина - статический адрес, вручную назначенный внутри пула DHCP, или два DHCP-сервера в одной подсети.
Для обнаружения конфликтов в Windows Server включите логирование конфликтов в свойствах сервера DHCP на вкладке Advanced. События записываются в Event Viewer в раздел Applications and Services Logs → Microsoft → Windows → DHCP-Server. Утилита dhcploc.exe (доступна в составе Windows Support Tools) показывает все DHCP-пакеты в сети и помогает найти несанкционированный сервер.
На Linux используйте tcpdump для захвата DHCP-трафика:
sudo tcpdump -i eth1 -n port 67 or port 68
Если видите ответы от двух разных IP на порт 67 - в сети два DHCP-сервера. Отключите или авторизуйте только один из них.
Истощение пула адресов: мониторинг и расширение
Истощение пула происходит, когда все адреса из диапазона range выданы клиентам. Новые устройства не могут подключиться к сети. Симптом: клиент получает APIPA-адрес вида 169.254.x.x.
В Windows Server проверьте статистику области: правый клик по области → Display Statistics. Поля In Use и Available показывают занятые и свободные адреса. Если свободных меньше 10%, расширьте диапазон или добавьте дополнительный range. В Linux используйте скрипт для подсчёта аренд:
grep "lease" /var/lib/dhcp/dhcpd.leases | wc -l
Для расширения пула добавьте ещё одну директиву range в dhcpd.conf или измените существующую. Не забудьте проверить, что новые адреса не конфликтуют со статическими назначениями в сети.
Проблемы с авторизацией DHCP-сервера в домене
Неавторизованный сервер в Windows-домене не раздаёт адреса. Иконка в консоли DHCP горит красной стрелкой. Причины: сервер не был авторизован после установки, утратил авторизацию после переименования или смены IP, либо учётная запись, выполнявшая авторизацию, не имела прав Enterprise Admin.
Решение - повторная авторизация через консоль DHCP или принудительно через netsh:
netsh dhcp add server <FQDN_сервера> <IP_адрес>
Проверьте, что сервер присутствует в списке авторизованных в Active Directory Sites and Services → Services → NetServices. Если запись отсутствует, создайте её вручную или выполните авторизацию заново с правами администратора домена.
На Linux проблемы с запуском службы чаще всего связаны с синтаксическими ошибками в dhcpd.conf. Перед перезапуском всегда проверяйте конфигурацию:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
Команда выведет строку с ошибкой и её описание. Частая проблема - отсутствие блока subnet для интерфейса, указанного в INTERFACESv4. DHCP-сервер требует явного описания подсети для каждого интерфейса, на котором он слушает запросы.
Для комплексной настройки сетевых служб на Linux изучите наше практическое руководство по Linux для IT-специалистов - там разобраны все аспекты сетевой конфигурации, от базовых утилит до VPN.
Заключение: чек-лист для проверки работоспособности DHCP-сервера
После завершения настройки пройдите по этому чек-листу. Каждый пункт подтверждает корректность одного из ключевых компонентов.
- Сервер авторизован (Windows) или служба запущена (Linux). Зелёная стрелка в консоли DHCP или статус active (running) в systemctl.
- Область активирована. В Windows область должна быть в состоянии Active, в Linux - блок subnet присутствует в конфигурации и не закомментирован.
- Клиент получает IP из нужного диапазона. Подключите тестовый компьютер, выполните
ipconfig /all(Windows) илиip addr show(Linux). Адрес должен быть из заданного range. - DNS-записи обновляются. Проверьте наличие A и PTR записей для тестового клиента в DNS-зоне. На Windows используйте оснастку DNS, на Linux -
dig <имя_клиента> @<DNS-сервер>. - Резервирования работают. Устройство с зарезервированным MAC-адресом всегда получает заданный IP, даже после перезагрузки и истечения аренды.
Если все пять пунктов пройдены, DHCP-сервер настроен корректно и готов к промышленной эксплуатации. Для углублённого изучения смежных тем - настройки DNS и сетевой маршрутизации - обратитесь к соответствующим разделам базы знаний. Регулярно проверяйте статистику областей и обновляйте конфигурацию при изменении топологии сети.