Обычно, говоря про возможности DHCP snooping на коммутаторах, говорят о борьбе с посторонними DHCP серверами. И это действительно полезный функционал практически в любой сети. Но, к счастью, этим возможности DHCP не ограничиваются. Так, например, на коммутаторах Huawei при включенном DHCP snooping сохраняется соответствие MAC адреса и IP адреса, назначенного DHCP сервером. И, как логичное продолжение, есть возможность блокирования трафика с IP адресов, которые не были выданы DHCP сервером.
Для настройки такого функционала на коммутаторе доступа необходимо глобально включить dhcp и dhcp snooping командами:
dhcp enable
dhcp snooping enable
И включить защиту в необходимых VLAN:
vlan XXX
dhcp snooping enable
dhcp snooping trusted interface Eth-Trunk0
arp anti-attack check user-bind enable
ipv4 source check user-bind enable
В данном случае Eth-Trunk0 это имя агрегированного интерфейса, смотрящего в направлении ядра сети. Для коммутаторов, расположенных в топологии выше коммутаторов доступа, данный функционал может оказаться более правильно будет включать для конкретных интерфейсов, а не для всего VLAN.
После выполнения приведённых команд коммутатор начинает слушать DHCP пакеты и заполнять таблицу соответствия MAC и IP адресов, посмотреть которую можно, например, командой:
dis dhcp snooping user-bind vlan XXX
Пример вывода команды:
DHCP Dynamic Bind-table:
Flags:O - outer vlan ,I - inner vlan ,P - Vlan-mapping
IP Address MAC Address VSI/VLAN(O/I/P) Interface Lease
-------------------------------------------------------------------------------------------
192.168.XX.XXX XYZK-XYZK-c414 XX /-- /-- GE0/0/10 2022.06.18-00:35
192.168.XX.XXX XYZK-XYZK-e7db XX /-- /-- GE0/0/7 2022.06.18-05:57
192.168.XX.XX XYZK-XYZK-dfca XX /-- /-- GE0/0/6 2022.06.18-06:13
192.168.XX.XX XYZK-XYZK-1d2f XX /-- /-- GE0/0/25 2022.06.18-04:28
А по прошествии какого-то времени в выводе команды:
display logbuffer
Вы можете обнаружить записи вида:
Jun 17 2022 18:30:58+03:00 swXXX %%01SECE/4/DAI_DROP_PACKET(l)[0]:Not hit the user-bind table. (SourceMAC=XYZK-XYZK-3d5c, SourceIP=169.254.XX.XXX, SourceInterface=GigabitEthernet0/0/46, DropTime=2022/06/17 18:30:58)
Которые говорят об успешном блокировании IP трафика от узла, не получавшего адрес от DHCP сервера.
Данный функционал успешно помогает бороться с некоторыми клиентами, которые сначала назначают на интерфейс IP адрес, который они использовали ранее, а потом обращаются к DHCP серверу. Например, ISC-DHCP сервер перед предложением IP адреса сначала проверяет его доступность отправляя ICMP echo request, а так как IP на интерфейс уже назначен, то DHCP сервер получает ответ и принимает решение, что данный IP был кем-то захвачен и предлагает клиенту другой адрес, а исходный адрес временно блокирует. Таким поведением, по моим наблюдениям, отличаются некоторые linux based дистрибутивы.
Если в Ваш коммутатор доступа подключено устройство, имеющее статический IP, то можно добавить статическую привязку командой:
user-bind static ip-address 192.168.XX.XX mac-address XYZK-XYZK-81ec interface GigabitEthernet0/0/23
Но, в данной ситуации, более правильным будет назначение статического адреса DHCP сервером.
Стоит отметить, что команда "ipv4 source check ...
" появилась в относительно новых прошивках, а в более старых прошивках существовала команда "ip source check ...
", которая включала провеку наличия привязки как для IPv4 трафика, так и для IPv6. Если же в Вашей сети развёрнут двойной стек с поддержкой и IPv4, и IPv6, но IPv6 адреса назначаются с использованием механизма SLAAC, то выполнение такой команды приведёт к блокированию IPv6 трафика Ваших пользователей. Найти в какой именно версии прошивки произошло данное изменение мне, к сожалению, не удалось, но в прошивках версии V200R021 данная команда уже есть.