DHCP Options — это расширения протокола DHCP, которые позволяют серверу передавать клиенту не только IP-адрес, маску и шлюз, но и любые дополнительные параметры сети: адреса DNS, NTP, TFTP-сервера, имя загрузочного файла для PXE, информацию для VoIP-телефонов. Все опции описаны в RFC 2132 и передаются в формате TLV. В этой статье — системный разбор основных DHCP options с конфигурационными примерами для Cisco IOS и MikroTik RouterOS.
Что такое DHCP Options и как они работают
Процесс DORA
Протокол DHCP (RFC 2131) работает через четыре сообщения:
- Discover — клиент широковещательно ищет DHCP-сервер
- Offer — сервер предлагает адрес и параметры
- Request — клиент принимает предложение
- Acknowledge — сервер подтверждает выдачу
DHCP Options передаются в сообщениях Offer и ACK. Клиент может также запрашивать конкретные опции в Discover/Request через Option 55 (Parameter Request List) — список кодов опций, которые он хочет получить. Сервер отвечает только теми опциями, которые настроены и которые запросил клиент.
Формат TLV
Каждая опция кодируется в формате TLV (Type-Length-Value):
- Type — 1 байт, номер опции (0–255)
- Length — 1 байт, длина поля Value в байтах
- Value — данные переменной длины
Опции 0 (Pad) и 255 (End) не имеют полей Length и Value — это специальные маркеры. Все остальные опции следуют формату TLV строго по RFC 2132.
Таблица основных DHCP Options
| Код | Название | RFC | Тип данных | Типичное применение |
|---|---|---|---|---|
| 6 | DNS Servers | RFC 2132 | IP-адрес (список) | Адреса DNS-серверов |
| 12 | Host Name | RFC 2132 | ASCII строка | Имя хоста клиента |
| 15 | Domain Name | RFC 2132 | ASCII строка | Доменный суффикс поиска |
| 42 | NTP Servers | RFC 2132 | IP-адрес (список) | Синхронизация времени |
| 43 | Vendor Specific | RFC 2132 | Бинарные данные | Настройка VoIP, точек доступа |
| 60 | Vendor Class Identifier | RFC 2132 | ASCII строка | Идентификация типа клиента |
| 66 | TFTP Server Name | RFC 2132 | ASCII строка или IP | PXE-загрузка, IP-телефоны |
| 67 | Bootfile Name | RFC 2132 | ASCII строка | Имя файла для PXE-загрузки |
| 82 | Relay Agent Information | RFC 3046 | Подопции TLV | Информация о порте/VLAN для relay |
| 150 | TFTP Server Address (Cisco) | Cisco | IP-адрес | Cisco IP Phones (альтернатива Option 66) |
Основные DHCP Options — назначение и примеры
DHCP Option 6 — DNS Servers
RFC 2132, секция 3.8. Передаёт список IP-адресов DNS-серверов в порядке приоритета. Клиент использует первый адрес как основной, второй как резервный.
Формат: список IPv4-адресов, каждый 4 байта, минимум 4 байта (один адрес).
Cisco IOS:
ip dhcp pool LAN
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1
dns-server 192.168.1.10 8.8.8.8
MikroTik RouterOS:
/ip dhcp-server network set 0 dns-server=192.168.1.10,8.8.8.8
DHCP Option 12 — Host Name
RFC 2132, секция 3.14. Позволяет серверу передать клиенту рекомендуемое имя хоста. Важно понимать: Option 12 чаще отправляется клиентом серверу (клиент сообщает своё имя), а не наоборот. Сервер может передать имя хоста обратно в Offer, но это поведение клиентозависимо.
Формат: ASCII строка, 1–63 символа.
Практически Option 12 чаще применяется для чтения имени клиента на стороне сервера (регистрация в DNS, логирование) чем для назначения имени клиенту.
MikroTik — создание опции с именем хоста:
/ip dhcp-server option add code=12 name=hostname value="'workstation-01'"
DHCP Option Domain — Option 15 (Domain Name)
RFC 2132, секция 3.17. Передаёт доменное имя, которое клиент должен добавлять при разрешении неполных DNS-имён (DNS search domain). Например, при Option 15 = corp.local запрос fileserver резолвится как fileserver.corp.local.
Cisco IOS:
ip dhcp pool CORP
network 10.10.0.0 255.255.255.0
default-router 10.10.0.1
domain-name corp.local
dns-server 10.10.0.10
MikroTik RouterOS:
/ip dhcp-server network set 0 domain=corp.local
DHCP Option 42 — NTP Servers
RFC 2132, секция 8.3. Передаёт IP-адреса NTP-серверов для синхронизации времени. Критично для Kerberos-аутентификации (максимальное расхождение — 5 минут), SSL-сертификатов и корректного ведения логов.
Формат: список IPv4-адресов. Только IP-адреса, не доменные имена. Для передачи IP используется hex-кодировка.
Cisco IOS:
ip dhcp pool LAN
option 42 ip 192.168.1.1
MikroTik RouterOS — Option 42:
/ip dhcp-server option add code=42 name=ntp-server value=0xC0A80101
/ip dhcp-server network set 0 dhcp-option=ntp-server
Перевод IP в hex: 192=C0, 168=A8, 1=01, 1=01 → 0xC0A80101. Для двух серверов байты записываются подряд: 0xC0A80101C0A80102.
DHCP Option 66 — TFTP Server Name
RFC 2132, секция 9.4. Передаёт адрес TFTP-сервера. Используется в двух основных сценариях: PXE-загрузка клиентов и автопровизионирование IP-телефонов Cisco (совместно с Option 150).
Формат: ASCII строка (доменное имя) или IP-адрес. При передаче IP-адреса строкой — пишется как текст: "192.168.10.5".
Cisco IOS — Option 66 для PXE:
ip dhcp pool PXE
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
option 66 ascii 192.168.10.5
MikroTik RouterOS:
/ip dhcp-server option add code=66 name=tftp-server value="'192.168.10.5'"
/ip dhcp-server network set 0 dhcp-option=tftp-server
Важно: в MikroTik строковые значения оборачиваются в одинарные кавычки внутри двойных: "'значение'". Это особенность синтаксиса RouterOS для ASCII-опций.
DHCP Option 67 — Bootfile Name
RFC 2132, секция 9.5. Передаёт имя загрузочного файла на TFTP-сервере. Работает в паре с Option 66 для PXE-загрузки.
Для BIOS-клиентов стандартный файл — pxelinux.0.
Для UEFI-клиентов — bootx64.efi или grubx64.efi.
Cisco IOS — связка Option 66 + 67 для PXE:
ip dhcp pool PXE
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
dns-server 192.168.10.1
option 66 ascii 192.168.10.5
option 67 ascii pxelinux.0
MikroTik RouterOS:
/ip dhcp-server option add code=66 name=tftp-server value="'192.168.10.5'"
/ip dhcp-server option add code=67 name=bootfile value="'pxelinux.0'"
/ip dhcp-server option sets add name=pxe-options options=tftp-server,bootfile
/ip dhcp-server network set 0 dhcp-option-set=pxe-options
DHCP Option 43 — Vendor Specific Information
RFC 2132, секция 8.4. Поле для передачи вендор-специфичных данных. Содержимое интерпретируется клиентом на основе его Vendor Class (Option 60). Разные производители используют Option 43 по-разному.
Cisco IP Phones используют Option 43 для получения адреса Cisco CallManager (CUCM). Формат Cisco: подопция 0xf104 (тип=0xf1, длина=4) + IP в hex.
# Cisco IOS — Option 43 для IP Phone с CUCM 10.10.1.1
ip dhcp pool VOIP
network 10.10.1.0 255.255.255.0
default-router 10.10.1.1
option 43 hex f104.0A0A.0101
Cisco Aironet / Catalyst AP — Option 43 для WLC (Wireless LAN Controller). Формат: subtype=0xf1, length=4*N (N — число WLC), затем IP-адреса WLC.
# WLC с адресом 192.168.100.10
ip dhcp pool WIRELESS
network 192.168.100.0 255.255.255.0
default-router 192.168.100.1
option 43 hex f104.C0A8.640A
MikroTik — Option 43 для Ubiquiti UniFi:
# UniFi Controller: 192.168.1.100
# Формат Ubiquiti для Option 43: IP в виде строки
/ip dhcp-server option add code=43 name=unifi-controller value="'192.168.1.100'"
/ip dhcp-server network set 0 dhcp-option=unifi-controller
DHCP Option 60 — Vendor Class Identifier
RFC 2132, секция 9.13. Клиент отправляет эту опцию серверу, чтобы идентифицировать свой тип и производителя. Сервер использует Option 60 для определения того, какое содержимое Option 43 следует вернуть этому клиенту.
Примеры значений Option 60 от разных клиентов:
- PXE-клиент:
PXEClient:Arch:00000:UNDI:002001 - Cisco IP Phone:
Cisco Systems, Inc. IP Phone CP-7941G - Ubiquiti AP:
ubnt - Microsoft клиент:
MSFT 5.0
На Cisco IOS можно настроить разные пулы или классы для разных VCI:
# Cisco IOS — class-based DHCP для разделения клиентов по Option 60
ip dhcp class VOIP-PHONES
option 60 ascii "Cisco Systems"
ip dhcp pool MAIN
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1
class VOIP-PHONES
address range 192.168.1.200 192.168.1.250
DHCP Option 82 — Relay Agent Information
RFC 3046. Добавляется DHCP-relay агентом (коммутатором или маршрутизатором) при перенаправлении DHCP-запросов от клиента к серверу. Позволяет серверу знать с какого порта и из какого VLAN пришёл запрос.
Option 82 содержит подопции:
- Subtype 1 — Circuit-ID: идентификатор порта/VLAN (формат зависит от вендора)
- Subtype 2 — Remote-ID: идентификатор relay-агента (обычно MAC или hostname)
Применение: политики выдачи адресов на основе порта подключения, безопасность, биллинг у провайдеров, аудит.
Cisco DHCP Options — примеры настройки
Базовый DHCP pool с основными опциями
ip dhcp excluded-address 192.168.10.1 192.168.10.20
ip dhcp pool OFFICE
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
dns-server 192.168.10.5 8.8.8.8
domain-name office.local
lease 0 8
option 42 ip 192.168.10.1
option 66 ascii 192.168.10.5
option 67 ascii pxelinux.0
Настройка Option 43 для Cisco Wireless AP
# WLC IP: 10.1.1.10 = 0A.01.01.0A
# Формат: f1 (тип Cisco) + 04 (длина 4 байта) + IP в hex
ip dhcp pool WIRELESS
network 10.10.10.0 255.255.255.0
default-router 10.10.10.1
dns-server 10.1.1.5
option 43 hex f104.0A01.010A
DHCP Relay — ip helper-address
Когда DHCP-сервер находится в другой подсети, коммутатор или маршрутизатор должен перенаправлять DHCP-запросы. На Cisco это настраивается через ip helper-address на интерфейсе, обращённом к клиентам.
# На интерфейсе L3, смотрящем в сторону клиентов
interface Vlan10
ip address 192.168.10.1 255.255.255.0
ip helper-address 10.0.0.5
interface Vlan20
ip address 192.168.20.1 255.255.255.0
ip helper-address 10.0.0.5
ip helper-address перенаправляет не только DHCP (UDP 67/68), но и другие UDP-сервисы (TFTP, DNS, NetBIOS). Чтобы ограничить только DHCP:
no ip forward-protocol udp 69
no ip forward-protocol udp 137
no ip forward-protocol udp 138
Обработка Option 82 на Cisco
По умолчанию Cisco DHCP-сервер принимает запросы с Option 82. Если сервер отбрасывает их — включите:
ip dhcp relay information trust-all
На конкретном интерфейсе:
interface GigabitEthernet0/1
ip dhcp relay information trusted
Для того чтобы relay сам добавлял Option 82:
ip dhcp-server 10.0.0.5
ip dhcp relay information option
MikroTik DHCP Option — настройка в RouterOS
Создание и применение опций
В MikroTik опции создаются отдельно и затем привязываются к DHCP-сети. Это удобно — одну опцию можно использовать в нескольких сетях.
# Создать опцию DNS (Option 6)
/ip dhcp-server option add code=6 name=dns-local value=0xC0A80A0A
# Создать опцию NTP (Option 42)
/ip dhcp-server option add code=42 name=ntp-local value=0xC0A80101
# Создать опцию Domain (Option 15)
/ip dhcp-server option add code=15 name=domain-name value="'office.local'"
# Создать TFTP (Option 66)
/ip dhcp-server option add code=66 name=tftp value="'192.168.1.5'"
# Создать Bootfile (Option 67)
/ip dhcp-server option add code=67 name=bootfile value="'pxelinux.0'"
Option Sets — группировка опций
Для удобства несколько опций можно объединить в набор и применять как единое целое:
/ip dhcp-server option sets add name=pxe-boot options=tftp,bootfile
/ip dhcp-server option sets add name=full-options options=dns-local,ntp-local,domain-name
/ip dhcp-server network set 0 dhcp-option-set=pxe-boot
DHCP Option 82 MikroTik
MikroTik добавляет Option 82 при работе в режиме DHCP relay. Включается параметром add-relay-info:
# RouterOS 7 — настройка DHCP relay с Option 82
/ip dhcp-relay add \
name=relay-vlan10 \
interface=vlan10 \
dhcp-server=10.0.0.5 \
add-relay-info=yes \
local-address=10.0.0.1
При add-relay-info=yes MikroTik добавляет:
- Circuit-ID (subtype 1): имя интерфейса, с которого пришёл запрос
- Remote-ID (subtype 2): MAC-адрес интерфейса relay-агента
Проверить работу relay:
/ip dhcp-relay print
/ip dhcp-relay monitor
Различия RouterOS v6 и v7
В RouterOS 6 синтаксис DHCP relay:
/ip dhcp-relay add name=relay1 interface=ether2 dhcp-server=10.0.0.5 local-address=10.0.0.1
В RouterOS 7 добавлен параметр add-relay-info для Option 82 и улучшена работа с DHCP option sets. Базовый синтаксис создания опций идентичен в обеих версиях.
DHCP Relay и Option 82
Зачем нужен DHCP Relay
DHCP Discover — широковещательный пакет. Маршрутизаторы по умолчанию не пропускают broadcast между подсетями. Если DHCP-сервер находится в другой подсети от клиентов — нужен relay-агент.
Relay-агент получает broadcast от клиента, преобразует его в unicast и пересылает на DHCP-сервер. Сервер отвечает relay-агенту, тот возвращает ответ клиенту.
Option 82 — Circuit-ID и Remote-ID
Option 82 (RFC 3046) добавляется relay-агентом и содержит информацию о точке подключения клиента:
Circuit-ID (subtype 1) — идентифицирует порт/VLAN на коммутаторе. Формат зависит от вендора. Cisco обычно использует: имя_коммутатора/номер_порта или Vlan_ID/Port_ID.
Remote-ID (subtype 2) — идентифицирует сам relay-агент. Обычно это MAC-адрес или hostname устройства.
Схема работы DHCP Relay с Option 82
[Клиент] --broadcast--> [Коммутатор/Relay]
|
Добавляет Option 82:
Circuit-ID = "Gi0/1:Vlan10"
Remote-ID = "aa:bb:cc:dd:ee:ff"
|
unicast
v
[DHCP Server]
Принимает решение на основе
Circuit-ID и Remote-ID
|
unicast ответ
v
[Relay] -> [Клиент]
Cisco — настройка Option 82 на коммутаторе
# Включить DHCP snooping (добавляет Option 82 на Catalyst)
ip dhcp snooping
ip dhcp snooping vlan 10,20,30
# Указать доверенный uplink порт
interface GigabitEthernet1/0/24
ip dhcp snooping trust
# Клиентские порты — ненадёжные (по умолчанию)
# Option 82 добавляется автоматически на ненадёжных портах
# На маршрутизаторе — принять Option 82 от relay
ip dhcp relay information trust-all
Cisco vs MikroTik — различия в Option 82
| Параметр | Cisco IOS | MikroTik RouterOS |
|---|---|---|
| Включение relay | ip helper-address |
/ip dhcp-relay add |
| Option 82 | ip dhcp snooping / relay info | add-relay-info=yes |
| Circuit-ID формат | Vlan/Port или имя интерфейса | Имя интерфейса RouterOS |
| Remote-ID | MAC коммутатора | MAC интерфейса relay |
| Фильтрация по Option 82 | Через DHCP class / pools | Не поддерживается нативно |
DHCP Options для PXE, VoIP и OpenVPN
PXE Boot — Option 66 и 67
PXE (Preboot Execution Environment) требует двух опций: адреса TFTP-сервера (Option 66) и имени загрузочного файла (Option 67). UEFI и BIOS-клиенты требуют разные файлы.
Cisco IOS — раздельные пулы для BIOS и UEFI:
# Для BIOS-клиентов (Option 60 содержит "PXEClient:Arch:00000")
ip dhcp pool PXE-BIOS
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
option 66 ascii 192.168.10.5
option 67 ascii pxelinux.0
# Для UEFI-клиентов (Option 60 содержит "PXEClient:Arch:00007")
ip dhcp pool PXE-UEFI
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
option 66 ascii 192.168.10.5
option 67 ascii bootx64.efi
MikroTik RouterOS — PXE:
/ip dhcp-server option add code=66 name=pxe-tftp value="'192.168.10.5'"
/ip dhcp-server option add code=67 name=pxe-file value="'pxelinux.0'"
/ip dhcp-server option sets add name=pxe options=pxe-tftp,pxe-file
/ip dhcp-server network set 0 dhcp-option-set=pxe
Cisco VoIP — Option 43 и Option 150
Cisco IP Phone при загрузке запрашивает адрес CUCM (Cisco Unified Communications Manager). Cisco использует два механизма:
- Option 150 — Cisco-специфичная опция, IP-адрес TFTP-сервера (где лежат конфиги телефонов)
- Option 43 — стандартная vendor-specific с адресом CUCM в формате Cisco
# Cisco IOS — DHCP pool для IP Phone
# Option 150: TFTP = 10.1.1.50
# Option 43: CUCM = 10.1.1.10
ip dhcp pool VOIP
network 10.1.1.0 255.255.255.0
default-router 10.1.1.1
dns-server 10.1.1.5
option 150 ip 10.1.1.50
option 43 hex f104.0A01.010A
Hex для Option 43: f1 (Cisco subtype) + 04 (4 байта) + IP 10.1.1.10 = 0A.01.01.0A → f104.0A01.010A
OpenVPN — dhcp-option push
OpenVPN позволяет серверу передавать клиентам сетевые параметры через директиву push "dhcp-option ..." в конфиге сервера. Это не стандартный DHCP, но семантика опций аналогична.
# /etc/openvpn/server.conf
# DNS-серверы для клиентов
push "dhcp-option DNS 10.0.0.1"
push "dhcp-option DNS 10.0.0.2"
# Домен поиска
push "dhcp-option DOMAIN corp.local"
# NTP-сервер
push "dhcp-option NTP 10.0.0.1"
# Маршрут для внутренней сети
push "route 192.168.0.0 255.255.0.0"
# Отключить DNS-утечки (Windows)
push "block-outside-dns"
На стороне клиента OpenVPN применяет полученные dhcp-option автоматически (при наличии поддержки в конкретном клиенте).
Частые ошибки при настройке DHCP Options
Неверный тип данных — IP вместо ASCII или наоборот
В Cisco IOS ключевое слово после номера опции определяет тип:
option 66 ip 192.168.10.5 # передаёт 4 байта IP
option 66 ascii 192.168.10.5 # передаёт строку "192.168.10.5"
Часть клиентов ожидает ASCII, часть — бинарный IP. Для TFTP-сервера (Option 66) большинство клиентов ожидают ASCII. Для DNS (Option 6) — бинарный IP. Проверяйте через Wireshark.
Ошибка кодировки в MikroTik — забытые кавычки
# Неправильно — RouterOS интерпретирует как число
/ip dhcp-server option add code=15 name=domain value="office.local"
# Правильно — одинарные кавычки внутри двойных
/ip dhcp-server option add code=15 name=domain value="'office.local'"
Без одинарных кавычек RouterOS попытается интерпретировать значение как hex или число. Строковые значения всегда оборачивайте в "'...'".
Конфликт relay — сервер отбрасывает Option 82
Cisco DHCP-сервер по умолчанию может отбрасывать запросы с Option 82, пришедшие от relay, если не настроено доверие:
# Симптом: клиенты не получают адреса через relay
# Диагностика:
debug ip dhcp server events
# Решение:
ip dhcp relay information trust-all
# или на интерфейсе:
interface Vlan10
ip dhcp relay information trusted
Несовпадение VLAN и Circuit-ID
Если на DHCP-сервере настроена политика выдачи адресов на основе Circuit-ID из Option 82, и формат Circuit-ID изменился (переименовали интерфейс, сменили коммутатор) — клиенты перестанут получать адреса из правильного диапазона.
Диагностика: захватить DHCP-трафик на сервере и проверить содержимое Option 82:
tcpdump -i eth0 -n port 67 or port 68 -vv
Клиент игнорирует опцию
Не все клиенты обрабатывают все опции. Windows в домене игнорирует Option 42 (NTP управляется через W32tm). Некоторые Linux-дистрибутивы игнорируют Option 42 если не настроен dhclient.conf.
Проверить какие опции запрашивает клиент — Option 55 в Discover-пакете:
tcpdump -i eth0 port 67 -vv | grep "Parameter Request"
DHCP Options для PXE, VoIP и VPN — чек-лист настройки
- ☐ Проверена синхронизация времени на DHCP-сервере до настройки Option 42
- ☐ IP-адреса в hex-опциях переведены корректно (побайтово)
- ☐ Строковые значения в MikroTik обёрнуты в
"'...'" - ☐ Cisco DHCP-сервер настроен на доверие Option 82 (
trust-all) - ☐ PXE: оба файла для BIOS и UEFI присутствуют на TFTP-сервере
- ☐ Option 43 для VoIP: hex-значение проверено по формуле вендора
- ☐ DHCP lease обновлён на клиентах после изменения опций
- ☐ Клиенты проверены через Wireshark — Option присутствует в ACK
- ☐ Option 55 (Parameter Request List) клиента включает нужные опции
- ☐ Для OpenVPN: push-директивы добавлены в секцию сервера, не клиента
FAQ по DHCP Options
В чём разница между Option 66 и Option 150?
Option 66 — стандартная опция RFC 2132 для TFTP-сервера, передаёт ASCII-строку с адресом. Option 150 — Cisco-проприетарная, передаёт IP-адрес в бинарном виде. Cisco IP Phones поддерживают оба варианта, но некоторые старые модели телефонов понимают только Option 150. Современный Cisco UCM рекомендует Option 150.
Может ли Option 82 использоваться без DHCP relay?
Нет. Option 82 добавляется исключительно relay-агентом. Клиент не добавляет Option 82 сам. Если DHCP-сервер находится в той же подсети — Option 82 не используется.
Почему клиент не получает NTP из Option 42 на Windows в домене?
Доменные машины Windows управляют временем через W32tm по иерархии домена. NTP-источником является PDC-эмулятор. Option 42 игнорируется доменными клиентами — это штатное поведение. Настраивайте NTP на PDC через w32tm /config.
Как передать несколько NTP-серверов в Option 42 на MikroTik?
Записать IP-адреса подряд в hex-строке без разделителей:
# 192.168.1.1 и 192.168.1.2
/ip dhcp-server option add code=42 name=ntp-pair value=0xC0A80101C0A80102
Как проверить что DHCP-сервер отправляет нужные опции?
Wireshark с фильтром bootp или dhcp. В пакете DHCP ACK раскройте Bootstrap Protocol → Options. Каждая опция отображается с номером, длиной и значением. Альтернатива на Linux: dhcpdump -i eth0.



