Настройка сервера DHCP для автоматического распределения IP-адресов
Настройка сервера DHCP для автоматического распределения IP-адресов
В современной сетевой инфраструктуре ручная настройка IP-адресов на каждом устройстве является неэффективной и чреватой ошибками практикой. Представьте офис на 200 компьютеров: если администратору придется вручную прописывать адрес, маску и шлюз на каждом из них, любое изменение структуры сети приведет к дням простоя. Решением этой проблемы является протокол DHCP (Dynamic Host Configuration Protocol).
Принцип работы DHCP
DHCP — это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры сети (маску подсети, шлюз по умолчанию, адрес DNS-сервера). Работа протокола строится по модели «клиент-сервер».
Процесс получения адреса часто называют аббревиатурой DORA, по первым буквам четырех основных этапов:
- Discovery (Поиск): Клиент, подключившись к сети, отправляет широковещательный запрос по всей сети, пытаясь найти DHCP-сервер.
- Offer (Предложение): Сервер получает запрос и, если у него есть свободные адреса, отправляет клиенту предложение с конкретным IP-адресом.
- Request (Запрос): Клиент принимает предложение и отправляет серверу запрос на подтверждение использования этого адреса.
- Acknowledge (Подтверждение): Сервер регистрирует выдачу адреса и отправляет клиенту окончательное подтверждение вместе с дополнительными настройками (время аренды, DNS и т.д.).
Установка DHCP-сервера
В качестве эталонного примера мы рассмотрим настройку ISC DHCP Server — одного из самых распространенных и стабильных решений для операционных систем семейства Linux (Debian/Ubuntu). Несмотря на появление более новых аналогов (например, Kea), ISC DHCP остается стандартом де-факто во многих корпоративных сетях.
Для установки пакета выполните команду:
sudo apt update
sudo apt install isc-dhcp-server
После установки служба может попытаться запуститься и выдать ошибку. Это нормальное поведение, так как конфигурационный файл еще не настроен.
Базовая конфигурация
Основной файл конфигурации находится по пути /etc/dhcp/dhcpd.conf. Перед началом работы рекомендуется сделать резервную копию оригинального файла:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
Откройте файл для редактирования. Конфигурация состоит из глобальных параметров и объявлений подсетей.
Глобальные параметры
В начале файла обычно указываются параметры, общие для всех подсетей. Ключевыми являются параметры времени аренды (lease time).
default-lease-time 600;
max-lease-time 7200;
authoritative;
- default-lease-time: Время в секундах, на которое выдается IP-адрес, если клиент не запросил иное (здесь 600 секунд = 10 минут).
- max-lease-time: Максимально возможное время аренды, даже если клиент просит больше (7200 секунд = 2 часа).
- authoritative: Этот параметр сообщает, что данный сервер является главным и единственным источником правды для этой сети. Если сервер видит клиента с неправильным адресом, он отправит команду
DHCPNAK, заставляя клиента переполучить адрес.
Объявление подсети (Subnet)
Это самая важная часть настройки. Вы должны описать подсеть, в которой сервер будет раздавать адреса. Если сетевой интерфейс сервера имеет IP 192.168.1.10 с маской 255.255.255.0, то конфигурация подсети должна соответствовать этим параметрам.
Пример конфигурации:
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 8.8.8.8, 1.1.1.1;
option domain-name "local.lan";
}
Разберем каждую строку:
subnet ... netmask ...: Определяет сеть. Сервер будет обслуживать запросы только с интерфейсов, принадлежащих этой сети.range: Диапазон выдаваемых адресов (пул). В данном примере клиенты будут получать адреса от.100до.200. Адреса вне этого диапазона (например, с.1по.99) можно использовать для статической настройки серверов и принтеров.option routers: Шлюз по умолчанию (gateway), через который клиенты будут выходить в интернет.option domain-name-servers: Адреса DNS-серверов, которые будут переданы клиентам.
Расчет доступных хостов
При планировании диапазона range важно понимать емкость вашей подсети. Количество доступных адресов для хостов рассчитывается по формуле:
где — количество доступных адресов для устройств, — количество бит, отведенных под хостовую часть адреса, а вычитание необходимо для исключения адреса самой сети и широковещательного адреса.
Например, для маски 255.255.255.0 (или /24) под хост отводится 8 бит ().
адреса. Если вы выделите в range 100 адресов, у вас останется 154 адреса для статических назначений.
Привязка к сетевому интерфейсу
По умолчанию сервер может пытаться слушать все интерфейсы. Для безопасности и стабильности нужно явно указать, на каком порту работать.
Отредактируйте файл /etc/default/isc-dhcp-server:
INTERFACESv4="eth0"
Замените eth0 на имя вашего сетевого интерфейса (узнать его можно командой ip a).
Резервирование адресов (Static Leases)
В администрировании часто требуется, чтобы определенное устройство (например, сетевой принтер или файловый сервер) всегда получало один и тот же IP-адрес, но при этом настраивалось через DHCP. Это называется резервированием.
Для этого нужно знать MAC-адрес устройства. В файл dhcpd.conf добавляется блок host:
host office-printer {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.50;
}
- hardware ethernet: Уникальный физический адрес (MAC) сетевой карты устройства.
- fixed-address: IP-адрес, который всегда будет выдаваться этому MAC-адресу.
Важно: Назначаемый адрес (192.168.1.50) желательно выбирать вне диапазона range (.100–.200), чтобы избежать конфликтов, если пул переполнится.
Запуск и отладка
После внесения всех изменений сохраните файл и перезапустите службу:
sudo systemctl restart isc-dhcp-server
Проверьте статус службы:
sudo systemctl status isc-dhcp-server
Если служба не запустилась (статус failed), искать причину нужно в системных логах. DHCP-сервер очень чувствителен к синтаксису (например, пропущенная точка с запятой).
Посмотреть логи можно командой:
journalctl -u isc-dhcp-server -e
Или в файле системного журнала:
tail -f /var/log/syslog
Управление арендой (Lease Time)
Выбор времени аренды (default-lease-time) — это баланс между стабильностью и утилизацией адресов.
- Короткая аренда (например, 1 час): Подходит для публичных Wi-Fi сетей (кафе, метро). Клиенты постоянно приходят и уходят. Если дать аренду на сутки, пул адресов быстро закончится, так как адреса будут числиться занятыми за устройствами, которых уже нет в сети.
- Длинная аренда (например, 7 дней): Подходит для офисных сетей со стационарными ПК. Это снижает широковещательный трафик в сети, так как клиенты реже обновляют свои адреса.
Файл, где сервер хранит информацию о выданных арендах, обычно находится здесь: /var/lib/dhcp/dhcpd.leases. Это текстовый файл, который можно просмотреть, чтобы узнать, кому и когда были выданы адреса.
Итоги
Настройка DHCP-сервера — фундаментальный навык системного администратора. Правильно настроенная служба обеспечивает бесперебойное подключение новых устройств и упрощает управление сетью.
- Автоматизация: DHCP избавляет от ручной настройки сети на клиентах, используя процесс DORA.
- Конфигурация: Основные настройки (подсеть, шлюз, DNS) задаются в блоке
subnetфайлаdhcpd.conf. - Резервирование: Для критически важных устройств используйте привязку IP к MAC-адресу через блок
host. - Диагностика: При ошибках всегда проверяйте синтаксис конфига и системные логи
/var/log/syslog. - Планирование: Разделяйте адресное пространство на пулы для динамической раздачи и зоны для статических адресов.