DHCP snoop: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
(Новая: =DHCP Snooping= ==Введение== DHCP Snooping - функионал коммутатора, позволяющий стоить ACL на основе ответов от DHCP-Се...)
 
 
(не показано 16 промежуточных версий 2 участников)
Строка 1: Строка 1:
  +
[[Категория:DlinkSwitch]]
  +
[[Категория:DHCP]]
  +
[[Категория:DHCP_Option_82]]
  +
[[Категория:Switch]]
  +
  +
 
=DHCP Snooping=
 
=DHCP Snooping=
 
==Введение==
 
==Введение==
DHCP Snooping - функионал коммутатора, позволяющий стоить ACL на основе ответов от DHCP-Сервера. Коммутатор перехатывает ответы и на основании этих ответов создает правила вида "с порта Х разрешить IP 123.123.123.123 с маком AA:BB:CC:DD:EE:FF на время lease-time". Весь остальной траффик запретить.
+
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 весь траффик для данного мака будет блокирован.
+
В случае если клиент не пошлет запрос на получение адреса, весь трафик для данного мака будет блокирован. В случае если клиент не пошлет повторный запрос по истечении 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 клиента.