DHCP Snooping — что это такое и как защитить сеть от Rogue DHCP сервера

DHCP Snooping — механизм защиты сети от Rogue DHCP серверов. Разбираем как работает DHCP Snooping, что такое trusted ports и binding table, и как настроить на Cisco, D-Link, Huawei и Eltex.

Представьте: утро понедельника, офис, все приходят на работу — и никто не может подключиться к сети. Ноутбуки получают адреса из диапазона 192.168.100.x, хотя у вас давно настроен 10.0.0.x. Шлюз ведёт в никуда. Интернета нет. Люди злятся. Телефон директора уже разрывается. Вы судорожно смотрите в консоль и понимаете: в вашей сети завёлся Rogue DHCP сервер.

Один DHCP-сервер в сети — порядок. Два DHCP-сервера — начинаются приключения, которые обычно заканчиваются вашим незапланированным дежурством до полуночи.

Именно для таких случаев придуман DHCP Snooping — механизм защиты на уровне коммутатора, который отфильтрует левый DHCP ещё до того, как он успеет испортить вам рабочий день. В этом гайде разберём: что такое DHCP Snooping, как он работает, как настроить его на Cisco, D-Link, Huawei, Eltex и MikroTik, и какие грабли вас ждут на пути. Пристегнитесь.

Что такое DHCP Snooping и зачем он нужен

DHCP Snooping — это механизм безопасности на уровне L2-коммутатора, который инспектирует весь DHCP-трафик в сети и разрешает DHCP-ответы только с портов, которые вы явно пометили как доверенные (trusted). Все остальные порты считаются недоверенными (untrusted) и не имеют права слать DHCPOFFER, DHCPACK и DHCPNAK.

Простыми словами: DHCP Snooping — это фейсконтроль для DHCP-трафика. Ваш легитимный сервер стоит за доверенным портом — заходи, дорогой. Ноутбук вашего коллеги, случайно включившего раздачу Wi-Fi с DHCP — стоп, не пройдёшь.

От чего защищает DHCP Snooping

  • Rogue DHCP сервер (Мошеннический DHCP) — любое устройство, которое начало отвечать на DHCP-запросы вместо вашего сервера. Это может быть ноутбук с включённой точкой доступа, виртуалка с неправильно настроенным сетевым адаптером, или целенаправленная атака.
  • DHCP Spoofing — атака, при которой злоумышленник намеренно поднимает DHCP-сервер и выдаёт клиентам свой шлюз и DNS, перехватывая весь трафик (man-in-the-middle).
  • DHCP Starvation — атака исчерпания пула: атакующий засыпает сервер запросами с поддельными MAC-адресами и выжирает весь диапазон адресов, после чего поднимает свой DHCP.

Без DHCP Snooping ваша сеть абсолютно беззащитна перед всем этим. С ним — у вас есть надёжный привратник на каждом порту коммутатора.

Как работает DHCP Snooping: механика без воды

Когда клиент запрашивает IP-адрес, происходит классический обмен DORA: Discover → Offer → Request → Ack. DHCP Snooping встраивается в этот процесс на уровне коммутатора и действует по следующей логике:

  1. Клиент на untrusted-порту отправляет DHCPDISCOVER — коммутатор пропускает его, это запрос, не ответ.
  2. С untrusted-порта приходит DHCPOFFER (ответ с предложением адреса) — коммутатор дропает пакет. Не доверяем.
  3. С trusted-порта приходит DHCPOFFER — пропускаем, всё по протоколу.
  4. Клиент получает адрес — коммутатор записывает в Binding Table запись: IP + MAC + VLAN + Port + время аренды.

Именно эта таблица привязок становится фундаментом для двух других механизмов безопасности: Dynamic ARP Inspection (DAI) и IP Source Guard. Но об этом в отдельных статьях.

DHCP Snooping Binding Table — сердце механизма

Таблица привязок (Binding Table) — это живой журнал, который коммутатор ведёт в реальном времени. Она хранит следующую информацию по каждому клиенту:

Поле Описание
IP Address Выданный DHCP-адрес
MAC Address MAC клиента
VLAN VLAN, в котором находится клиент
Interface Порт коммутатора, к которому подключён клиент
Lease Time Время аренды адреса

Посмотреть таблицу на Cisco можно командой:

show ip dhcp snooping binding

Пример вывода:

MacAddress          IpAddress        Lease(sec)  Type           VLAN  Interface
------------------  ---------------  ----------  -------------  ----  --------------------
AA:BB:CC:DD:EE:01   10.0.10.101      86400       dhcp-snooping  10    GigabitEthernet0/2
AA:BB:CC:DD:EE:02   10.0.10.102      86400       dhcp-snooping  10    GigabitEthernet0/3

Эта таблица — не просто лог. На её основе работают дополнительные проверки: если с порта GigabitEthernet0/2 вдруг полетит трафик с IP 10.0.10.200 вместо 10.0.10.101 — IP Source Guard заблокирует его мгновенно.

Важный момент про сохранение таблицы. По умолчанию на многих платформах Binding Table хранится в оперативной памяти и теряется при перезагрузке. После ребута коммутатора все клиенты должны переполучить адреса, чтобы таблица восстановилась. На Cisco можно включить сохранение на диск:

ip dhcp snooping database flash:dhcp-snooping.db

Trusted и Untrusted порты: логика разделения

Это ключевая концепция, без понимания которой настройка DHCP Snooping превратится в хаос. Запоминайте как мантру:

По умолчанию все порты — untrusted. Это не баг, это фича. Безопасная позиция по умолчанию: никому не доверяем, пока явно не разрешим.

Какие порты делаем trusted

  • Порт, к которому подключён легитимный DHCP-сервер — очевидно.
  • Uplink-порты (транки до вышестоящих коммутаторов) — если ваш DHCP-сервер находится за другим коммутатором, uplink должен быть trusted, иначе ответы сервера будут дропаться.
  • Порты DHCP relay агентов — если используете ip helper-address на маршрутизаторе, порт в его сторону — trusted.

Какие порты остаются untrusted

  • Все клиентские порты — рабочие станции, ноутбуки, телефоны, принтеры.
  • Порты точек доступа (если AP не является DHCP relay).
  • Любой порт, за которым может оказаться неконтролируемое устройство.
Типичная ошибка новичка: поставить весь транк как untrusted «для безопасности» — и получить жалобы, что половина VLANов больше не получает адреса. Trusted ≠ незащищённый. Trusted = «DHCP-ответы с этого порта разрешены».

DHCP Snooping и VLAN: почему включают по VLAN

DHCP Snooping работает не глобально для всей сети, а пер-VLAN. Это важно. Вы включаете глобально snooping на коммутаторе, но затем явно указываете, для каких VLAN он активен.

Зачем такая гранулярность? В реальных сетях десятки VLAN с разной логикой. Например, в management VLAN у вас может быть свой отдельный DHCP, в VLAN для гостей — другой. Не всегда нужно включать snooping везде. Вы контролируете, где именно стоит защита.

На практике для enterprise-сети рекомендация простая: включайте DHCP Snooping на всех пользовательских VLAN без исключений.

DHCP Snooping и DHCP Relay: не забудьте про uplink

Очень частая ситуация в корпоративных сетях: DHCP-сервер стоит централизованно (Windows Server, ISC DHCP), а клиенты разбросаны по разным VLAN и L3-сегментам. В этом случае на маршрутизаторе (или L3-коммутаторе) настраивается DHCP relay — ip helper-address, который перенаправляет DHCP-запросы к серверу.

Как это взаимодействует с DHCP Snooping:

  1. Клиент шлёт DHCPDISCOVER на широковещательный адрес.
  2. L3-устройство с ip helper-address перехватывает и пересылает unicast’ом на DHCP-сервер.
  3. DHCP-сервер отвечает через тот же L3-агент.
  4. L3-агент пересылает ответ клиенту через uplink-порт коммутатора.

Вот тут и засада: если uplink к L3-агенту не помечен как trusted — DHCP Snooping дропнет ответ сервера. Клиенты не получат адреса. Все будут смотреть на вас с немым вопросом.

Правило: Всегда помечайте uplink в сторону DHCP relay/сервера как trusted.

Общая схема настройки DHCP Snooping

Независимо от вендора, алгоритм настройки выглядит одинаково:

  1. Глобально включить DHCP Snooping на коммутаторе.
  2. Указать VLAN, на которых он активен.
  3. Пометить нужные порты как trusted.
  4. Проверить таблицу привязок после того, как клиенты получат адреса.
  5. Убедиться, что легитимный DHCP работает, а левый — нет.

Теперь — к конкретным командам для каждого вендора.

Настройка DHCP Snooping на Cisco

Cisco — классика жанра. DHCP Snooping здесь реализован наиболее полно, и именно на примере Cisco проще всего объяснить концепцию. Работает на IOS и IOS-XE, включая коммутаторы серий Catalyst 2960, 3560, 3750, 9200, 9300.

Включение DHCP Snooping на Cisco: пошаговая настройка

! Шаг 1: Глобально включить DHCP Snooping
ip dhcp snooping

! Шаг 2: Включить для нужных VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20,30

! Шаг 3: Отключить option 82 если не нужен (часто вызывает проблемы с некоторыми серверами)
no ip dhcp snooping information option

! Шаг 4: Пометить trusted-порты (uplink, порт DHCP-сервера)
interface GigabitEthernet0/1
 description Uplink to Core / DHCP Server
 ip dhcp snooping trust

! Шаг 5: Опционально — ограничить rate на клиентских портах
interface GigabitEthernet0/2
 description Client Port
 ip dhcp snooping limit rate 15

Проверка настройки на Cisco

! Общий статус
show ip dhcp snooping

! Таблица привязок
show ip dhcp snooping binding

! Статистика по дропнутым пакетам
show ip dhcp snooping statistics

Вывод show ip dhcp snooping должен показать:

Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10,20,30
Insertion of option 82 is disabled
Interface                  Trusted    Allow option    Rate limit (pps)
-------------------------  -------    ------------    ----------------
GigabitEthernet0/1         yes        yes             unlimited
GigabitEthernet0/2         no         no              15

Сохранение Binding Table на Cisco:

ip dhcp snooping database flash:snooping.db
ip dhcp snooping database write-delay 300

Про option 82 на Cisco

По умолчанию Cisco вставляет DHCP Option 82 (relay agent information) в пакеты. Это полезно для некоторых сценариев, но если ваш DHCP-сервер не настроен её принимать — он будет дропать запросы и клиенты останутся без адресов. Поэтому в большинстве случаев рекомендуется выполнить no ip dhcp snooping information option.

Настройка DHCP Snooping на D-Link

D-Link — народный коммутатор малого и среднего бизнеса. DHCP Snooping здесь есть, настраивается через Web UI или CLI. Разберём оба варианта на примере серии DGS-1210/DGS-3000.

Через Web-интерфейс D-Link

  1. Заходим в Security → DHCP Snooping → DHCP Snooping Settings.
  2. Переводим DHCP Snooping State в Enabled.
  3. В разделе DHCP Snooping VLAN Settings добавляем нужные VLAN.
  4. Переходим в DHCP Snooping Port Settings и помечаем uplink-порты как Trusted.
  5. Сохраняем конфигурацию.

Через CLI на D-Link

# Включить DHCP Snooping глобально
enable dhcp_snooping

# Включить для VLAN
config dhcp_snooping vlan 10 state enable

# Настроить trusted порт
config dhcp_snooping ports 1 state trusted

# Проверить
show dhcp_snooping
show dhcp_snooping binding_entries

На D-Link особенность: нумерация портов идёт как 1, 2, а не в формате GigabitEthernet0/1. Не путайтесь.

Настройка DHCP Snooping на Huawei

Коммутаторы Huawei серии S (S5700, S6700 и другие) используются в корпоративных сетях. DHCP Snooping здесь называется так же, команды немного отличаются от Cisco, но логика та же.

# Войти в системный вид
system-view

# Включить DHCP Snooping глобально
dhcp snooping enable

# Включить на интерфейсе VLAN
vlan 10
 dhcp snooping enable
quit

# Настроить trusted порт (в представлении интерфейса)
interface GigabitEthernet0/0/1
 dhcp snooping trusted
quit

# Проверка
display dhcp snooping user-bind all
display dhcp snooping configuration

На Huawei есть нюанс: DHCP Snooping включается сначала глобально командой dhcp snooping enable, затем дополнительно включается в каждом VLAN. Если забыть второй шаг — не заработает. Классические грабли.

Также на Huawei можно настроить проверку соответствия опций в DHCP-пакете:

interface GigabitEthernet0/0/2
 dhcp snooping check dhcp-chaddr enable
 dhcp snooping check dhcp-request enable

Настройка DHCP Snooping на Eltex

Eltex — российский вендор, набирающий популярность. Коммутаторы MES серии широко применяются в телекоме и enterprise. Команды во многом похожи на Cisco IOS, что упрощает жизнь.

! Включить DHCP Snooping глобально
ip dhcp snooping

! Включить для VLAN
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20

! Отключить Option 82 (если не нужен)
no ip dhcp snooping information option

! Настроить trusted порт
interface gigabitethernet 1/0/1
 ip dhcp snooping trust

! Ограничение rate на клиентских портах
interface gigabitethernet 1/0/2
 ip dhcp snooping limit rate 15

! Проверка
show ip dhcp snooping
show ip dhcp snooping binding

Настройка на Eltex максимально приближена к Cisco. Если вы знаете Cisco — освоитесь за пять минут. Синтаксис практически идентичен, разве что нумерация интерфейсов отличается.

DHCP Snooping на MikroTik: альтернативный подход

Вот тут начинается особый разговор. MikroTik не имеет классического механизма DHCP Snooping в том виде, как он реализован у Cisco, Huawei или Eltex. Это надо принять и двигаться дальше.

Однако похожая функциональность реализуется несколькими способами:

Способ 1: DHCP Alert

MikroTik умеет оповещать об обнаружении чужого DHCP-сервера:

/ip dhcp-client
add interface=ether1 disabled=no

/ip dhcp-server alert
add interface=bridge1 valid-server=AA:BB:CC:DD:EE:FF alert-timeout=1m

Здесь valid-server — MAC вашего легитимного DHCP-сервера. Если на интерфейсе появится ответ с другого MAC — MikroTik отправит уведомление (и может выполнить скрипт).

Способ 2: Bridge Filter

Более жёсткий вариант — блокировать DHCP-ответы (порт 67/68) с конкретных портов через Bridge Filter:

/interface bridge filter
add chain=forward in-interface=ether2 mac-protocol=ip \
    ip-protocol=udp dst-port=68 src-port=67 action=drop \
    comment="Block DHCP Offers from untrusted ports"

Это правило дропает DHCP-ответы (src-port 67), приходящие с порта ether2 (клиентский порт). Trusted-порт (ether1, например) такого правила не имеет — его ответы пропускаются.

Способ 3: IP/Firewall + ARP статика

В небольших сетях на MikroTik можно использовать комбинацию статических ARP-записей и firewall-правил для привязки IP к MAC и блокировки несанкционированных назначений. Это не DHCP Snooping в чистом виде, но для маленьких офисов работает.

Вывод по MikroTik: Если вам важна именно защита от Rogue DHCP на уровне коммутатора — лучше использовать MikroTik как маршрутизатор в связке с управляемым коммутатором (Cisco, Eltex, Huawei), где DHCP Snooping реализован нативно. MikroTik как L2-коммутатор в enterprise — не лучший выбор с точки зрения безопасности.

5 практических примеров из жизни администратора

Пример 1: Как поймать Rogue DHCP сервер в офисе

Ситуация: Часть клиентов получает адреса из неправильного диапазона. Жалобы на отсутствие интернета.

Диагностика без DHCP Snooping:

# На клиенте Windows — смотрим кто выдал адрес
ipconfig /all | findstr "DHCP Server"

# На клиенте Linux
ip route | grep default
cat /var/lib/dhclient/dhclient.leases | grep "dhcp-server-identifier"

Нашли подозрительный IP? Теперь находим порт в таблице MAC на коммутаторе:

show mac address-table | include [MAC-адрес злоумышленника]

Решение: Включаем DHCP Snooping — и проблема исчезает автоматически. Рогового сервера больше нет, его ответы дропаются на уровне коммутатора.

Пример 2: IP-телефоны перестали получать адреса после включения Snooping

Ситуация: Включили DHCP Snooping на коммутаторе. Компьютеры работают, IP-телефоны Cisco не получают адрес из VLAN Voice (VLAN 20).

Причина: Забыли добавить VLAN 20 в список защищаемых VLAN для snooping, или не добавили uplink в trusted для этого VLAN.

# Проверяем какие VLAN защищены
show ip dhcp snooping

# Добавляем VLAN для телефонов
ip dhcp snooping vlan 20

# Если uplink уже trusted - всё должно заработать
# Проверяем binding после перезапроса адреса на телефоне
show ip dhcp snooping binding

Пример 3: DHCP работает в одном VLAN и не работает в другом

Ситуация: VLAN 10 — всё отлично. VLAN 30 — клиенты не получают адреса. DHCP-сервер один, централизованный, через relay.

Причина чаще всего одна из двух:

  1. DHCP Snooping не включён для VLAN 30: ip dhcp snooping vlan 30 — не выполнялось.
  2. Uplink к relay-агенту не trusted для данного коммутатора.
# Диагностика
show ip dhcp snooping statistics
! Смотрим на строку "Packets dropped" — если растёт, пакеты дропаются

# Включаем debug (осторожно на production!)
debug ip dhcp snooping packet

Пример 4: Как посмотреть Binding Table и проверить всё ли ОК

Задача: Убедиться, что все клиенты корректно отражены в таблице привязок.

# Cisco
show ip dhcp snooping binding

# Фильтрация по VLAN
show ip dhcp snooping binding vlan 10

# Huawei
display dhcp snooping user-bind all

# Eltex
show ip dhcp snooping binding

# D-Link
show dhcp_snooping binding_entries

Если таблица пустая после включения Snooping — это нормально до момента, когда клиенты заново запросят адреса. Можно на Windows-клиентах выполнить ipconfig /renew, на Linux — dhclient -r && dhclient eth0.

Пример 5: Классика — забыли trust на uplink и получили полный хаос

Ситуация: Включили DHCP Snooping на всех коммутаторах в офисе. Через 10 минут звонки: «Интернет не работает!» У половины пользователей адреса есть, у половины — нет.

Причина: На access-коммутаторах не пометили trunk-порт в сторону distribution-коммутатора как trusted. DHCP-ответы от центрального сервера приходят через trunk, коммутатор их дропает.

# Срочная диагностика
show ip dhcp snooping statistics
! Видим огромный счётчик dropped packets

# Лечение
interface GigabitEthernet0/24
 description Trunk to Distribution
 ip dhcp snooping trust

Урок: перед включением DHCP Snooping на продакшн — нарисуйте схему сети и отметьте на ней все trusted-порты. Это займёт 15 минут и сэкономит несколько часов нервотрёпки.

DHCP Snooping не работает — разбираем частые ошибки

Симптом Вероятная причина Решение
Клиенты не получают адреса после включения Snooping Uplink не помечен как trusted ip dhcp snooping trust на uplink-порту
Только часть VLAN работает DHCP Snooping не включён для всех нужных VLAN ip dhcp snooping vlan X для каждого VLAN
DHCP через relay не работает Порт в сторону relay не trusted Пометить интерфейс к L3-агенту как trusted
После перезагрузки коммутатора все клиенты теряют связь Binding Table не сохраняется Настроить ip dhcp snooping database
Сервер отбрасывает DHCP-запросы Вставляется Option 82, сервер его не принимает no ip dhcp snooping information option
На Huawei snooping включён, но не работает Не включён на уровне VLAN (только глобально) Войти в VLAN и выполнить dhcp snooping enable

Debug и диагностика

# Cisco — статистика по дропам
show ip dhcp snooping statistics

# Cisco — детальный debug (использовать осторожно!)
debug ip dhcp snooping packet
debug ip dhcp snooping event

# Не забудьте отключить debug после диагностики!
undebug all

Сравнение DHCP Snooping у разных вендоров

Если вы выбираете коммутаторы для новой сети или расширяете существующую, вот краткая сравнительная таблица реализации DHCP Snooping:

Вендор Наличие Snooping CLI / Web UI Сохранение Binding Table Сложность настройки
Cisco (IOS/IOS-XE) ✅ Полная поддержка CLI + Web (на новых) ✅ Flash/TFTP Средняя
Huawei (VRP) ✅ Полная поддержка CLI + eSight Средняя
Eltex (MES) ✅ Полная поддержка CLI + Web UI Низкая (как Cisco)
D-Link (DGS) ✅ Есть CLI + Web UI ⚠️ Зависит от модели Низкая
MikroTik (RouterOS) ⚠️ Нет нативного CLI + Winbox N/A Высокая (через workaround)

Для корпоративных сетей, где безопасность критична, рекомендуем управляемые коммутаторы с нативной поддержкой DHCP Snooping: Cisco Catalyst, Huawei S-серии или отечественный Eltex MES. Последний особенно актуален в условиях импортозамещения.

Профилактика и лучшие практики

Чеклист перед включением DHCP Snooping в production

  • ☑️ Нарисована схема сети с обозначением всех DHCP-серверов и relay-агентов.
  • ☑️ Определены все trusted-порты (uplink, серверные порты).
  • ☑️ Составлен список всех VLAN, на которых нужен Snooping.
  • ☑️ Проверен вопрос с Option 82 (нужен ли вашему серверу).
  • ☑️ Настроено сохранение Binding Table на энергонезависимое хранилище.
  • ☑️ Запланировано окно обслуживания для включения (Snooping может кратковременно прервать DHCP).
  • ☑️ Под рукой консольный доступ на случай если что-то пойдёт не так.

Связка DHCP Snooping с другими механизмами безопасности

DHCP Snooping — это фундамент. На его основе строятся два более мощных механизма:

  • Dynamic ARP Inspection (DAI) — использует Binding Table для проверки ARP-пакетов. Защищает от ARP Spoofing и отравления ARP-таблиц.
  • IP Source Guard — разрешает трафик с порта только с тем IP-адресом, который зафиксирован в Binding Table. Полная защита от IP Spoofing на уровне L2.

Включение всех трёх механизмов вместе — это золотой стандарт безопасности для клиентских портов в корпоративной сети. Никаких посторонних DHCP, никакого ARP-спуфинга, никаких поддельных IP. Как на скриншоте ниже — схема защиты по уровням.

Регулярный аудит Binding Table

Не забывайте периодически просматривать Binding Table — это полезный срез состояния сети. Видите незнакомый MAC на порту? Это повод для расследования.

# Скрипт для периодического экспорта Binding Table (для EEM на Cisco)
event manager applet DHCP_SNOOPING_BACKUP
 event timer cron cron-entry "0 */6 * * *"
 action 1.0 cli command "enable"
 action 2.0 cli command "show ip dhcp snooping binding | redirect tftp://10.0.0.100/snooping-backup.txt"

Итог: что мы сделали и что получили

Итак, подведём диагноз и рецепт в одном флаконе. DHCP Snooping — это обязательный механизм безопасности для любой управляемой корпоративной сети. Не факультативная опция, не «можно сделать потом», а базовая гигиена, которая:

  • Устраняет угрозу Rogue DHCP — главного источника хаоса в плоских сетях.
  • Защищает от DHCP Spoofing и man-in-the-middle атак через подмену шлюза.
  • Формирует Binding Table как основу для DAI и IP Source Guard.
  • Настраивается за 5-10 минут на любом управляемом коммутаторе.

Мы разобрали настройку на Cisco, D-Link, Huawei, Eltex и MikroTik. Разобрали 5 реальных кейсов из практики. Составили таблицу типичных ошибок. Теперь у вас есть всё, чтобы настроить это в своей сети сегодня, не откладывая.

Есть вопросы по настройке на конкретном оборудовании? Столкнулись с нестандартным поведением? Пишите в комментарии — разберём вместе. Подпишитесь на телеграм-канал, чтобы не пропустить следующие рецепты из IT-Аптеки.

over_dude
Author: over_dude

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх