DHCP snoop: различия между версиями
Sirmax (обсуждение | вклад) (Новая: =DHCP Snooping= ==Введение== DHCP Snooping - функионал коммутатора, позволяющий стоить ACL на основе ответов от DHCP-Се...) |
Sirmax (обсуждение | вклад) |
||
(не показано 16 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:DlinkSwitch]] |
||
+ | [[Категория:DHCP]] |
||
+ | [[Категория:DHCP_Option_82]] |
||
+ | [[Категория:Switch]] |
||
+ | |||
+ | |||
=DHCP Snooping= |
=DHCP Snooping= |
||
==Введение== |
==Введение== |
||
− | DHCP Snooping - |
+ | DHCP Snooping - функционал коммутаторов (DES-3028, 3052,3526,3528), позволяющий стоить ACL на основе ответов от DHCP-Сервера. Коммутатор перехватывает ответы и на основании этих ответов создает правила вида "с порта Х разрешить IP 123.123.123.123 с маком AA:BB:CC:DD:EE:FF на время lease-time". Весь остальной трафик запретить. |
− | Начиная с 5-й ветки |
+ | Начиная с 5-й ветки прошивок, в коммутаторах Длинк этот функционал работает на приемлемом уровне. |
− | В случае если клиент не пошлет запрос на получение адреса, весь |
+ | В случае если клиент не пошлет запрос на получение адреса, весь трафик для данного мака будет блокирован. В случае если клиент не пошлет повторный запрос по истечении lease-time весь трафик для данного мака будет блокирован. |
==Настройка на коммутаторе== |
==Настройка на коммутаторе== |
||
+ | |||
+ | Для примера использован DES-3526 |
||
+ | <PRE> |
||
+ | Boot PROM Version : Build 5.00.009 |
||
+ | Firmware Version : Build 5.01.B52 |
||
+ | Hardware Version : 0A3G |
||
+ | </PRE> |
||
+ | |||
+ | <PRE> |
||
+ | # 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 |
||
+ | </PRE> |
||
+ | |||
+ | allow_zeroip enable - включить опцию пропускать пакеты с нулевым src-ip. |
||
+ | Без этой опции возникают проблемы с Вистой. |
||
+ | |||
+ | Обязательно запретить DHCP на всех портах кроме аплинковых. |
||
+ | <PRE> |
||
+ | # 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 |
||
+ | </PRE> |
||
+ | |||
+ | ==Известные проблемы== |
||
+ | На некоторых версиях прошивок (под нагрузкой?) происходит размножение DHCP-запросов, в результате сервер отправляет клиенту DHCPNACK (При использовании DHCP Relay) |
||
+ | Иногда помогает следующее |
||
+ | <PRE> |
||
+ | # DHCP_LOCAL_RELAY |
||
+ | enable dhcp_local_relay |
||
+ | </PRE> |
||
+ | |||
+ | Время lease-time не должно быть слишком большим, иначе неактивные записи на коммутаторе будут удаляться (баг признан производителем) |
||
+ | 5-10 минут оптимально. |
||
+ | |||
+ | ==Мониторинг== |
||
+ | Посмотреть состояние: |
||
+ | |||
+ | <PRE> |
||
+ | #show address_binding |
||
+ | Command: show address_binding |
||
+ | |||
+ | ACL_mode : Disabled |
||
+ | Trap/Log : Disabled |
||
+ | DHCP_Snoop : Enabled |
||
+ | </PRE> |
||
+ | |||
+ | <PRE> |
||
+ | #show address_binding dhcp_snoop |
||
+ | Command: show address_binding dhcp_snoop |
||
+ | |||
+ | DHCP_Snoop : Enabled |
||
+ | </PRE> |
||
+ | |||
+ | Посмотреть успешные привязки |
||
+ | <PRE> |
||
+ | #show address_binding ip_mac |
||
+ | IP Address MAC Address Ports Mode |
||
+ | --------------- ----------------- ------------------------------ ---- |
||
+ | 10.3.3.22 00-1E-58-46-4B-5D 18 AUTO |
||
+ | 10.3.3.40 00-1A-4D-86-55-65 8 AUTO |
||
+ | 10.3.3.56 00-50-8D-6B-A6-27 13 AUTO |
||
+ | 10.3.3.81 00-02-2A-E1-85-13 11 AUTO |
||
+ | </PRE> |
||
+ | |||
+ | Посмотреть заблокированные (в моей сети не смог найти для примера) |
||
+ | <PRE> |
||
+ | #show address_binding blocked |
||
+ | Command: show address_binding blocked |
||
+ | |||
+ | VID VLAN Name MAC Address Port Type |
||
+ | ---- -------------------------------- ----------------- ---- --------------- |
||
+ | Total entries : 0 |
||
+ | </PRE> |
||
+ | ==Выводы== |
||
+ | Насколько я могу судить, данный функционал коммутатора (совместно с [http://wiki.sirmax.noname.com.ua/index.php/D-LINK_DHCP_Relay_option_82 DHCP Relay with option 82] ) позволяет гаранировать валидность src-ip клиента. |
Текущая версия на 12:42, 11 февраля 2021
DHCP Snooping
Введение
DHCP Snooping - функционал коммутаторов (DES-3028, 3052,3526,3528), позволяющий стоить ACL на основе ответов от DHCP-Сервера. Коммутатор перехватывает ответы и на основании этих ответов создает правила вида "с порта Х разрешить IP 123.123.123.123 с маком AA:BB:CC:DD:EE:FF на время lease-time". Весь остальной трафик запретить. Начиная с 5-й ветки прошивок, в коммутаторах Длинк этот функционал работает на приемлемом уровне. В случае если клиент не пошлет запрос на получение адреса, весь трафик для данного мака будет блокирован. В случае если клиент не пошлет повторный запрос по истечении lease-time весь трафик для данного мака будет блокирован.
Настройка на коммутаторе
Для примера использован DES-3526
Boot PROM Version : Build 5.00.009 Firmware Version : Build 5.01.B52 Hardware Version : 0A3G
# 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 Relay) Иногда помогает следующее
# DHCP_LOCAL_RELAY enable dhcp_local_relay
Время lease-time не должно быть слишком большим, иначе неактивные записи на коммутаторе будут удаляться (баг признан производителем) 5-10 минут оптимально.
Мониторинг
Посмотреть состояние:
#show address_binding Command: show address_binding ACL_mode : Disabled Trap/Log : Disabled DHCP_Snoop : Enabled
#show address_binding dhcp_snoop Command: show address_binding dhcp_snoop DHCP_Snoop : Enabled
Посмотреть успешные привязки
#show address_binding ip_mac IP Address MAC Address Ports Mode --------------- ----------------- ------------------------------ ---- 10.3.3.22 00-1E-58-46-4B-5D 18 AUTO 10.3.3.40 00-1A-4D-86-55-65 8 AUTO 10.3.3.56 00-50-8D-6B-A6-27 13 AUTO 10.3.3.81 00-02-2A-E1-85-13 11 AUTO
Посмотреть заблокированные (в моей сети не смог найти для примера)
#show address_binding blocked Command: show address_binding blocked VID VLAN Name MAC Address Port Type ---- -------------------------------- ----------------- ---- --------------- Total entries : 0
Выводы
Насколько я могу судить, данный функционал коммутатора (совместно с DHCP Relay with option 82 ) позволяет гаранировать валидность src-ip клиента.