Блог / Статьи

Полезная информация для вашего хостинга

Механизмы функционирования DHCP-протокола

Механизмы функционирования DHCP-протокола

DHCP представляет собой протокол прикладного уровня стека TCP/IP, предназначенный для автоматического присвоения IP-адресов сетевым устройствам. Его полное название - Dynamic Host Configuration Protocol - прямо указывает на основную функцию. Вместо ручной настройки каждого устройства в локальной сети (что особенно проблематично для крупных инфраструктур из-за трудоемкости и риска ошибок), используется автоматизированный механизм DHCP.

Первоначально спецификация протокола была опубликована в 1993 году в документе RFC 1531, позже доработанная версия получила номер RFC 2131, которая остается актуальной и сегодня. Помимо базовой функции назначения адресов, протокол упрощает диагностику соединений и переходы между подсетями, сохраняя служебные записи в журналах для администратора.

Алгоритм действия DHCP

После ознакомления с предназначением протокола возникает вопрос: как именно он функционирует? Процесс получения адреса состоит из четырех этапов, образующих аббревиатуру DORA: Discovery, Offer, Request, Acknowledgement.

Разберем подробнее алгоритм DORA работы DHCP.

DHCP-протокол и процедура получения IP-адреса - DORA
Discovery (обнаружение)
На начальном этапе клиент находится в состоянии INIT без назначенного IP-адреса. Он рассылает широковещательный запрос DHCPDISCOVER всем устройствам локальной сети. DHCP-сервер может быть реализован на маршрутизаторе, коммутаторе или выделенном сервере.

Часто в сети присутствует несколько DHCP-серверов. Сервер ожидает запросы на порту 67, а клиент принимает ответы на порту 68.

Offer (предложение)
DHCP-сервер отвечает на запрос предложением IP-адреса из пула доступных адресов (SCOPE), настроенного администратором. Например, можно задать диапазон 192.0.0.10-192.0.0.254.

Возможно исключение (exclude) определенных адресов из пула, например, диапазон 192.0.0.100-192.0.0.200. Также существует возможность постоянной привязки (reservation) конкретного адреса к определенному устройству по его MAC-адресу.

DHCPOFFER может быть отправлен как широковещательно, так и целевым образом, используя MAC-адрес клиента для идентификации.

Request (требование)
Получив DHCPOFFER, клиент отправляет DHCPREQUEST, подтверждая принятие предложенного адреса. Это широковещательное сообщение информирует все DHCP-серверы о выборе конкретного адреса.

Acknowledgement (подтверждение)
Финальным этапом становится отправка DHCPACK от сервера клиенту. Это сообщение окончательно закрепляет IP-адрес за клиентом и определяет срок его использования.

При наличии нескольких DHCP-серверов в сети, клиент в состоянии INIT выбирает первый полученный ответ. Однако при повторном подключении отдается предпочтение ранее использовавшемуся серверу, и наоборот, сервер запоминает своих клиентов.

dhcp1

Время аренды IP-адресов

Когда DHCP-сервер предоставляет IP-адрес, он фиксирует временную привязку этого адреса к клиенту. Этот временной интервал называется арендой (lease time). Стандартное значение аренды составляет 24 часа, однако администратор может настроить его продолжительность от нескольких дней до месяцев.

Предоставление адресов во временное пользование обусловлено важными причинами. Во-первых, это оптимизирует использование IP-адресов: неактивные устройства не занимают адреса. Во-вторых, обеспечивает возможность получения уникального адреса новыми устройствами при подключении.

После получения адреса клиент переходит в состояние BOUND и работает стабильно до достижения половины срока аренды (T1). В этот момент начинается процесс обновления аренды (RENEWING), при котором клиент направляет прямой запрос DHCPREQUEST, а сервер подтверждает его DHCPACK, обнуляя таймер аренды.

Если подтверждение не получено, клиент повторяет запрос через половину T1. При повторной неудаче попытки происходят через уменьшающиеся интервалы времени, пока не достигается порог T2 (87.5% срока аренды). После T2 запросы становятся широковещательными, позволяя другим серверам ответить при недоступности основного.

Методы распределения IP-адресов

DHCP-сервер может использовать три основных метода назначения адресов:

Статическое выделение (static allocation) напоминает ручную настройку, но с централизованным управлением. Администратор связывает конкретные MAC-адреса с определенными IP, которые остаются закрепленными за устройствами постоянно.

Автоматическое выделение (automatic allocation) предоставляет адрес из пула навсегда, без ограничения по времени. Адрес остается за клиентом даже после отключения.

Динамическое выделение (dynamic allocation) предполагает временное назначение адреса на период аренды. Это наиболее гибкий метод, когда адрес возвращается в пул после освобождения и может быть назначен другому устройству. Обычно система старается предоставить клиенту ранее использованный адрес.

Дополнительные сообщения DHCP

Помимо базовых сообщений DORA, протокол использует другие типы сообщений:

DHCPNAK - сервер отправляет это сообщение вместо подтверждения, если запрашиваемый IP недействителен или клиент изменил подсеть.

DHCPRELEASE - клиент инициирует это сообщение для досрочного освобождения IP-адреса.

DHCPINFORM - используется клиентом для получения дополнительных сетевых параметров при уже назначенном IP-адресе.

DHCP-опции

Для корректной работы сети требуются дополнительные параметры помимо IP-адреса. Они передаются через пронумерованные опции:

Option 1 - маска подсети
Option 3 - основной шлюз
Option 6 - адреса DNS-серверов
Option 51 - срок аренды IP-адреса
Option 55 - список запрашиваемых клиентом опций в порядке приоритета

Сервер стремится предоставить запрошенные опции в указанном клиентом порядке.

dhcp2

Ретрансляция DHCP через Option 82

Option 82 содержит данные об агенте ретрансляции, который обеспечивает взаимодействие между клиентами и сервером DHCP в разных подсетях. По умолчанию широковещательный трафик ограничен границами подсети. Однако при отсутствии локального DHCP-сервера система не теряет работоспособность благодаря ретранслятору.

Ретранслятор (обычно маршрутизатор или специализированный сервер) выполняет роль посредника: принимает широковещательные сообщения из своей подсети и перенаправляет их на центральный DHCP-сервер. Ответ от сервера также проходит через ретранслятор обратно к клиенту.

Настройка PXE-загрузки через DHCP

DHCP-протокол поддерживает сетевую загрузку компьютеров по технологии PXE (Preboot eXecution Environment). Для конфигурации загрузки в режиме LEGACY BIOS используются следующие опции:

• Опция 43 - зарезервирована для передачи данных от производителей
• Опция 60 - указывает класс клиента (например, PXE-клиент)
• Опция 66 - содержит имя PXE-сервера
• Опция 67 - определяет имя файла загрузки

dhcp3

Синхронизация DHCP и DNS

DNS и DHCP должны эффективно взаимодействовать для корректной работы сети. DNS отвечает за связь доменных имен с IP-адресами, как для интернет-ресурсов, так и для устройств в локальной сети. DHCP занимается распределением IP-адресов, поэтому важно обеспечить согласованную работу этих протоколов.

В Linux-системах отсутствует интегрированная служба Active Directory, как в Windows, поэтому требуется дополнительная настройка взаимодействия. Возможны два подхода:

1. Фиксация IP-адресов за клиентами - подходит при достаточном количестве доступных адресов
2. Настройка взаимодействия серверов DHCP и DNS - более гибкое решение при ограниченном пуле адресов

Правильное взаимодействие необходимо для актуализации DNS-записей при изменении IP-адресов клиентов. Нарушение синхронизации может привести к недоступности устройств в сети.

Для реализации взаимодействия в Linux-системах можно использовать пакет dnsmasq, доступный в репозиториях Ubuntu и Debian. Процесс настройки включает четыре основных этапа, детальное описание которых выходит за рамки данной статьи.

dhcp5

Настройка интеграции DHCP и DNS

Процесс настройки взаимодействия состоит из четырех этапов:

1. Настройка сетевого окружения
Выберите стабильный компьютер (Ubuntu Server/Desktop) для роли сервера, который будет работать постоянно. Назначьте ему фиксированный IP-адрес через конфигурационный файл /etc/network/interfaces.

2. Установка dnsmasq
Установите пакет командой:

sudo apt-get install dnsmasq -y

Отредактируйте конфигурационный файл /etc/dnsmasq.conf, раскомментировав необходимые строки путем удаления символа #.

 3. Конфигурация брандмауэра
Настройте правила UFW (Ubuntu Uncomplicated Firewall):

sudo ufw allow bootps
sudo ufw allow 53/udp
sudo ufw allow 53/tcp

 4. Корректировка параметров маршрутизатора
Через веб-интерфейс роутера отключите встроенную функцию DHCP для локальной сети и перенаправьте все DNS-запросы на новый сервер. Перезапустите службу:

sudo service dnsmasq restart
sudo service network-manager restart

 Безопасность протокола DHCP

Главный недостаток DHCP связан с уязвимостью процесса DORA:
- Широковещательная природа сообщений позволяет злоумышленнику подставить свой сервер
- Первый ответивший сервер получает возможность контролировать клиентов
- Атакующий может перехватить управление сетевыми подключениями

Дополнительная проблема - использование ненадежного протокола UDP, допускающего потери данных и ошибки передачи, что особенно критично при PXE-загрузке.

Итоги

DHCP остается основным протоколом автоматической настройки сетей, несмотря на имеющиеся недостатки. Мы рассмотрели ключевые аспекты работы протокола: процесс DORA, основные опции, методы распределения адресов и взаимодействие с другими сетевыми службами. Полученные знания помогут эффективно использовать DHCP в современных сетевых инфраструктурах.