DHCP snoop
DHCP Snooping
Введение
DHCP Snooping - функионал коммутатора, позволяющий стоить ACL на основе ответов от DHCP-Сервера. Коммутатор перехатывает ответы и на основании этих ответов создает правила вида "с порта Х разрешить IP 123.123.123.123 с маком AA:BB:CC:DD:EE:FF на время lease-time". Весь остальной траффик запретить. Начиная с 5-й ветки прошивкок, в коммутаторах Длинк этот функционал работает на приемлемом уровне. В случае если клиент не пошлет запрос на получение адреса, весь траффик для данного мака будет блокирован. В случае если клиент не пошлет повторный запрос по истечении lease-time весь траффик для данного мака будет блокирован.
Настройка на коммутаторе
# IPBIND config address_binding ip_mac ports 1-24 state enable config address_binding ip_mac ports 1-24 allow_zeroip enable config address_binding ip_mac ports 1-24 forward_dhcppkt disable disable address_binding acl_mode disable address_binding trap_log enable address_binding dhcp_snoop config address_binding dhcp_snoop max_entry ports 1-26 limit 5
allow_zeroip enable - включить опцию пропускать пакеты с нулевым src-ip. Без этой опции возникают проблемы с Вистой.
Обязательно запретить DHCP на всех портах кроме аплинковых.
# ACL create access_profile ip udp src_port_mask 0xFFFF profile_id 10 config access_profile profile_id 10 add access_id 11 ip udp src_port 68 port 1 deny config access_profile profile_id 10 add access_id 12 ip udp src_port 68 port 2 deny config access_profile profile_id 10 add access_id 13 ip udp src_port 68 port 3 deny config access_profile profile_id 10 add access_id 14 ip udp src_port 68 port 4 deny config access_profile profile_id 10 add access_id 15 ip udp src_port 68 port 5 deny config access_profile profile_id 10 add access_id 16 ip udp src_port 68 port 6 deny config access_profile profile_id 10 add access_id 17 ip udp src_port 68 port 7 deny config access_profile profile_id 10 add access_id 18 ip udp src_port 68 port 8 deny config access_profile profile_id 10 add access_id 19 ip udp src_port 68 port 9 deny config access_profile profile_id 10 add access_id 20 ip udp src_port 68 port 10 deny config access_profile profile_id 10 add access_id 21 ip udp src_port 68 port 11 deny config access_profile profile_id 10 add access_id 22 ip udp src_port 68 port 12 deny config access_profile profile_id 10 add access_id 23 ip udp src_port 68 port 13 deny config access_profile profile_id 10 add access_id 24 ip udp src_port 68 port 14 deny config access_profile profile_id 10 add access_id 25 ip udp src_port 68 port 15 deny config access_profile profile_id 10 add access_id 26 ip udp src_port 68 port 16 deny config access_profile profile_id 10 add access_id 27 ip udp src_port 68 port 17 deny config access_profile profile_id 10 add access_id 28 ip udp src_port 68 port 18 deny config access_profile profile_id 10 add access_id 29 ip udp src_port 68 port 19 deny config access_profile profile_id 10 add access_id 30 ip udp src_port 68 port 20 deny config access_profile profile_id 10 add access_id 31 ip udp src_port 68 port 21 deny config access_profile profile_id 10 add access_id 32 ip udp src_port 68 port 22 deny config access_profile profile_id 10 add access_id 33 ip udp src_port 68 port 23 deny config access_profile profile_id 10 add access_id 34 ip udp src_port 68 port 24 deny
Известные проблемы
На некоторых версиях прошивок (под нагрузкой?) происходит размножение DHCP-запросов, в результате сервер отправляет клиенту DHCPNACK (При использовании DHCP Reley) Иногда помогает следующее
# DHCP_LOCAL_RELAY enable dhcp_local_relay