Настройка option 82 на D-Link DES-3526 и Dhcpd сервере.
D-Link DES-3526 один из самых известных и распространенных коммутаторов среди провайдеров. Не текущий момент, его не производят и те, кто покрупнее уже давно перешли на более новое оборудование, а те, кто поменьше ещё используют DES-3526. На нем и будем настраивать опцию 82 в связке с ISC DHCP.
Версия прошивки коммутатора DES-3526:
Firmware: Build 6.00.B48 |
Подключаемся к коммутатору DES-3526 и начинаем настраивать. Удаляем vlan по умолчанию и добавляем нужные. Для примера я взял два vlan один для управления, другой для абонентов:
config vlan default delete 1-26 create vlan MANAGEMENT tag 5 config vlan MANAGEMENT add tagged 25-26 create vlan USER tag 10 config vlan USER add tagged 25-26 config vlan USER add untagged 1-24 |
Настраиваем интерфейс на D-Link DES-3526:
config ipif System vlan MANAGEMENT ipaddress 192.168.0.2/24 state enable |
Включаем опцию dhcp_relay и указываем IP-адрес нашего DHCP-сервера:
config dhcp_relay add ipif System 192.168.0.1 config dhcp_relay option_82 state enable config dhcp_relay option_82 policy replace enable dhcp_relay |
Включаем функцию Binding и настраиваем порты:
enable address_binding dhcp_snoop config address_binding dhcp_snoop max_entry ports 1-24 limit 2 config address_binding ip_mac ports 1-24 state enable loose allow_zeroip enable |
В качестве сервера использую рабочую станцию с ОС Gentoo. Добавляем vlan, которые прописывали на коммутаторе DES-3526:
vconfig add eth1 5 vconfig add eth1 10 |
Настраиваем интерфейсы на созданных vlan:
ifconfig eth1.5 192.168.0.1/24 ifconfig eth1.10 192.168.1.1/24 |
Настраиваем ISC DHCP сервер в файле /etc/dhcp/dhcpd.conf:
# dhcpd.conf # Указываем DNS сервер option domain-name-servers 8.8.8.8; authoritative; log-facility local7; # Настраиваем лог log(info, "***"); if exists agent.circuit-id { log( info,concat("*Leased ",binary-to-ascii(10,8,".",leased-address)," (with opt82)") ); log( info,concat("*Remote-ID: ",binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6))) ); log( info,concat("*Port: ",binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))) ); } else { log( info,concat("*Leased ",binary-to-ascii(10,8,".",leased-address)," (without opt82)") ); } log(info, "***"); # Описываем подсеть subnet 192.168.1.0 netmask 255.255.255.0 { # Задаем шлюз по умолчанию option routers 192.168.1.1; # Класс с описанием идентификатора и порта DES-3526 class "port-1" { match if binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6)) = "0:19:5b:fd:b0:6e" and binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) = "1"; } # Прописываем IP-адрес и указываем класс pool { range 192.168.1.2; allow members of "port-1"; } } |
Перезагружаем DHCPD:
/etc/init.d/dhcpd restart |
Для тестирования запускаем программу dhcpdump и смотрим, что приходит от DES-3526 к нашему dhcp-серверу:
... OPTION: 82 ( 18) Relay Agent Information Circuit-ID 00:04:00:0a:00:02 Remote-ID 01:06:00:19:5b:fd:b0:6e ... OPTION: 82 ( 18) Relay Agent Information Circuit-ID 00:04:00:0a:00:08 Remote-ID 01:06:00:19:5b:fd:b0:6e ... |
В первом случае запрос пришел со второго порта, во втором с восьмого.