Добавить в корзинуПозвонить
Найти в Дзене

Настройка DHCP сервера в Linux (isc-dhcp-server)

Проблема В офисе или домашней сети несколько компьютеров, принтеров, телефонов и других устройств. Если на каждом из них вручную прописывать IP адрес, маску, шлюз и DNS, это долго, чревато ошибками и неудобно при расширении сети. При добавлении нового устройства нужно снова лезть в настройки. К тому же статические адреса могут конфликтовать, если два администратора назначат один и тот же IP разным машинам. Решение очевидно. Нужен DHCP сервер, который будет автоматически выдавать сетевым устройствам IP адреса и другие параметры. В Windows Server такая роль есть, но если у вас уже есть Linux сервер (или старый компьютер, который можно превратить в сервер), то можно настроить DHCP на нём бесплатно и с минимальными затратами. Решение ISC DHCP Server (dhcpd) это стандартный DHCP сервер для Linux, разрабатываемый Internet Systems Consortium (ISC). Полная документация доступна на официальном сайте ISC. Он поддерживает автоматическую выдачу IP адресов из заданного пула. Резервирование (статич

Проблема

В офисе или домашней сети несколько компьютеров, принтеров, телефонов и других устройств. Если на каждом из них вручную прописывать 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.

text

sudo apt update
sudo apt install isc-dhcp-server -y

CentOS, RHEL.

text

sudo yum install dhcp-server -y

После установки служба dhcpd не запустится автоматически, так как требуется настройка.

Шаг 2. Определение сетевого интерфейса

Нужно указать, на каком сетевом интерфейсе DHCP сервер будет слушать запросы. Обычно это интерфейс, смотрящий в локальную сеть (например eth0, ens18, enp0s3). Узнайте имя интерфейса.

text

ip a

В Ubuntu, Debian отредактируйте файл /etc/default/isc-dhcp-server.

text

sudo nano /etc/default/isc-dhcp-server

Найдите строку INTERFACESv4 и укажите ваш интерфейс (можно через пробел, если несколько).

text

INTERFACESv4="ens18"

В CentOS, RHEL интерфейс указывается в /etc/sysconfig/dhcpd.

text

sudo nano /etc/sysconfig/dhcpd

Добавьте.

text

DHCPDARGS="ens18"

Шаг 3. Базовая настройка DHCP сервера

Основной конфигурационный файл это /etc/dhcp/dhcpd.conf. Сделаем резервную копию.

text

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

Откроем файл для редактирования.

text

sudo nano /etc/dhcp/dhcpd.conf

Пример минимальной конфигурации для подсети 192.168.1.0/24.

text

# Глобальные параметры
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 сервером для данной сети (рекомендуется включать).

Шаг 4. Резервирование адресов (статическое назначение)

Если нужно, чтобы определённое устройство всегда получало один и тот же IP (например принтер или сервер), используйте привязку по MAC адресу. Внутри той же секции subnet добавьте блок host.

text

host printer {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.50;
}

Можно также задать для этого хоста индивидуальные параметры (шлюз, DNS и т.п.), если они отличаются от общих.

Шаг 5. Дополнительные параметры

DHCP может передавать множество опций. Наиболее полезные.

text

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)

Шаг 6. Проверка конфигурации и запуск

После редактирования проверьте синтаксис.

text

sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

Если ошибок нет, запустите службу.

text

sudo systemctl start isc-dhcp-server # Ubuntu
sudo systemctl start dhcpd # CentOS

Включите автозапуск.

text

sudo systemctl enable isc-dhcp-server

Шаг 7. Настройка брандмауэра

DHCP использует UDP порт 67 (сервер) и 68 (клиент). Откройте порт 67 на сервере.

Для Ubuntu с ufw.

text

sudo ufw allow 67/udp

Для CentOS с firewalld.

text

sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --reload

Если сервер находится за файрволом, убедитесь, что разрешены пакеты с IP адреса 0.0.0.0 на 255.255.255.255 через порты 67 и 68. Это стандартное поведение.

Шаг 8. Проверка работы

На любом клиенте (компьютере, телефоне) включите автоматическое получение IP (DHCP). После этого проверьте, какой адрес был выдан. Можно также посмотреть логи DHCP сервера.

Ubuntu.

text

sudo tail -f /var/log/syslog | grep dhcpd

CentOS.

text

sudo tail -f /var/log/messages | grep dhcpd

Вы должны увидеть сообщения о выдаче IP адресов.

Для проверки на клиенте (Windows) выполните ipconfig /all и убедитесь, что IP принадлежит вашему пулу, а шлюз и DNS указаны верно.

Шаг 9. Мониторинг и управление арендами

Файл аренд находится в /var/lib/dhcp/dhcpd.leases. В нём хранятся все выданные адреса с указанием MAC, времени начала и окончания аренды. Просмотреть текущие аренды можно командой.

text

sudo cat /var/lib/dhcp/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.

Настройка DHCP сервера на Linux задача, которая решается за 15-20 минут, но значительно упрощает администрирование сети. Вы избавляетесь от ручного ввода IP адресов, снижаете риск ошибок и получаете централизованное управление параметрами сети. isc-dhcp-server стабильно работает годами и легко интегрируется с другими сервисами (DNS, PXE, мониторингом). Для углублённого изучения рекомендуется обратиться к официальной документации ISC DHCP и соответствующим man страницам.

Настройка DHCP-сервера в Linux - isc-dhcp-server | Андрей Коровин | Сисадмин | IT-инженер