Пример настройки DHCP-сервера с поддержкой Option 82
Как настроить DHCP-сервер с поддержкой Option 82?
Предположим, что имеется следующая схема:

1. Ethernet-коммутатор MES-3728 используется в сети как DHCP Relay Agent.
2. Клиенты отдела SW будут получать IP-адреса из подсети 192.168.10.0/24.
3. Клиенты отдела HW будут получать IP-адреса из подсети 192.168.20.0/24.
4. Клиенты отдела CSO будут получать IP-адреса из подсети 192.168.30.0/24.
В нашем примере показана типичная реализация DHCP Relay. Администратор сети планирует назначать IP-адреса клиентам в трех разных подсетях на основе VLAN ID в пакетах DHCP.
В данной реализации нужно использовать функцию DHCP Relay Option 82. Приведем пример настройки DHCP-сервера.
1. Настройка DHCP Relay. Этот пример выполнен на третьем коммутаторе MES-3728, который установлен в отделе CSO.
| MES-3728(config)# dhcp relay 30 helper-address 192.168.1.200 option information |
2. Option 82 в пакете DHCP.

Мы можем увидеть информацию Option 82 в этом DHCP-пакете. Наш коммутатор поддерживает sub-option 1 (Agent Circuit ID). Agent Circuit ID включает Slot ID, Port ID, VLAN ID и Additional Info.
Slot ID 0x00 = 0
Port ID 0x02 = 2
VLAN ID 0x001E = 30
Additional Information: 0x4D45532D33373238 = MES-3728
В этом примере мы будем назначать IP-адреса клиентам на основе VLAN ID в пакетах DHCP.
3. Настройка DHCP-сервера, который поддерживает Option 82.
В нашем примере используется DHCP-сервер на Linux-платформе dhcp-4.1.1-9. Покажем, как настроить DHCP-сервер для назначения IP-адресов на основе VID в пакетах DHCP.
Настройки DHCP-сервера находятся в конфигурационном файле dhcpd.conf. Этот файл настроим для использования различных способов назначения IP-адресов.
1) Перед редактированием dhcpd.conf нужно знать синтаксис, поддерживаемый этим сервером:
substring(option agent.circuit-id,2,2) Оператор substring анализирует данные и возвращает строку данных, которая начинается от указанного значения offset и имеет длину, равную указанной в length. Offset и Length — числовые выражения. Offset (смещение) 2 байта и Length (длина) 2 байта. Эти значения указаны в VID части Agent Circuit ID.
binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) Преобразует результат вычисления оператора substring в текстовую строку, содержащую по одному числу для каждого элемента результата вычисления оператора substring. 10 - это указание системы исчисления (десятичная), 16 указывает количество битов на каждое число, полученное в результате преобразования. Результат этого значения указан в VID в десятичных числах.
2) Отредактируйте файл dhcpd.conf. Сохраните конфигурационный файл после завершения редактирования.
| # vim /etc/dhcp/dhcpd.conf ######################################################## ddns-update-style interim; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { } class "VLAN10" { match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "10"; } # VLAN10 class "VLAN20" { match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "20"; } # VLAN20 class "VLAN30" { match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "30"; } # VLAN30 subnet 192.168.10.0 netmask 255.255.255.0 { pool { allow members of "VLAN10"; default-lease-time 600; max-lease-time 7200; range 192.168.10.1 192.168.10.199; option routers 192.168.10.254; option broadcast-address 192.168.10.255; option subnet-mask 255.255.255.0; option domain-name-servers 4.2.2.2; } } subnet 192.168.20.0 netmask 255.255.255.0 { pool { allow members of "VLAN20"; default-lease-time 600; max-lease-time 7200; range 192.168.20.1 192.168.20.199; option routers 192.168.20.254; option broadcast-address 192.168.20.255; option subnet-mask 255.255.255.0; option domain-name-servers 4.2.2.2; } } subnet 192.168.30.0 netmask 255.255.255.0 { pool { allow members of "VLAN30"; default-lease-time 600; max-lease-time 7200; range 192.168.30.1 192.168.30.199; option routers 192.168.30.254; option broadcast-address 192.168.30.255; option subnet-mask 255.255.255.0; option domain-name-servers 4.2.2.2; } } ######################################################## |
3) Запустите сервис DHCP на DHCP-сервере, и теперь сервер настроен для назначения IP-адресов клиентам. 
После запуска сервиса DHCP на сервере, клиенты отдела CSO, подключенные к MES-3728, смогут получать IP-адреса из подсети 192.168.30.0/24.
