Настройка option 82 на Edge-Core ES3528M и Dhcpd сервере.
Edge-Core ES3528M достаточно известная модель коммутатора среди Интернет-провайдеров. 28-ми портовый свитч с cisco-подобной командной строкой. Четыре порта 1000 Мб/с (комбо медь/оптика) и двадцать четыре порта 100 Мб/с (медь). Модель коммутатора хорошо себя зарекомендовала в плане производительности и стабильности работы. Настраивать будем вместе с ISC DHCP.
Заходим в режим конфигурации коммутатора:
config |
Заходим в режим конфигурации vlan:
vlan database |
Настраиваем два vlan для управления и пользователей:
vlan 5 name MANAGEMENT media ethernet state active vlan 10 name USER media ethernet state active exit |
Настраиваем интерфейс управления:
int vlan 5 ip address 192.168.0.2 255.255.255.0 exit |
Настраиваем порты пользователей:
interface ethernet 1/1-24 switchport allowed vlan add 10 untagged switchport native vlan 10 switchport allowed vlan remove 1 ip source-guard sip-mac exit |
Настраиваем магистральные порты:
interface ethernet 1/25-28 switchport allowed vlan add 5,10 tagged exit |
Настраиваем функцию dhcp-snooping на коммутаторе:
ip dhcp snooping ip dhcp snooping vlan 10 ip dhcp snooping information option ip dhcp snooping information policy replace |
Указываем магистральные порты как доверительные для DHCP:
interface ethernet 1/25-28 ip dhcp snooping trust exit |
Настраиваем 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; # Класс с описанием идентификатора и порта ES3528M 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 и смотрим, что приходит от ES3528M к нашему 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 ... |
В первом случае запрос пришел со второго порта, во втором с восьмого.
После перечисленных действий можем отдавать сетевые настройки ориентируясь на коммутатор и его порт.