Настройка DHCP Snooping и Option 82 на коммутаторах SNR
Настройка DHCP Snooping и Option 82 на коммутаторах SNR
DHCP snooping это функция безопасности DHCP которая предоставляет безопасную фильтрацию не прошедших проверку сообщений DHCP и поддержку привязки таблиц DHCP snooping.
Таблица сопоставлений DHCP snooping содержит MAC адрес, IP адрес, время аренды, тип сопоставления, номер VLAN и информацию о интерфейсе который отвечает ненадёжным локальным интерфейсам или свитчам. Не надёжные интерфейсы это интерфейсы, которые настроены на принятие сообщений от внешней сети или firewall. Надёжные интерфейсы это интерфейсы, которые настроены на принятие сообщений только от внутренней сети.
DHCP Option 82 это опция протокола DHCP, использующаяся для информирования DHCP-сервера о том, от какого DHCP-ретранслятора и через какой егго порт был получен запрос. Данная опция применяется для привязки IP-адреса к порту коммутатора.
DHCP snooping может быть задействован на свитче посредством VLAN для перехвата DHCP сообщений второго сетевого уровня.
Ниже приведены примеры минимальной конфигурации DHCP snooping и Option 82 на ethernet коммутаторах SNR.
Для сетевых коммутаторов SNR S2940-8G, S2940-8G-v2, S2950-24G, S2960-24G, S2960-48G, S3650G-24S, S3750G-24S-E:
service dhcp
ip dhcp snooping enable
ip dhcp snooping binding enable
ip dhcp snooping information enable
ip dhcp snooping information option subscriber-id format hex
ip dhcp snooping vlan xx
Для свича SNR S2970G-48S:
ip dhcp-relay snooping
ip dhcp-relay snooping information option
ip dhcp-relay snooping information option hn-type
Также дополнительно рекомендуется включить функционал user-control на портах подключения абонентов, и указать максимальное количество абонентов, подключенных к порту (кроме коммутатора SNR S2970G-48S):
Interface Ethernet 1/1
ip dhcp snooping binding user-control
ip dhcp snooping binding user-control max-user 1
Ниже приведен пример минимального конфига DHCP-сервера ISC-DHCPD. Рассмотрим его детально:
Включаем вывод сообщений в syslog, это упростит отладку в случае каких-либо проблем
log-facility local7;
local-address 172.16.0.10;
Проверяем наличие 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
Берем последние 6 байт agent.remote-id, делим на 8-битные числа, каждые из которых преобразуем в 16-чную систему счисления. Полученные числа объединяем между собой через «:» и проверяем соответствие полученного MAC-адреса коммутатора в agent.remote-id с необходимым
binary-to-ascii(
16, 8, «:», suffix(option agent.remote-id ,6)
)=«0:3:f:19:40:6a» and
Аналогичным образом получаем порт коммутатора из agent.circuit-id и сверяем его
binary-to-ascii(
10, 8,»", suffix(option agent.circuit-id, 1)
) = «1»;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
option routers 172.16.0.1;
option subnet-mask 255.255.255.0;
authoritative;
Выдаем IP-адрес согласно описанному выше классу
pool {
range 172.16.0.121;
allow members of «sw01-p01»;}
}