Протокол конфигурации динамического хоста (DHCP)
Протокол конфигурации динамического хоста (Dynamic Host Configuration Protocol, DHCP) — это технология, позволяющая автоматически распределять IP-адреса между устройствами сети и задавать им дополнительные сетевые настройки. Основные преимущества использования протокола:
- Экономит время на ручную настройку подключаемых к сети устройств.
- Упрощается управление сетевой инфраструктурой.
- Устраняет сетевые конфликты из-за дублирования IP-адресов.
- Упрощает масштабирование сетей.
Первые решения для автоматизации процесса настройки сетевых устройств предпринимались еще в 1980-е годы, но они не отвечали всем стоящим перед ними вызовам. Протокол DHCP впервые был опубликован в 1993 году, но со временем сильно изменился.
Принцип работы DHCP
Процесс подключения через DHCP-сервер состоит из четырех этапов, которые объединяют в аббревиатуру DORA:
- Discovery (обнаружение) — устройство подключается к сети и запрашивает у серверов настройки. Сервером может выступать Wi-Fi-роутер, маршрутизатор или коммутатор.
- Offer (предложение) — DHCP-сервер предлагает устройству незанятый IP-адрес и другие настройки.
- Request (запрос) — устройство уведомляет DHCP-сервер, что принимает настройки и теперь использует их для работы в сети.
- Acknowledgement (подтверждение) — DHCP-сервер закрепляет за устройством адрес и срок его использования. По окончании срока использования или при перезагрузке устройства процедура повторяется.
Может показаться, что этапы Offer и Request избыточны, а DHCP-сервер мог бы сразу назначить устройству адрес. Однако они поддерживают стабильность системы: гарантируют, что адрес уникален, настройки согласованы, а конфликты исключены. Например, в сети может быть несколько DHCP-серверов, и без этих этапов каждый бы назначал устройству адрес.
Структура DHCP-пакета
DHCP-пакеты всегда имеют одинаковую структуру
| Название поля | Описание | Длина, байт |
|---|---|---|
op |
Тип сообщения: запрос (0) или ответ (1) |
1 |
htype |
Тип устройства. Чаще всего используется 1 — Ethernet |
1 |
hlen |
Длина MAC-адреса |
1 |
hops |
Число маршрутизаторов на пути от устройства до сервера | 1 |
xid |
Идентификатор пакета | 4 |
secs |
Число секунд со времени получения IP-адреса | 2 |
flags |
Настройки доставки пакетов между устройством и сервером. Чаще всего используется только первый бит поля, определяющий, назначен ли устройству IP-адрес | 2 |
ciaddr |
Текущий IP-адрес устройства | 4 |
yiaddr |
IP-адрес, который предлагается устройству | 4 |
siaddr |
IP-адрес сервера с конфигурацией или операционной системой. Используется для бездисковых рабочих станций | 4 |
giaddr |
IP-адрес ретранслятора, если сервер и устройство находятся в разных подсетях | 4 |
chaddr |
MAC-адрес устройства | 16 |
sname |
Имя сервера, предоставляющего дополнительный файл для настройки | 64 |
file |
Имя дополнительного файла | 128 |
options |
Список параметров, задаваемых администратором сети | Зависит от содержания |
Опции DHCP
DHCP-сервер может передавать клиенту множество дополнительных опций. Рассмотрим основные из них:
- Маска подсети (например,
255.255.255.0) — определяет, какие устройства находятся в локальной сети, а какие — в глобальной. Необходима для правильного направления данных и разграничения доступов. - Время аренды IP-адреса.
- Шлюз по умолчанию — служит межсетевым маршрутизатором, обеспечивая обмен пакетами между сетями с разными протоколами.
- DNS-серверы — позволяют пользователям обращаться к сайтам по именам, а не по IP-адресам.
- NTP-сервер (Network Time Protocol) — предоставляет точное время сети для синхронизации при сохранении логов, сертификатов и других операций.
- TFTP-сервер или Boot-сервер — предоставляет операционную систему, прошивку или начальную конфигурацию. Применяется для бездисковых рабочих станций, таких как маршрутизаторы, коммутаторы или IP-телефоны.
- Доменное имя — название домена сети (например,
company.ru). Упрощает доступ к ресурсам в локальной сети, удобная настройка для корпоративных сетей.
Полный список опций можно посмотреть в RFC 2132
Управление IP-адресами в DHCP
В зависимости от реализации DHCP-сервер может распределять IP-адреса тремя методами:
- Статическое распределение — IP-адреса привязываются к MAC-адресам устройств. Используется для статических устройств: роутеры, принтеры, серверные машины и другое.
- Динамическое распределение — случайные адреса выдаются на определенный срок, что позволяет освобождать их и повторно распределять между новыми устройствами в сети.
- Автоматическое распределение — новым устройствам адреса выдаются случайно, как и при динамическом, но на неопределенный срок и из заранее заданного диапазона. При повторном входе устройству будет назначен тот же адрес, что был у него ранее.
Через DHCP-сервер сетевой администратор может тонко настраивать пул доступных адресов. Например, задавать разные диапазоны для Wi-Fi-клиентов и для статических устройств.
Рассмотрим пример настройки DHCP-сервера со следующими параметрами:
- количество доступных адресов — для 100 устройств;
- время аренды адреса — 5 часов;
- принтеру зарезервирован статический адрес.
Для этого в конфигурационном файле dhcpd.conf понадобятся следующие настройки:
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 subnet-mask 255.255.255.0; # Маска подсети
option domain-name-servers 8.8.8.8; # DNS-сервер Google
default-lease-time 18000; # Время аренды по умолчанию, в секундах
max-lease-time 18000; # Максимальное время аренды
}
host printer {
hardware ethernet 60:A4:4C:**:**:**; # MAC-адрес принтера
fixed-address 192.168.1.10; # Зарезервированный IP-адрес
}
Безопасность и управление рисками в DHCP
Протокол DHCP не имеет встроенной аутентификации, поэтому без дополнительной защиты уязвим для атак злоумышленников. В сетях, где это критически важно, например военных, протокол не используют. Рассмотрим основные типы уязвимостей:
- Поддельный DHCP-сервер — злоумышленник подключает к сети свой DHCP-сервер, который вместо легитимного выдает свои настройки. Так он может перехватывать трафик, перенаправлять пользователя на фишинговые сайты, модифицировать отправляемые им данные.
- Поддельные DHCP-запросы — злоумышленник отправляет поддельные DHCP-запросы, чтобы присвоить все доступные IP-адреса пула или перегрузить сервер. Это может сделать сеть недоступной, что особенно опасно для корпоративных сетей, или обеспечить поддельному серверу перехват запросов.
- Поддельный клиент — если у клиента сети статический IP-адрес, злоумышленник может выдать себя за него и получить его доступы. Например, выдать свой компьютер за компьютер сотрудника компании, подделав MAC-адрес. Также это может вызвать сбой в работе другого устройства с этим адресом.
- Подмена пакетов — на этапе передачи устройству настроек (Offer) злоумышленник может подменить DHCP-пакет своим. Это поможет ему перехватывать трафик и перенаправлять пользователя на вредоносные ресурсы, как и в случае с подменой DHCP-сервера.
Чтобы устранить уязвимости, владельцам сетей доступны следующие популярные методы:
- Пароль — для небольшого офиса, кафе или домашней сети в большинстве случаев хватит надежного Wi-Fi пароля.
- Аутентификация — среди корпоративных сетей популярна аутентификация по стандарту 802.1X
, которая ограничивает доступ к предоставляемым коммутатором сервисам неавторизованным устройствам. В этом случае у каждого устройства свои учетные данные. - Опция DHCP Snooping — на коммутаторах существует опция, которая разрешает ответы только от доверенных DHCP-серверов и фильтрует пакеты от ненадежных источников.
- Анализ DHCP-пакетов — опция DHCP Snooping также ведет базу данных успешных присвоений IP-адресов. Анализ базы поможет выявить аномалии в запросах и даже физическое местоположение устройств.
- Виртуальные подсети — устройства в сети можно разграничить так, чтобы они не могли видеть DHCP-пакеты друг друга и имели разные права. Например, если вы владеете гостевой Wi-Fi сетью, вы можете отделить устройства клиентов в ней от корпоративных устройств.
- Шифрование трафика — используйте протоколы безопасности VPN или IPsec. Даже если трафик будет перехвачен, злоумышленник не сможет его расшифровать.
Для крупных сетей также рекомендуется создать резервный DHCP-сервер на случай выхода из строя основного, иначе все пользователи потеряют доступ к сети.
Использование DHCP в Yandex Cloud
В Yandex Cloud доступна настройка сетевой инфраструктуры, включающей в себя DHCP-серверы:
- Виртуальные машины Yandex BareMetal предусматривают возможность создания подсетей с автоматическим конфигурированием параметров IP-адресации. Адреса назначаются на физический интерфейс сетевой карты с фиксацией MAC-адреса, что служит дополнительной защитой. Подробнее см. в документации.
- Подсети Yandex Virtual Private Cloud позволяют управлять настройками DHCP и задавать пользователям подсети те же DNS- и NTP-серверы, что используются в вашей корпоративной сетевой инфраструктуре. Подробнее см. в документации.