Проблема
В офисе или домашней сети несколько компьютеров, принтеров, телефонов и других устройств. Если на каждом из них вручную прописывать IP-адрес, маску, шлюз и DNS это долго, чревато ошибками и неудобно при расширении сети. При добавлении нового устройства нужно снова лезть в настройки. К тому же, статические адреса могут конфликтовать, если два администратора назначат один и тот же IP разным машинам.
Решение очевидно нужен DHCP-сервер, который будет автоматически выдавать сетевым устройствам IP-адреса и другие параметры. В Windows Server такая роль есть, но если у вас уже есть Linux-сервер (или старый компьютер, который можно превратить в сервер), то можно настроить DHCP на нём бесплатно и с минимальными затратами.
Решение
ISC DHCP Server (dhcpd) это стандартный DHCP-сервер для Linux, разрабатываемый Internet Systems Consortium (ISC). Полная документация доступна на официальном сайте ISC. Он поддерживает:
- автоматическую выдачу IP-адресов из заданного пула;
- резервирование (статическое назначение) по MAC-адресу;
- выдачу параметров: шлюз, DNS-серверы, доменное имя, NTP-серверы, время аренды и многое другое;
- поддержку нескольких сетей (разных подсетей) на одном сервере.
Важное примечание: ISC объявила о прекращении поддержки проекта ISC DHCP в пользу новой реализации Kea, однако ISC DHCP остаётся стабильным и широко используемым решением, особенно в дистрибутивах, где он является стандартным пакетом (источник).
Мы настроим isc-dhcp-server на Ubuntu Server (инструкции подойдут и для Debian, CentOS/RHEL с небольшими изменениями). Создадим DHCP-пул для локальной сети, зарезервируем статические адреса для важных устройств (принтеры, серверы), настроим время аренды и добавим необходимые параметры.
Пошаговая инструкция
Шаг 1. Установка DHCP-сервера
Ubuntu/Debian:
В терминале пишем
sudo apt update
sudo apt install isc-dhcp-server -y
CentOS/RHEL:
В терминале пишем
sudo yum install dhcp-server -y
После установки служба dhcpd не запустится автоматически, так как требуется настройка. Подробную информацию о пакете можно найти в Debian package information или в официальных репозиториях CentOS.
Шаг 2. Определение сетевого интерфейса
Нужно указать, на каком сетевом интерфейсе DHCP-сервер будет слушать запросы. Обычно это интерфейс, смотрящий в локальную сеть (например, eth0, ens18, enp0s3). Узнайте имя интерфейса:
Для этого в терминале
ip a
В Ubuntu/Debian отредактируйте файл /etc/default/isc-dhcp-server:
sudo nano /etc/default/isc-dhcp-server
Найдите строку INTERFACESv4 и укажите ваш интерфейс (можно через пробел, если несколько):
INTERFACESv4="ens18"
В CentOS/RHEL интерфейс указывается в /etc/sysconfig/dhcpd:
sudo nano /etc/sysconfig/dhcpd
Добавьте:
DHCPDARGS="ens18"
Шаг 3. Базовая настройка DHCP-сервера
Основной конфигурационный файл — /etc/dhcp/dhcpd.conf. Сделаем его резервную копию:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
Откроем файл для редактирования:
sudo nano /etc/dhcp/dhcpd.conf
Пример минимальной конфигурации для подсети 192.168.1.0/24. Синтаксис и все опции подробно описаны в официальной документации: man dhcpd.conf и man dhcp-options.
# Глобальные параметры
option domain-name "company.local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
# Логирование (по желанию)
log-facility local7;
# Если этот DHCP-сервер является официальным для сети, раскомментируйте:
# authoritative;
# Определение подсети
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # пул адресов для автоматической выдачи
option routers 192.168.1.1; # шлюз
option domain-name-servers 192.168.1.10, 8.8.8.8; # DNS-серверы
option domain-name "company.local";
default-lease-time 600; # время аренды по умолчанию (10 минут)
max-lease-time 7200; # максимальное время аренды (2 часа)
}
Пояснения:
-
option domain-name— доменное имя, которое будет передаваться клиентам. -
option domain-name-servers— список DNS-серверов. -
default-lease-timeиmax-lease-time— время аренды IP в секундах. -
subnet— описывает подсеть; в ней задаётся пул адресов (range), шлюз (routers) и другие параметры. -
authoritative— указывает, что этот сервер является официальным DHCP-сервером для данной сети (рекомендуется включать). Подробнее в man dhcpd.conf.
Шаг 4. Резервирование адресов (статическое назначение)
Если нужно, чтобы определённое устройство всегда получало один и тот же IP (например, принтер или сервер), используйте привязку по MAC-адресу. Внутри той же секции subnet добавьте блок host:
host printer {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.50;
}
Можно также задать для этого хоста индивидуальные параметры (шлюз, DNS и т.п.), если они отличаются от общих. Описание параметра host есть в man dhcpd.conf.
Шаг 5. Дополнительные параметры
DHCP может передавать множество опций. Наиболее полезные:
-
option ntp-servers 192.168.1.10;— NTP-сервер для синхронизации времени. -
option netbios-name-servers 192.168.1.10;— WINS-сервер (если используется). -
option broadcast-address 192.168.1.255;— широковещательный адрес. -
option tftp-server-name "192.168.1.10";— TFTP-сервер (для сетевой загрузки PXE).
Полный список опций можно найти в man-странице dhcp-options (онлайн-версия).
Шаг 6. Проверка конфигурации и запуск
После редактирования проверьте синтаксис:
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf
Если ошибок нет, запустите службу:
sudo systemctl start isc-dhcp-server # Ubuntu
sudo systemctl start dhcpd # CentOS
Включите автозапуск:
sudo systemctl enable isc-dhcp-server
Шаг 7. Настройка брандмауэра
DHCP использует UDP-порт 67 (сервер) и 68 (клиент). Откройте порт 67 на сервере.
Для Ubuntu с ufw:
sudo ufw allow 67/udp
Для CentOS с firewalld:
sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --reload
Если сервер находится за файрволом, убедитесь, что разрешены пакеты с IP-адреса 0.0.0.0 на 255.255.255.255 через порты 67 и 68. Это стандартное поведение, описанное в RFC 2131.
Шаг 8. Проверка работы
На любом клиенте (компьютере, телефоне) включите автоматическое получение IP (DHCP). После этого проверьте, какой адрес был выдан. Можно также посмотреть логи DHCP-сервера:
Ubuntu:
sudo tail -f /var/log/syslog | grep dhcpd
CentOS:
sudo tail -f /var/log/messages | grep dhcpd
Вы должны увидеть сообщения о выдаче IP-адресов.
Для проверки на клиенте (Windows) выполните ipconfig /all и убедитесь, что IP принадлежит вашему пулу, а шлюз и DNS указаны верно.
Шаг 9. Мониторинг и управление арендами
Файл аренд находится в /var/lib/dhcp/dhcpd.leases. В нём хранятся все выданные адреса с указанием MAC, времени начала и окончания аренды. Просмотреть текущие аренды можно, например, командой:
sudo cat /var/lib/dhcp/dhcpd.leases
Этот файл не нужно редактировать вручную он обновляется автоматически. Подробная информация о формате файла аренд доступна в man-странице dhcpd.leases (онлайн-версия).
Шаг 10. Устранение распространённых проблем
| Проблема | Причина | Решение |
|---|---|---|
| Клиенты не получают IP | Интерфейс не указан в настройках или брандмауэр блокирует порт | Проверьте INTERFACES в /etc/default/isc-dhcp-server, откройте порт 67/udp в брандмауэре |
| Ошибка «No subnet declaration» | Не описана подсеть для интерфейса | Убедитесь, что в конфиге есть subnet, соответствующая сети, в которой работает интерфейс |
| Ошибка «No free leases» | Пул адресов исчерпан | Увеличьте пул или уменьшите время аренды |
| DHCP не запускается после правки конфига | Синтаксическая ошибка | Проверьте конфигурацию командой dhcpd -t |
| Не работает для Wi-Fi клиентов | Интерфейс смотрит в другую подсеть | Если Wi-Fi и LAN в разных подсетях, нужно добавить отдельную секцию subnet для каждой |
Расширенные настройки
-
Разделение подсетей: если сервер подключён к нескольким сетям (например, LAN и Wi-Fi), можно описать несколько секций
subnetс разными пулами. -
PXE (сетевая загрузка): добавьте опции
next-serverиfilenameдля загрузки по сети. -
Динамическое обновление DNS (DDNS): можно настроить DHCP на автоматическое добавление записей в DNS-сервер BIND. Для этого используйте директиву
ddns-update-style interim;и укажитеddns-domainname. Подробнее в man dhcpd.conf.
Настройка DHCP-сервера на Linux задача, которая решается за 15-20 минут, но значительно упрощает администрирование сети. Вы избавляетесь от ручного ввода IP-адресов, снижаете риск ошибок и получаете централизованное управление параметрами сети. isc-dhcp-server стабильно работает годами и легко интегрируется с другими сервисами (DNS, PXE, мониторингом). Для углублённого изучения рекомендуется обратиться к официальной документации ISC DHCP (kb.isc.org) и соответствующим man-страницам.







