
Механизм делит порты на доверенные и недоверенные и отбрасывает ответы DHCP-сервера, пришедшие с недоверенного порта. По умолчанию у Huawei недоверенными числятся все интерфейсы, поэтому включение без пометки серверного порта останавливает выдачу адресов сразу и всем. Порядок команд на работающей сети важнее самих команд.
Появление в сегменте второго сервера, например принесённого сотрудником домашнего роутера, заканчивается тем, что часть клиентов получает неверные адреса и параметры сети. Huawei называет две вещи: неверные адреса и неверные параметры сетевой конфигурации. Следствием названо нарушение связи, а масштаб зависит от того, сколько клиентов успело обратиться к чужому серверу раньше настоящего.
Задача механизма сформулирована в документации так: клиент получает адрес только от валидного DHCP-сервера, а поддельный сервер выдать адрес клиенту не может. Достигается это разделением интерфейсов на две роли и фильтрацией серверных сообщений по роли интерфейса, через который они пришли.
| Роль | DHCPACK, DHCPNAK, DHCPOFFER от сервера | Запросы клиентов | Где применяется |
|---|---|---|---|
| Доверенный интерфейс | принимаются | пересылаются только через него | порт к валидному серверу или к релею |
| Недоверенный интерфейс | отбрасываются | через него не пересылаются | все клиентские порты |
Из таблицы следует граница применимости. Механизм работает с сообщениями DHCP, поэтому устройство со статически прописанным адресом остаётся вне его поля зрения: диалога с сервером оно не ведёт и в таблицу привязок не попадает. Эту часть задачи закрывают port security и 802.1X.
Доверенным помечается интерфейс, который прямо или косвенно ведёт к DHCP-серверу, которому доверяет администратор. Остальные остаются недоверенными. Huawei ставит здесь условие: динамические записи привязок устройство начинает формировать только после того, как доверенный интерфейс настроен.
Настроить доверенный порт можно в трёх видах, и они не равнодоступны. Вид bridge domain поддерживают только три серии, для остальных остаются вид интерфейса и вид VLAN. Для сети, где серверный сегмент описан через VLAN, второй вариант короче и меньше подвержен ошибке при добавлении портов.
| Вид | Команда | Ограничение по моделям |
|---|---|---|
| Вид интерфейса | dhcp snooping trusted | нет |
| Вид VLAN | dhcp snooping trusted interface interface-type interface-number | нет |
| Вид bridge domain | dhcp snooping trusted tunnel | только S6730-H-V2, S5755-H и S5732-H-V2 |
Документация даёт порядок «включить, потом пометить». Из значения по умолчанию следует, что в промежутке между этими командами устройство отбрасывает ответы всех серверов, включая настоящий. Это вывод из умолчания, отдельной оговорки у вендора нет. На работающей сети промежуток убирают, помечая аплинк до включения snooping на клиентских портах.
Включение состоит из трёх уровней, и пропуск любого означает, что механизм не заработает. Первый уровень это функциональность DHCP на устройстве, она выключена по умолчанию. Второй это глобальное включение snooping, тоже выключенное по умолчанию. Третий это включение на конкретном VLAN, bridge domain или интерфейсе.

system-view
dhcp enable
dhcp snooping enable
vlan 10
dhcp snooping enable
dhcp snooping trusted interface gigabitethernet 0/0/1
quitТот же результат через вид интерфейса, если серверный порт удобнее описывать напрямую. Здесь порядок другой: сначала помечается аплинк к серверу, затем snooping включается на клиентских портах, и промежутка с отброшенными ответами не возникает.
system-view
dhcp enable
dhcp snooping enable
interface gigabitethernet 0/0/1
dhcp snooping trusted
quit
interface gigabitethernet 0/0/2
dhcp snooping enable
quitЗапись привязки устройство собирает из сообщения DHCPACK и добавляет к ней номер интерфейса и идентификатор VLAN. Получается четвёрка: IP-адрес, MAC-адрес, интерфейс, VLAN. На этой таблице стоят IP Source Guard, который сверяет адрес источника трафика, и Dynamic ARP Inspection, который проверяет ARP-пакеты.
| Событие | Что происходит с записью |
|---|---|
| Клиент получил адрес, пришёл DHCPACK | запись создаётся |
| Истёк срок аренды | запись стареет и удаляется |
| Клиент отправил DHCPRELEASE | запись удаляется автоматически |
| Перезагрузка без резервной копии | записи теряются, клиентам нужно подключиться заново |
| Перезагрузка с резервной копией | записи восстанавливаются командой recover |
Строка про перезагрузку взята из раздела резервного копирования дословно. Локальное автосохранение по умолчанию выключено, включается командой с именем файла и необязательной задержкой записи. Резервирование на удалённый SFTP-сервер требует скрипта на OPS API.
system-view
dhcp snooping user-bind autosave dhcp-snooping.tbl
quitВосстановление после перезагрузки ручное, отдельной командой с тем же именем файла. Автоматического подъёма записей при старте этот раздел не описывает.
system-view
dhcp snooping user-bind recover dhcp-snooping.tblЧисловой ёмкости таблицы привязок в руководстве по настройке нет, поэтому запас считают иначе. Потолок задаёт администратор командой max-number, а фактическую заполненность снимают с живого устройства командой display dhcp snooping. Модель для проекта подбирают по числу клиентов в обслуживаемых VLAN.
Защита на базе DHCP snooping разложена в документации на пять отдельных разделов, и включаются они независимо. Одна команда включения закрывает подмену сервера и оставляет открытыми флуд, исчерпание пула и поддельные сообщения от имени клиента. Ни одна из пяти проверок вместе со snooping не включается.
| Раздел | Что закрывает | Команда | По умолчанию |
|---|---|---|---|
| Обнаружение DHCP-сервера | пишет данные чужого сервера в лог, фильтром не является | dhcp snooping server record | выключено |
| Защита от флуда DHCPv4 | ограничивает скорость передачи сообщений на обработку | dhcp snooping check dhcp-rate enable | выключено, предел скорости 5000 pps |
| Защита от флуда DHCPv6 | то же самое для IPv6, отдельный раздел | dhcp snooping check dhcpv6-rate enable | выключено, предел скорости 100 pps |
| Защита от DoS на сервер | ограничивает число привязок и проверяет поле CHADDR | dhcp snooping user-bind max-number | проверка CHADDR выключена |
| Защита от поддельных сообщений | сверяет сообщения клиента с таблицей привязок | dhcp snooping check dhcp-request enable | выключено |
Раздел про DoS полезен на сети с гостевым сегментом. Атакующий исчерпывает пул, запрашивая адреса с подменёнными значениями поля CHADDR, и легальные пользователи адресов не получают. Ограничение числа привязок на интерфейс ставит потолок числу онлайн-пользователей, а проверка CHADDR отсекает подмену.
DHCP snooping закрывает чужой DHCP-сервер и подделку сообщений. Подключение ноутбука со статическим адресом в свободную розетку он не останавливает, эту задачу закрывают два других механизма. Port security ограничивает число MAC-адресов на порту, а 802.1X не пропускает трафик до аутентификации и требует отдельного сервера с учётными записями.
| Параметр | Значение по умолчанию |
|---|---|
| Функция port security | выключена |
| Максимум защищённых MAC-адресов на интерфейсе | 1 |
| Действие при нарушении | restrict |
| Старение динамических защищённых адресов | выключено |
Включённый без параметров port security оставляет на порту место ровно для одного устройства. Схема «IP-телефон, за ним компьютер» даёт на порту два MAC-адреса и перестаёт работать сразу. Число задаётся явно параметром maximum в той же команде включения.
system-view
interface gigabitethernet 0/0/10
port-security enable maximum 2
port-security mac-address sticky
quitВторая команда переводит выученные адреса в разряд закреплённых. Разница описана в документации прямо: динамические защищённые адреса теряются при перезагрузке устройства или падении порта и учатся заново, закреплённые сохраняются и не стареют даже при заданном времени старения. Для мест с постоянной техникой берут закреплённые.
| Действие | Поведение | Возврат порта в работу |
|---|---|---|
| restrict | отбрасывает неверные пакеты и поднимает тревогу, помечено как рекомендуемое | не требуется |
| protect | отбрасывает неверные пакеты молча | не требуется |
| error-down | отбрасывает пакеты, гасит интерфейс и поднимает тревогу | по умолчанию только командой restart в виде интерфейса |
Переход к 802.1X это уже проект, а не настройка порта. До старта у него два открытых вопроса: что делать с техникой без поддержки стандарта и что происходит при недоступности сервера аутентификации. Оба закрывают на бумаге заранее, потому что оба всплывают в первый день после включения.
DHCP-релей это устройство, которое принимает широковещательный запрос клиента и пересылает его юникастом серверу в другой подсети. Нужен он там, где сервер и клиенты разнесены по сегментам. Самый частый вопрос при внедрении: что делать, если релей стоит между клиентами и сервером. Ответ зависит от того, на каком устройстве включён snooping.
| Где включён snooping | Нужен ли доверенный интерфейс | Почему |
|---|---|---|
| На самом релее | нет | релей преобразует адреса и шлёт запрос юникастом валидному серверу, поэтому получаемые DHCPACK корректны по построению |
| На коммутаторе доступа, релей выше по схеме | да | для этого коммутатора релей это источник ответов на одном из портов, правило общее |
Вторая ошибка это неверный порядок команд, она разобрана выше во врезке. Третья касается роста сети: к серверному сегменту добавляют второй аплинк для отказоустойчивости и пометить его забывают. Отказ проявится в момент переключения на резервный путь. Настройка в виде VLAN эту ошибку частично снимает. Смежный разбор проектных промахов собран в статье про пять ошибок проектирования мультивендорной сети.
Huawei пишет прямо: DHCP snooping не поддерживает протокол BOOTP. Бездисковые рабочие станции используют именно этот протокол. Динамические записи привязок для них не появятся, поэтому IP Source Guard и Dynamic ARP Inspection по ним работать не будут. Лечение одно: статические привязки командой user-bind static.
Подбор самой модели под роль в сети это отдельная задача. Какие серии поддерживают DHCP snooping в нужной версии, перечислено в разделе требований руководства, а разбор имён серий Huawei разобран в статье про расшифровку серий коммутаторов и в расшифровке имени S5735.
Первым делом проверьте, помечен ли доверенным порт в сторону настоящего сервера. По умолчанию все интерфейсы недоверенные, а недоверенный интерфейс отбрасывает DHCPACK, DHCPNAK и DHCPOFFER от любого сервера. Возвращает выдачу адресов пометка порта в сторону сервера: dhcp snooping trusted в виде интерфейса либо dhcp snooping trusted interface в виде VLAN.
Если snooping включён на самом релее, доверенный интерфейс на нём настраивать не нужно. Релей преобразует адреса источника и назначения и отправляет сообщение юникастом валидному серверу, поэтому ответы приходят от валидного сервера по построению и таблица привязок формируется корректно без дополнительных команд.
Числовой ёмкости в руководстве по настройке нет. Практический путь такой: поставить собственный потолок командой dhcp snooping user-bind max-number на интерфейс или VLAN, оставить пороги тревоги по умолчанию на 50 и 100 процентах и снимать фактическую заполненность командой display dhcp snooping.
Без резервного копирования записи теряются при перезагрузке, и всем пользователям приходится подключаться заново. Локальное автосохранение выключено по умолчанию и включается командой dhcp snooping user-bind autosave с именем файла. После перезагрузки таблица возвращается на место командой dhcp snooping user-bind recover с тем же файлом.
Столько, сколько у коммутатора аплинков в сторону легитимного сервера или релея, включая резервные пути. Обычная цифра для этажного коммутатора это один или два порта. Каждый лишний доверенный порт пропускает ответы любого сервера, стоящего за ним, и тем самым отключает защиту на этом направлении.
Динамические привязки для них не создаются: такие станции используют протокол BOOTP, а DHCP snooping его не поддерживает. Для бездисковых машин настраивают статические привязки командой user-bind static, иначе IP Source Guard и Dynamic ARP Inspection по этим адресам работать не будут.
Задачи у них разные. DHCP snooping отсекает чужой DHCP-сервер, port security ограничивает число MAC-адресов на порту и останавливает ноутбук со статическим адресом. По умолчанию на интерфейсе разрешён ровно один защищённый MAC-адрес, поэтому связке телефона и компьютера нужен параметр maximum 2.