info Раздача ip-адресов с помощью DHCP op.82 на коммутаторах SNR

Пример построение сети с динамической выдачей ip-адресов с использованием DHCP-опции 82

Глоссарий:

DHCP snooping - контролирует процесс получения DHCP-клиентом IP-адреса для предотвращения атак DHCP и появления нелегитимных DHCP-серверов в сети, устанавливая доверенные и недоверенные порты.

DHCP snooping binding - после каждого успешного получения IP-адреса через DHCP коммутатор создает запись в таблице, которая связывает полученный IP-адрес с MAC-адресом DHCP-клиента, номером его VLAN и порта.

DHCP опция 82 - используется для того, чтобы проинформировать DHCP-сервер о том, от какого DHCP ретранслятора и через какой его порт был получен запрос.

DHCP relay - позволяет транслировать dhcp-пакеты, когда DHCP-клиент и DHCP-сервер находятся в разных сегментах сети.

 


Рассмотрим на примере, приведенном на рисунке выше, построение сети с динамической выдачей ip-адресов в соответствии с тем, от какого коммутатора доступа исходит запрос. Для выдачи адресов DHCP-сервер будет руководствоваться опцией 82, определяющей с какого порта коммутатора пришел запрос на получение адреса. Клиенты коммутатора SNR-S2962-24T, находящиеся в VLAN10, будут получать адреса в подсети 192.168.10.0/24. Клиенты коммутатора SNR-S2985G-24TC, находящиеся в VLAN20 - 192.168.20.0/24. Коммутатор уровня 3 (SNR-S2995G-12FX) осуществляет Inter-VLAN Routing. Также, именно на его мак-адрес и порт будет ориентироваться DHCP-сервер, подключенный к нему. В качестве сервера DHCP будет использоваться ISC-DHCP.

 

 
Для начала настроим коммутатор SNR-S2995G-12FX:

 

Далее настроим коммутаторы доступа. Включим DHCP snooping, определим аплинк, как доверенный порт и поместим access-порты в нужный VLAN.

 

 
SNR-S2962-24T:

 

 
SNR-S2985G-24TC:

 

Обратите внимание, что коммутатор доступа с vlan 10 нужно подключить к первому порту коммутатора агрегации, а с vlan 20 - во второй.

В SVI Vlan10 и Vlan20 будут перенаправляться запросы клиентов к DHCP-серверу 192.168.30.3.

ISC-DHCP сервер предоставляет конструкцию, называемую "классом", которую можно использовать для группирования клиентов по определенным признакам и для контроля над тем, какие адреса им будут выдаваться.

Agent Circuit ID - содержит информацию с какого порта коммутатора пришел запрос.
Agent Remote ID - идентификатор коммутатора, с которого пришел запрос.

 

Разберем конфигурацию DHCP-сервера подробнее.

 

Проверяем наличие Option 82 в пакете:
if exists agent.remote-id {


Если пакет с Option 82, то пишем в syslog информацию:
log ( info, concat(


о коммутаторе и порту подключения, с которого пришел пакет:
«Switch MAC:», binary-to-ascii(16, 8, «:», option agent.remote-id), «Switch port:», binary-to-ascii(10, 8, «.», option agent.circuit-id) )); }

 

Создаем класс для порта коммутатора:
class "sw01-p01" { match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="0:3:f:91:b6:5f" and binary-to-ascii( 10, 8,"", suffix(option agent.circuit-id, 1) ) = "1"; }

 

Где 0:3:f:91:b6:5f - мак-адрес коммутатора агрегации, а "1" - номер его порта. Именно так ISC-DHCP “обрезает” лишние нули в мак-адресе (00:03:0f:91:b6:5f). Посмотрим, как выглядит добавление опции 82 в анализаторе пакетов Wireshark:


Выдаем IP-адрес согласно описанному выше классу:

subnet 192.168.10.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 192.168.10.254; authoritative; pool { range 192.168.10.10 192.168.10.200; allow members of "sw01-p01"; } }

 

 
Полная конфигурация isc-dhcp-сервера из файла /etc/dhcp/dhcpd.conf

 

На сервере с ISC-DHCP должен присутствовать маршрут до подсетей 192.168.10.0/24 и 192.168.20.0/24

 

Проверим работу dhcp snooping binding на коммутаторе:

show ip dhcp snooping binding all

 

ip dhcp snooping static binding count:0, dynamic binding count:2

MAC IP address Interface Vlan ID Flag

----------------------------------------------------------------------------

b8-27-eb-ea-05-e1 192.168.10.10 Ethernet1/0/1 10 DO

fc-3f-db-5e-c0-cc 192.168.20.10 Ethernet1/0/2 20 DO

----------------------------------------------------------------------------