DHCPv6
DHCPv6 (Dynamic Host Configuration Protocol for IPv6, протокол динамической настройки узла для IPv6) — это сетевой протокол прикладного уровня, предназначенный для автоматического назначения параметров конфигурации (IP-адреса, префиксов, DNS-серверов и других опций) узлам, работающим в сети на основе протокола IPv6. Является наследником протокола DHCP (DHCPv4) для IPv4, но учитывает особенности и расширенные возможности стека IPv6. В отличие от DHCPv4, DHCPv6 может взаимодействовать с механизмом Stateless Address Autoconfiguration (SLAAC), что приводит к наличию двух режимов работы: stateful (с отслеживанием состояний) и stateless (без отслеживания состояний).
История и предпосылки появления
С расширением использования IPv6, начавшимся в середине 2000-х годов, стало очевидно, что протокол IPv4 DHCP (RFC 2131) не может быть напрямую адаптирован для новой версии IP из-за принципиальных отличий в способах получения адресов. В IPv6 был встроен механизм SLAAC, позволяющий узлу автономно сгенерировать адрес на основе префикса, полученного от маршрутизатора, и собственного MAC-адреса. Однако SLAAC не обеспечивает передачу дополнительных параметров, таких как DNS-серверы, домен поиска, NTP-серверы и т.д.
Первая версия протокола DHCPv6 была стандартизирована в 2003 году в документе RFC 3315. Впоследствии протокол уточнялся и расширялся дополнительными RFC (например, RFC 3646 для DNS-реквизитов, RFC 3736 для stateless режима, RFC 3633 для делегирования префиксов). Наиболее существенная ревизия произошла в 2018 году с выходом RFC 8415, который объединил и уточнил предыдущие спецификации, заменив RFC 3315.
Архитектура и принцип работы
DHCPv6 функционирует по модели «клиент-сервер». Сервер DHCPv6 отвечает на запросы клиентов, которые могут быть как обычными узлами (компьютерами, смартфонами), так и сетевыми устройствами (маршрутизаторами, точками доступа).
Режимы работы
DHCPv6 определяет два основных режима, а также третий — комбинированный.
- Stateful DHCPv6 (с сохранением состояния) — сервер отслеживает все выданные адреса и параметры, ведёт их базу и продлевает время аренды (lease). Клиент получает от сервера не только адрес, но и все необходимые опции. Используется в управляемых корпоративных сетях и провайдерами.
- Stateless DHCPv6 (без сохранения состояния) — сервер не выдаёт IP-адрес; адрес клиент получает через SLAAC (от маршрутизатора), а DHCPv6 используется только для получения дополнительных параметров (опций). Этот режим снижает нагрузку на сервер и упрощает конфигурирование, особенно в больших сетях.
- Stateful + Stateless (гибридный) — сервер может работать в обоих режимах одновременно, отвечая на разные типы запросов.
Формат сообщений
DHCPv6 использует UDP-порты: клиент прослушивает порт 546, сервер — порт 547. Сообщения делятся на несколько типов:
- SOLICIT — запрос клиента на поиск сервера (широковещательный, на multicast-адрес ff02::1:2).
- ADVERTISE — ответ сервера, предлагающего конфигурацию.
- REQUEST — подтверждение выбора конкретного сервера.
- REPLY — окончательная конфигурация от сервера.
- RENEW/REBIND — продление времени аренды.
- RELEASE — освобождение адреса.
- INFORMATION-REQUEST — запрос только опций (используется в stateless режиме).
Протоколы, взаимодействующие с DHCPv6
DHCPv6 тесно связан с другими элементами IPv6-стека:
- NDP (Neighbor Discovery Protocol) — протокол обнаружения соседей, входящий в состав IPv6. Через NDP клиент получает префикс сети для SLAAC.
- SLAAC (Stateless Address Autoconfiguration) — механизм автоматической генерации адреса без DHCPv6. В режиме Stateless они взаимодополняют друг друга.
- ICMPv6 — протокол управления, используемый для ошибок и сообщений об изменении конфигурации.
Сообщения и последовательность процедуры
Stateful получение адреса
- SOLICIT → ADVERTISE (возможен пропуск этого этапа — Rapid Commit).
- REQUEST → REPLY.
При первом подключении клиент отправляет SOLICIT, и сервера, имеющие для него конфигурацию, отвечают ADVERTISE. Клиент выбирает одного сервера и шлёт REQUEST, после чего получает REPLY с адресом и опциями.
Stateless получение опций
Клиент, уже имеющий адрес от SLAAC, отправляет INFORMATION-REQUEST. Сервер отвечает REPLY, содержащим только опции (DNS, домен и т.д.).
Rapid Commit (быстрый ответ)
Опциональный механизм (RFC 3315), при котором сервер может сразу ответить REPLY на SOLICIT, минуя стадию ADVERTISE/REQUEST. Это ускоряет инициализацию.
Типы опций (DHCPv6 Options)
Опции — это поля переменной длины, несущие дополнительную информацию. Наиболее распространённые:
- Option 1: Client Identifier (DUID)
- Option 2: Server Identifier (DUID)
- Option 3: Identity Association for Non-temporary Addresses (IA_NA)
- Option 4: Identity Association for Temporary Addresses (IA_TA)
- Option 5: IA Address (адрес)
- Option 6: Option Request Option (ORO)
- Option 7: Preference
- Option 8: Elapsed Time
- Option 17: Vendor-specific Information
- Option 23: DNS Recursive Name Server (RDNSS)
- Option 24: Domain Search List (DNSSL)
- Option 31: SNTP Servers
- Option 32: Information Refresh Time
- Option 52: Status Code
Общее количество опций достигает нескольких сотен, многие из них определены дополнительными RFC.
Делегирование префиксов (Prefix Delegation)
Специфическая для DHCPv6 возможность — делегирование префиксов (Prefix Delegation, RFC 3633). Провайдер через DHCPv6 может выдать клиентскому маршрутизатору (Customer Edge, CE) не один адрес, а целый блок IPv6-префиксов (например, /48 или /56). Маршрутизатор затем разделяет этот блок на меньшие подсети (/64) и раздаёт их своим локальным сетям. Это ключевая технология для построения IPv6-сетей у провайдеров (интернет-провайдеры, крупные предприятия). Для передачи запроса на префикс используется опция IA_PD (Identity Association for Prefix Delegation).
DHCPv6 Relay Agent (ретранслятор)
Если клиент и сервер находятся в разных широковещательных доменах (L2-сегментах), прямое взаимодействие невозможно. Для этого используется агент ретрансляции (relay agent). Он принимает DHCPv6-запросы от клиента и пересылает их серверу, инкапсулируя в новое сообщение RELAY-FORW. Ответ сервера передаётся обратно через RELAY-REPL. Агент работает на маршрутизаторе или коммутаторе 3-го уровня.
DUID (DHCP Unique Identifier)
Каждый DHCPv6-клиент и сервер идентифицируется с помощью DUID — уникального идентификатора длиной до 128 бит. Существует несколько типов DUID:
- DUID-LLT (Link-Layer + Time) — на основе MAC-адреса и времени.
- DUID-EN (Enterprise Number) — на основе номера организации.
- DUID-LL (Link-Layer) — только на основе MAC-адреса.
- DUID-UUID (Universally Unique Identifier) — на основе UUID.
DUID не меняется при смене сетевого интерфейса и используется как внутренний ключ для базы данных сервера.
Применение в сетях
DHCPv6 применяется:
- У провайдеров доступа: для выдачи адресов и префиксов абонентам (поддержка CPE-устройств).
- В корпоративных сетях: для централизованного управления конфигурацией компьютеров, телефонов, принтеров, точек доступа.
- В глобальных сетях: для настройки маршрутизаторов, DNS-серверов, NTP-серверов.
- В IoT-инфраструктуре: для шестисетей низкой мощности (6LoWPAN), где DHCPv6 может работать с ограниченными ресурсами.
Критика и ограничения
- Избыточность при stateless режиме: при совместной работе с SLAAC появляется необходимость в двух различных механизмах для получения разных частей конфигурации, что увеличивает сложность.
- Зависимость от DUID: при изменении DUID (например, при замене сетевой карты) сервер может не опознать клиента и выдать новый адрес.
- Протокол относительно сложен: количество опций и типов сообщений больше, чем в DHCPv4.
- Расширение адреса: использование 128-битного адреса иногда усложняет задачу при отладке.
- Поддержка в некоторых старых устройствах: часть сетевого оборудования не поддерживает DHCPv6 должным образом.
Интересные факты
- В отличие от DHCPv4, DHCPv6 не имеет встроенного механизма «автономного выделения адреса» (как APIPA в IPv4). При неудаче может произойти отказ в доступе к сети.
- DHCPv6 может работать без сервера: в режиме DHCPv6 Client without Server клиент может запрашивать адрес через relay-агента, даже если сервер временно недоступен.
- Для радиосетей (Wi-Fi) DHCPv6 часто работает по протоколу DHCPv6 over UDP, но некоторые реализации могут использовать TCP (в основном для управления).
Источники
- RFC 8415 — Dynamic Host Configuration Protocol for IPv6 (DHCPv6)
- RFC 3315 — Original DHCPv6 standard
- RFC 3633 — IPv6 Prefix Options for DHCPv6
- RFC 3646 — DNS Configuration options for DHCPv6
- RFC 3736 — Stateless DHCPv6
- RFC 7610 — DHCPv6-Shield: Protecting against rogue DHCPv6 servers
- DNS and BIND, Fifth Edition (O’Reilly Media)
- IPv6 Essentials, Second Edition (O’Reilly Media)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →