mikrotik-wiki.ru
Главная
Загрузка...

DHCP Snooping на MikroTik — защита от rogue DHCP

RouterOS 7.xIP13 мин130 мар. 2026 г.
TelegramVK

DHCP Snooping — механизм безопасности на уровне bridge, который фильтрует DHCP-ответы от неавторизованных серверов. В корпоративной сети, общежитии или коворкинге любой пользователь может случайно или намеренно запустить DHCP-сервер на своём устройстве, что приведёт к выдаче неправильных IP-адресов, шлюзов и DNS-серверов. Rogue DHCP — одна из самых частых причин «необъяснимых» проблем с сетью. MikroTik поддерживает DHCP Snooping в bridge начиная с RouterOS 6.43, в RouterOS 7.20+ функция значительно улучшена. В этом руководстве настроим DHCP Snooping, разберём Dynamic ARP Inspection (DAI) и IP Source Guard, а также рассмотрим типичные сценарии и ошибки.

Описание

Проблема: rogue DHCP-сервер

DHCP работает на широковещательном уровне — клиент отправляет DHCP Discover broadcast, и все DHCP-серверы в L2-домене могут ответить. Клиент принимает первый пришедший DHCP Offer. Если в сети появился несанкционированный DHCP-сервер (rogue DHCP), он может ответить быстрее легитимного.

Последствия rogue DHCP:

ПроблемаОписание
Неправильный IPКлиенты получают адреса из чужой подсети — нет связи с сетью
Неправильный шлюзТрафик идёт через устройство злоумышленника → MITM-атака
Неправильный DNSDNS-запросы идут на вредоносный сервер → фишинг, подмена сайтов
Дублирование IPДва DHCP-сервера выдают одинаковые адреса → конфликты IP
Каскадный отказВсе устройства перестают работать после обновления lease

Типичные причины появления rogue DHCP:

  • Сотрудник принёс домашний Wi-Fi роутер и подключил LAN-портом в офисную сеть
  • Виртуальная машина с DHCP-сервером (VMware, Docker) подключена к bridged-сети
  • Вредоносное ПО запускает DHCP-сервер для MITM-атаки
  • Misconfigured устройство в серверной

Как работает DHCP Snooping

DHCP Snooping делит порты bridge на два типа:

Тип портаОписаниеDHCP Offer/Ack
TrustedПорт, к которому подключён легитимный DHCP-сервер или uplinkРазрешены
UntrustedВсе остальные порты (клиентские)Блокируются

Логика работы:

code
[DHCP Client]──►[Bridge Port (untrusted)]
                        │
                   DHCP Discover ──► проходит (broadcast от клиента)
                        │
[DHCP Server]──►[Bridge Port (trusted)]
                        │
                   DHCP Offer ──► проходит (ответ от trusted порта)

[Rogue DHCP]──►[Bridge Port (untrusted)]
                        │
                   DHCP Offer ──► БЛОКИРУЕТСЯ (ответ от untrusted порта)

Bridge анализирует DHCP-пакеты (порты UDP 67/68) и блокирует DHCP Offer, DHCP Ack и DHCP NAK с untrusted портов. DHCP Discover и DHCP Request от клиентов пропускаются с любых портов.

DHCP Snooping Database

При прохождении DHCP-транзакции через bridge DHCP Snooping записывает binding: связку MAC-адрес ↔ IP-адрес ↔ порт ↔ VLAN ↔ время. Эта база данных используется для:

  • Dynamic ARP Inspection (DAI) — проверка ARP-пакетов на соответствие DHCP Snooping Database
  • IP Source Guard — блокировка трафика с поддельным src-IP
Запись Snooping DBЗначение
MAC-addressMAC клиента из DHCP-пакета
IP-addressНазначенный DHCP-сервером IP
Bridge portФизический порт, с которого пришёл запрос
VLANVLAN-тег (если используется)
Lease timeВремя аренды адреса

Архитектура защиты

code
                          [Uplink / DHCP Server]
                                  │
                           Bridge Port 1
                           (trusted=yes)
                                  │
┌─────────────────────────────────┼─────────────────────────────────┐
│                            Bridge                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐            │
│  │ DHCP Snooping│  │   DAI        │  │ IP Source    │            │
│  │ (фильтрация  │  │ (проверка    │  │ Guard        │            │
│  │  DHCP Offer) │  │  ARP)        │  │ (проверка IP)│            │
│  └──────────────┘  └──────────────┘  └──────────────┘            │
│                                                                    │
│  Port 2          Port 3          Port 4          Port 5           │
│  (untrusted)     (untrusted)     (untrusted)     (untrusted)     │
└──────┬──────────────┬──────────────┬──────────────┬──────────────┘
       │              │              │              │
    [PC-1]        [PC-2]      [Rogue DHCP]      [PC-4]
                                  ✗ DHCP Offer blocked

DHCP Snooping vs другие методы защиты

МетодУровень защитыСложностьПобочные эффекты
DHCP SnoopingBridge (L2)НизкаяНет, если правильно настроены trusted-порты
Firewall filterIP (L3)СредняяНужно знать IP rogue DHCP заранее
DHCP AlertМониторингНизкаяТолько оповещение, не блокирует
802.1XPort-based authВысокаяТребует RADIUS, сертификаты
Static DHCPDHCP serverНизкаяНеудобно для большого числа клиентов

Настройка

Шаг 1: Подготовка bridge

Убедитесь, что bridge существует и все клиентские порты добавлены.

[admin@MikroTik] >
# Проверяем текущую конфигурацию bridge
/interface/bridge print
/interface/bridge/port print

# Если bridge ещё не создан
/interface/bridge add name=bridge-lan protocol-mode=rstp comment="LAN Bridge"

# Добавляем порты
/interface/bridge/port add bridge=bridge-lan interface=ether2 comment="Server/DHCP uplink"
/interface/bridge/port add bridge=bridge-lan interface=ether3 comment="Office - floor 1"
/interface/bridge/port add bridge=bridge-lan interface=ether4 comment="Office - floor 2"
/interface/bridge/port add bridge=bridge-lan interface=ether5 comment="Meeting room"
/interface/bridge/port add bridge=bridge-lan interface=wlan1 comment="Wi-Fi"

Шаг 2: Включение DHCP Snooping на bridge

[admin@MikroTik] >
# Включаем DHCP Snooping
/interface/bridge set bridge-lan dhcp-snooping=yes

# Опционально: включаем IP Source Guard и DAI
/interface/bridge set bridge-lan dhcp-snooping=yes arp-inspection=yes

После включения DHCP Snooping все порты bridge по умолчанию становятся untrusted. Это означает, что DHCP Offer/Ack будет заблокирован на всех портах, включая тот, к которому подключён легитимный DHCP-сервер. Именно поэтому следующий шаг критически важен.

Шаг 3: Назначение trusted-портов

Trusted-порт — это порт, через который bridge ожидает получать DHCP-ответы. Обычно это:

  • Порт, к которому подключён DHCP-сервер (или сам роутер, если он DHCP-сервер)
  • Uplink-порт (если DHCP-сервер находится в другом сегменте)
  • Порт, ведущий к relay agent
[admin@MikroTik] >
# Порт, к которому подключён DHCP-сервер — trusted
/interface/bridge/port set [find where interface=ether2] trusted=yes

# Если роутер сам является DHCP-сервером, то trust bridge port не нужен —
# пакеты от самого роутера не проходят через bridge filter.
# Но если DHCP-сервер на другом устройстве — порт к нему должен быть trusted.

# Все остальные порты остаются untrusted (по умолчанию)
# Проверяем
/interface/bridge/port print

Важно: если MikroTik сам является DHCP-сервером (что часто бывает), DHCP-ответы генерируются локально и не проходят через bridge. В этом случае trusted-порт нужен только для внешних DHCP-серверов или relay.

Шаг 4: Настройка DHCP Snooping для VLAN-сети

Если используются VLAN, DHCP Snooping работает per-VLAN. Необходимо включить VLAN filtering на bridge.

[admin@MikroTik] >
# Включаем VLAN filtering (если ещё не включён)
/interface/bridge set bridge-lan vlan-filtering=yes

# DHCP Snooping автоматически работает для всех VLAN
# Trusted-порт пропускает DHCP-ответы во всех VLAN

# Пример: VLAN 10 — офис, VLAN 20 — гости
/interface/bridge/vlan add bridge=bridge-lan vlan-ids=10 tagged=ether2 untagged=ether3,ether4
/interface/bridge/vlan add bridge=bridge-lan vlan-ids=20 tagged=ether2 untagged=ether5,wlan1

Шаг 5: Dynamic ARP Inspection (DAI)

DAI проверяет ARP-пакеты на соответствие записям DHCP Snooping Database. Если устройство отправляет ARP с IP-адресом, который не соответствует его MAC в snooping DB, пакет отбрасывается. Это защищает от ARP spoofing.

[admin@MikroTik] >
# Включаем ARP Inspection вместе с DHCP Snooping
/interface/bridge set bridge-lan dhcp-snooping=yes arp-inspection=yes

# DAI также использует trusted/untrusted порты:
# - На trusted портах ARP не проверяется
# - На untrusted портах ARP проверяется по DHCP Snooping DB

# Для устройств со статическим IP (не через DHCP) нужно добавить
# статические записи, иначе DAI заблокирует их ARP

Важно: если в сети есть устройства со статическими IP (серверы, принтеры), DAI заблокирует их ARP-запросы, потому что в DHCP Snooping Database нет записей для этих устройств. Решение — добавить статические записи или разместить такие устройства на trusted-портах.

Шаг 6: IP Source Guard

IP Source Guard проверяет, что src-IP в пакетах соответствует DHCP Snooping Database. Это предотвращает IP spoofing.

[admin@MikroTik] >
# IP Source Guard включается на уровне bridge port
# Работает только при активном DHCP Snooping

# Для конкретных портов
/interface/bridge/port set [find where interface=ether3] ip-source-guard=yes
/interface/bridge/port set [find where interface=ether4] ip-source-guard=yes
/interface/bridge/port set [find where interface=ether5] ip-source-guard=yes

Внимание: IP Source Guard блокирует ВСЕ пакеты с IP-адресом, не зарегистрированным в Snooping DB. Включайте только после того, как все клиенты получили DHCP lease.

Шаг 7: Сценарий — офис с несколькими этажами

code
[MikroTik Router]
  ether1 — WAN (ISP)
  ether2 — Сервер с DHCP (10.0.0.2)
  ether3 — Коммутатор 1 этажа (20 портов)
  ether4 — Коммутатор 2 этажа (20 портов)
  ether5 — Wi-Fi точка доступа
[admin@MikroTik] >
# Bridge
/interface/bridge add name=bridge-office dhcp-snooping=yes comment="Office LAN"

# Порты
/interface/bridge/port add bridge=bridge-office interface=ether2 trusted=yes \
    comment="DHCP Server uplink"
/interface/bridge/port add bridge=bridge-office interface=ether3 trusted=no \
    comment="Floor 1 switch"
/interface/bridge/port add bridge=bridge-office interface=ether4 trusted=no \
    comment="Floor 2 switch"
/interface/bridge/port add bridge=bridge-office interface=ether5 trusted=no \
    comment="Wi-Fi AP"

# DHCP-сервер (если на MikroTik)
/ip/address add address=10.0.0.1/24 interface=bridge-office
/ip/dhcp-server/network add address=10.0.0.0/24 gateway=10.0.0.1 dns-server=10.0.0.1
/ip/pool add name=office-pool ranges=10.0.0.100-10.0.0.250
/ip/dhcp-server add name=dhcp-office interface=bridge-office address-pool=office-pool \
    lease-time=8h disabled=no

Шаг 8: Сценарий — общежитие / коворкинг

В общежитии или коворкинге риск rogue DHCP максимален. Рекомендуется включить все три механизма защиты.

[admin@MikroTik] >
# Создаём bridge с полной защитой
/interface/bridge add name=bridge-dorm \
    dhcp-snooping=yes \
    arp-inspection=yes \
    comment="Dorm network - full L2 security"

# Uplink — trusted
/interface/bridge/port add bridge=bridge-dorm interface=sfp1 trusted=yes \
    comment="Uplink to core switch"

# Все клиентские порты — untrusted + IP Source Guard
/interface/bridge/port add bridge=bridge-dorm interface=ether1 trusted=no \
    comment="Room 101"
/interface/bridge/port add bridge=bridge-dorm interface=ether2 trusted=no \
    comment="Room 102"
/interface/bridge/port add bridge=bridge-dorm interface=ether3 trusted=no \
    comment="Room 103"
/interface/bridge/port add bridge=bridge-dorm interface=ether4 trusted=no \
    comment="Room 104"

# Включаем IP Source Guard на клиентских портах
/interface/bridge/port set [find where bridge=bridge-dorm and !trusted] ip-source-guard=yes

Шаг 9: Мониторинг через DHCP Alert (дополнительно)

DHCP Alert — это отдельный механизм, который оповещает администратора при обнаружении DHCP-ответа от неизвестного сервера. Работает параллельно с DHCP Snooping.

[admin@MikroTik] >
# Включаем DHCP Alert на интерфейсе
/ip/dhcp-server/alert add interface=bridge-office \
    valid-server=10.0.0.1 \
    on-alert="/log warning \"Rogue DHCP detected!\""

# valid-server — IP легитимного DHCP-сервера
# Если обнаружен ответ от другого IP — срабатывает alert

Проверка

Проверка состояния DHCP Snooping

[admin@MikroTik] >
# Проверяем настройки bridge
/interface/bridge print detail where name=bridge-office
# Ищем: dhcp-snooping=yes

# Проверяем trusted/untrusted порты
/interface/bridge/port print detail
# Ищем: trusted=yes/no для каждого порта

Просмотр DHCP Snooping Database

[admin@MikroTik] >
# Таблица binding — MAC ↔ IP ↔ port
/interface/bridge/host print where dhcp-snooping=yes

# Или через специальную команду (зависит от версии RouterOS)
/interface/bridge/host print

Тестирование — имитация rogue DHCP

Для тестирования подключите второй роутер к untrusted-порту и настройте на нём DHCP-сервер.

[admin@MikroTik] >
# На тестовом роутере (rogue)
/ip/dhcp-server add name=rogue interface=ether1 address-pool=rogue-pool
/ip/pool add name=rogue-pool ranges=192.168.99.10-192.168.99.50

# На основном роутере — проверяем логи
/log print where topics~"bridge"

# Если DHCP Snooping работает, клиенты НЕ получат адрес 192.168.99.x

Проверка DAI

[admin@MikroTik] >
# Проверяем, что ARP Inspection включён
/interface/bridge print detail where name=bridge-office

# Проверяем счётчики отброшенных ARP-пакетов
/interface/bridge/port print stats

# Тест: на клиентском ПК назначаем статический IP (не через DHCP)
# и проверяем, что ARP для этого IP блокируется

Проверка IP Source Guard

[admin@MikroTik] >
# Проверяем, на каких портах включён IP Source Guard
/interface/bridge/port print where ip-source-guard=yes

# Мониторинг заблокированных пакетов
/interface/bridge/port print stats

Проверка логов

[admin@MikroTik] >
# Включаем подробное логирование bridge
/system/logging add topics=bridge action=memory

# Проверяем логи
/log print where topics~"bridge"

# Типичные записи при блокировке rogue DHCP:
# bridge,info DHCP snooping: dropping DHCP offer from untrusted port ether4

Проверка через Packet Sniffer

[admin@MikroTik] >
# Перехватываем DHCP-трафик для анализа
/tool/sniffer set filter-protocol=udp filter-port=67-68 \
    filter-interface=bridge-office streaming-enabled=no

/tool/sniffer start
# Ждём несколько DHCP-транзакций
/tool/sniffer stop

/tool/sniffer/packet print detail

Типичные ошибки

Ошибка 1: После включения DHCP Snooping клиенты не получают IP

Проблема: включили DHCP Snooping на bridge, но забыли установить trusted=yes для порта с DHCP-сервером. Все DHCP-ответы блокируются.

Симптомы: клиенты получают APIPA-адрес (169.254.x.x), в логах — сообщения о drop DHCP offer.

Решение:

[admin@MikroTik] >
# Проверяем, какой порт ведёт к DHCP-серверу
/ip/dhcp-server print
# Смотрим interface — если это bridge, DHCP-сервер на самом MikroTik
# Если DHCP на внешнем устройстве — находим порт

# Устанавливаем trusted
/interface/bridge/port set [find where interface=ether2] trusted=yes

# Проверяем
/interface/bridge/port print

Важный нюанс: если MikroTik сам является DHCP-сервером, его ответы генерируются локально и не фильтруются bridge. В этом случае trusted-порт нужен только для внешних DHCP-серверов. Но если DHCP-сервер находится за trunk-портом (через коммутатор), этот порт обязательно должен быть trusted.

Ошибка 2: DHCP Snooping блокирует DHCP Relay

Проблема: DHCP-сервер находится в другом VLAN или подсети, используется DHCP Relay. После включения DHCP Snooping relay перестаёт работать.

Решение: порт, через который relay-ответы возвращаются в bridge, должен быть trusted.

[admin@MikroTik] >
# Пример: DHCP Relay на MikroTik
/ip/dhcp-relay add name=relay-vlan10 interface=bridge-vlan10 \
    dhcp-server=10.0.0.2 disabled=no

# Порт, через который идёт связь с DHCP-сервером — trusted
/interface/bridge/port set [find where interface=ether1] trusted=yes

Ошибка 3: DAI блокирует устройства со статическим IP

Проблема: серверы, принтеры и другие устройства со статическим IP не могут общаться с сетью после включения ARP Inspection. DAI проверяет ARP по DHCP Snooping DB, но для статических IP записей нет.

Решение: варианты.

  1. Перевести устройства на DHCP reservation (рекомендуется).
[admin@MikroTik] >
# Создаём статический DHCP lease для сервера
/ip/dhcp-server/lease add address=10.0.0.5 mac-address=AA:BB:CC:DD:EE:FF \
    server=dhcp-office comment="Print server (static lease)"
  1. Подключить устройства к trusted-порту.
[admin@MikroTik] >
# Порт с принтером — trusted (DAI не проверяет)
/interface/bridge/port set [find where interface=ether5] trusted=yes
  1. Отключить DAI, оставить только DHCP Snooping.
[admin@MikroTik] >
/interface/bridge set bridge-office arp-inspection=no

Ошибка 4: DHCP Snooping не работает с hardware offloading

Проблема: на устройствах с аппаратным bridge (CRS3xx, CRS5xx) DHCP Snooping может не работать при включённом hardware offloading. Трафик обрабатывается чипом коммутатора, минуя CPU.

Решение: отключите hardware offloading для портов, где нужен DHCP Snooping.

[admin@MikroTik] >
# Проверяем статус HW offloading
/interface/bridge/port print where hw=yes

# Отключаем HW offload для нужных портов
/interface/bridge/port set [find where interface=ether3] hw=no
/interface/bridge/port set [find where interface=ether4] hw=no

# Альтернатива: отключить HW offload для всего bridge
/interface/bridge set bridge-office frame-types=admit-all

Внимание: отключение hardware offloading увеличивает нагрузку на CPU. На устройствах с большим трафиком (>1 Gbps) это может вызвать проблемы с производительностью.

Ошибка 5: IP Source Guard блокирует весь трафик после перезагрузки

Проблема: после перезагрузки роутера DHCP Snooping Database очищается. IP Source Guard блокирует весь трафик, пока клиенты не обновят DHCP lease.

Решение: несколько подходов.

[admin@MikroTik] >
# 1. Уменьшить lease time, чтобы клиенты быстрее обновляли
/ip/dhcp-server set dhcp-office lease-time=1h

# 2. После перезагрузки — временно отключить IP Source Guard
/interface/bridge/port set [find where ip-source-guard=yes] ip-source-guard=no
# Подождать, пока клиенты обновят lease
# Включить обратно
/interface/bridge/port set [find where bridge=bridge-office and !trusted] ip-source-guard=yes

Ошибка 6: Snooping не блокирует rogue DHCP на Wi-Fi

Проблема: rogue DHCP-сервер подключился по Wi-Fi, но DHCP Snooping не блокирует его ответы.

Причина: Wi-Fi интерфейс (wlan1) не добавлен в bridge, или добавлен, но его порт отсутствует в конфигурации bridge/port.

[admin@MikroTik] >
# Проверяем, что Wi-Fi интерфейс в bridge
/interface/bridge/port print where interface~"wlan"

# Если нет — добавляем
/interface/bridge/port add bridge=bridge-office interface=wlan1 trusted=no \
    comment="Wi-Fi AP"

# Для CAPsMAN — интерфейсы CAP автоматически добавляются в bridge
# Проверяем
/interface/bridge/port print where interface~"cap"

Ошибка 7: Конфликт DHCP Snooping и Firewall filter

Проблема: администратор настроил и DHCP Snooping, и firewall filter для блокировки DHCP. Правила конфликтуют или дублируются.

Решение: используйте один механизм. DHCP Snooping предпочтительнее, так как работает на L2 и эффективнее.

[admin@MikroTik] >
# Удаляем firewall-правила для блокировки DHCP (если есть)
/ip/firewall/filter remove [find where comment~"block DHCP" or comment~"rogue"]

# Оставляем только DHCP Snooping на bridge
/interface/bridge set bridge-office dhcp-snooping=yes

Рекомендации по развёртыванию

Пошаговый план внедрения

Не включайте все механизмы защиты одновременно. Поэтапный подход снижает риск потери связи.

ЭтапДействиеРиск
1Включить DHCP Snooping, настроить trusted-портыНизкий
2Мониторинг 1–2 дня, проверка логовНет
3Включить DAIСредний (статические IP)
4Мониторинг, добавление static lease для проблемных устройствНет
5Включить IP Source Guard на отдельных портахВысокий
6Расширить IP Source Guard на все untrusted-портыСредний

Полная конфигурация (итоговый скрипт)

[admin@MikroTik] >
# === DHCP Snooping — полная настройка для офиса ===

# Bridge с DHCP Snooping
/interface/bridge add name=bridge-office dhcp-snooping=yes comment="Office LAN with DHCP Snooping"

# Порты
/interface/bridge/port add bridge=bridge-office interface=ether2 trusted=yes \
    comment="Uplink to DHCP server"
/interface/bridge/port add bridge=bridge-office interface=ether3 trusted=no \
    comment="Floor 1"
/interface/bridge/port add bridge=bridge-office interface=ether4 trusted=no \
    comment="Floor 2"
/interface/bridge/port add bridge=bridge-office interface=ether5 trusted=no \
    comment="Meeting room"
/interface/bridge/port add bridge=bridge-office interface=wlan1 trusted=no \
    comment="Wi-Fi"

# IP и DHCP
/ip/address add address=10.0.0.1/24 interface=bridge-office
/ip/pool add name=office-pool ranges=10.0.0.100-10.0.0.250
/ip/dhcp-server/network add address=10.0.0.0/24 gateway=10.0.0.1 dns-server=10.0.0.1
/ip/dhcp-server add name=dhcp-office interface=bridge-office \
    address-pool=office-pool lease-time=8h disabled=no

# DHCP Alert — оповещение
/ip/dhcp-server/alert add interface=bridge-office \
    valid-server=10.0.0.1 \
    on-alert="/log warning \"Rogue DHCP detected on bridge-office!\""

# Логирование
/system/logging add topics=bridge,dhcp action=memory
[admin@MikroTik] >
[DHCP Client]──►[Bridge Port (untrusted)]
                        │
                   DHCP Discover ──► проходит (broadcast от клиента)
                        │
[DHCP Server]──►[Bridge Port (trusted)]
                        │
                   DHCP Offer ──► проходит (ответ от trusted порта)

[Rogue DHCP]──►[Bridge Port (untrusted)]
                        │
                   DHCP Offer ──► БЛОКИРУЕТСЯ (ответ от untrusted порта)
[Uplink / DHCP Server]
                                  │
                           Bridge Port 1
                           (trusted=yes)
                                  │
┌─────────────────────────────────┼─────────────────────────────────┐
│                            Bridge                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐            │
│  │ DHCP Snooping│  │   DAI        │  │ IP Source    │            │
│  │ (фильтрация  │  │ (проверка    │  │ Guard        │            │
│  │  DHCP Offer) │  │  ARP)        │  │ (проверка IP)│            │
│  └──────────────┘  └──────────────┘  └──────────────┘            │
│                                                                    │
│  Port 2          Port 3          Port 4          Port 5           │
│  (untrusted)     (untrusted)     (untrusted)     (untrusted)     │
└──────┬──────────────┬──────────────┬──────────────┬──────────────┘
       │              │              │              │
    [PC-1]        [PC-2]      [Rogue DHCP]      [PC-4]
                                  ✗ DHCP Offer blocked
# Проверяем текущую конфигурацию bridge
/interface/bridge print
/interface/bridge/port print

# Если bridge ещё не создан
/interface/bridge add name=bridge-lan protocol-mode=rstp comment="LAN Bridge"

# Добавляем порты
/interface/bridge/port add bridge=bridge-lan interface=ether2 comment="Server/DHCP uplink"
/interface/bridge/port add bridge=bridge-lan interface=ether3 comment="Office - floor 1"
/interface/bridge/port add bridge=bridge-lan interface=ether4 comment="Office - floor 2"
/interface/bridge/port add bridge=bridge-lan interface=ether5 comment="Meeting room"
/interface/bridge/port add bridge=bridge-lan interface=wlan1 comment="Wi-Fi"
# Включаем DHCP Snooping
/interface/bridge set bridge-lan dhcp-snooping=yes

# Опционально: включаем IP Source Guard и DAI
/interface/bridge set bridge-lan dhcp-snooping=yes arp-inspection=yes
# Порт, к которому подключён DHCP-сервер — trusted
/interface/bridge/port set [find where interface=ether2] trusted=yes

# Если роутер сам является DHCP-сервером, то trust bridge port не нужен —
# пакеты от самого роутера не проходят через bridge filter.
# Но если DHCP-сервер на другом устройстве — порт к нему должен быть trusted.

# Все остальные порты остаются untrusted (по умолчанию)
# Проверяем
/interface/bridge/port print
# Включаем VLAN filtering (если ещё не включён)
/interface/bridge set bridge-lan vlan-filtering=yes

# DHCP Snooping автоматически работает для всех VLAN
# Trusted-порт пропускает DHCP-ответы во всех VLAN

# Пример: VLAN 10 — офис, VLAN 20 — гости
/interface/bridge/vlan add bridge=bridge-lan vlan-ids=10 tagged=ether2 untagged=ether3,ether4
/interface/bridge/vlan add bridge=bridge-lan vlan-ids=20 tagged=ether2 untagged=ether5,wlan1
# Включаем ARP Inspection вместе с DHCP Snooping
/interface/bridge set bridge-lan dhcp-snooping=yes arp-inspection=yes

# DAI также использует trusted/untrusted порты:
# - На trusted портах ARP не проверяется
# - На untrusted портах ARP проверяется по DHCP Snooping DB

# Для устройств со статическим IP (не через DHCP) нужно добавить
# статические записи, иначе DAI заблокирует их ARP
# IP Source Guard включается на уровне bridge port
# Работает только при активном DHCP Snooping

# Для конкретных портов
/interface/bridge/port set [find where interface=ether3] ip-source-guard=yes
/interface/bridge/port set [find where interface=ether4] ip-source-guard=yes
/interface/bridge/port set [find where interface=ether5] ip-source-guard=yes
[MikroTik Router]
  ether1 — WAN (ISP)
  ether2 — Сервер с DHCP (10.0.0.2)
  ether3 — Коммутатор 1 этажа (20 портов)
  ether4 — Коммутатор 2 этажа (20 портов)
  ether5 — Wi-Fi точка доступа
# Bridge
/interface/bridge add name=bridge-office dhcp-snooping=yes comment="Office LAN"

# Порты
/interface/bridge/port add bridge=bridge-office interface=ether2 trusted=yes \
    comment="DHCP Server uplink"
/interface/bridge/port add bridge=bridge-office interface=ether3 trusted=no \
    comment="Floor 1 switch"
/interface/bridge/port add bridge=bridge-office interface=ether4 trusted=no \
    comment="Floor 2 switch"
/interface/bridge/port add bridge=bridge-office interface=ether5 trusted=no \
    comment="Wi-Fi AP"

# DHCP-сервер (если на MikroTik)
/ip/address add address=10.0.0.1/24 interface=bridge-office
/ip/dhcp-server/network add address=10.0.0.0/24 gateway=10.0.0.1 dns-server=10.0.0.1
/ip/pool add name=office-pool ranges=10.0.0.100-10.0.0.250
/ip/dhcp-server add name=dhcp-office interface=bridge-office address-pool=office-pool \
    lease-time=8h disabled=no
# Создаём bridge с полной защитой
/interface/bridge add name=bridge-dorm \
    dhcp-snooping=yes \
    arp-inspection=yes \
    comment="Dorm network - full L2 security"

# Uplink — trusted
/interface/bridge/port add bridge=bridge-dorm interface=sfp1 trusted=yes \
    comment="Uplink to core switch"

# Все клиентские порты — untrusted + IP Source Guard
/interface/bridge/port add bridge=bridge-dorm interface=ether1 trusted=no \
    comment="Room 101"
/interface/bridge/port add bridge=bridge-dorm interface=ether2 trusted=no \
    comment="Room 102"
/interface/bridge/port add bridge=bridge-dorm interface=ether3 trusted=no \
    comment="Room 103"
/interface/bridge/port add bridge=bridge-dorm interface=ether4 trusted=no \
    comment="Room 104"

# Включаем IP Source Guard на клиентских портах
/interface/bridge/port set [find where bridge=bridge-dorm and !trusted] ip-source-guard=yes
# Включаем DHCP Alert на интерфейсе
/ip/dhcp-server/alert add interface=bridge-office \
    valid-server=10.0.0.1 \
    on-alert="/log warning \"Rogue DHCP detected!\""

# valid-server — IP легитимного DHCP-сервера
# Если обнаружен ответ от другого IP — срабатывает alert
# Проверяем настройки bridge
/interface/bridge print detail where name=bridge-office
# Ищем: dhcp-snooping=yes

# Проверяем trusted/untrusted порты
/interface/bridge/port print detail
# Ищем: trusted=yes/no для каждого порта
# Таблица binding — MAC ↔ IP ↔ port
/interface/bridge/host print where dhcp-snooping=yes

# Или через специальную команду (зависит от версии RouterOS)
/interface/bridge/host print
# На тестовом роутере (rogue)
/ip/dhcp-server add name=rogue interface=ether1 address-pool=rogue-pool
/ip/pool add name=rogue-pool ranges=192.168.99.10-192.168.99.50

# На основном роутере — проверяем логи
/log print where topics~"bridge"

# Если DHCP Snooping работает, клиенты НЕ получат адрес 192.168.99.x
# Проверяем, что ARP Inspection включён
/interface/bridge print detail where name=bridge-office

# Проверяем счётчики отброшенных ARP-пакетов
/interface/bridge/port print stats

# Тест: на клиентском ПК назначаем статический IP (не через DHCP)
# и проверяем, что ARP для этого IP блокируется
# Проверяем, на каких портах включён IP Source Guard
/interface/bridge/port print where ip-source-guard=yes

# Мониторинг заблокированных пакетов
/interface/bridge/port print stats
# Включаем подробное логирование bridge
/system/logging add topics=bridge action=memory

# Проверяем логи
/log print where topics~"bridge"

# Типичные записи при блокировке rogue DHCP:
# bridge,info DHCP snooping: dropping DHCP offer from untrusted port ether4
# Перехватываем DHCP-трафик для анализа
/tool/sniffer set filter-protocol=udp filter-port=67-68 \
    filter-interface=bridge-office streaming-enabled=no

/tool/sniffer start
# Ждём несколько DHCP-транзакций
/tool/sniffer stop

/tool/sniffer/packet print detail
# Проверяем, какой порт ведёт к DHCP-серверу
/ip/dhcp-server print
# Смотрим interface — если это bridge, DHCP-сервер на самом MikroTik
# Если DHCP на внешнем устройстве — находим порт

# Устанавливаем trusted
/interface/bridge/port set [find where interface=ether2] trusted=yes

# Проверяем
/interface/bridge/port print
# Пример: DHCP Relay на MikroTik
/ip/dhcp-relay add name=relay-vlan10 interface=bridge-vlan10 \
    dhcp-server=10.0.0.2 disabled=no

# Порт, через который идёт связь с DHCP-сервером — trusted
/interface/bridge/port set [find where interface=ether1] trusted=yes
# Создаём статический DHCP lease для сервера
/ip/dhcp-server/lease add address=10.0.0.5 mac-address=AA:BB:CC:DD:EE:FF \
    server=dhcp-office comment="Print server (static lease)"
# Порт с принтером — trusted (DAI не проверяет)
/interface/bridge/port set [find where interface=ether5] trusted=yes
/interface/bridge set bridge-office arp-inspection=no
# Проверяем статус HW offloading
/interface/bridge/port print where hw=yes

# Отключаем HW offload для нужных портов
/interface/bridge/port set [find where interface=ether3] hw=no
/interface/bridge/port set [find where interface=ether4] hw=no

# Альтернатива: отключить HW offload для всего bridge
/interface/bridge set bridge-office frame-types=admit-all
# 1. Уменьшить lease time, чтобы клиенты быстрее обновляли
/ip/dhcp-server set dhcp-office lease-time=1h

# 2. После перезагрузки — временно отключить IP Source Guard
/interface/bridge/port set [find where ip-source-guard=yes] ip-source-guard=no
# Подождать, пока клиенты обновят lease
# Включить обратно
/interface/bridge/port set [find where bridge=bridge-office and !trusted] ip-source-guard=yes
# Проверяем, что Wi-Fi интерфейс в bridge
/interface/bridge/port print where interface~"wlan"

# Если нет — добавляем
/interface/bridge/port add bridge=bridge-office interface=wlan1 trusted=no \
    comment="Wi-Fi AP"

# Для CAPsMAN — интерфейсы CAP автоматически добавляются в bridge
# Проверяем
/interface/bridge/port print where interface~"cap"
# Удаляем firewall-правила для блокировки DHCP (если есть)
/ip/firewall/filter remove [find where comment~"block DHCP" or comment~"rogue"]

# Оставляем только DHCP Snooping на bridge
/interface/bridge set bridge-office dhcp-snooping=yes
# === DHCP Snooping — полная настройка для офиса ===

# Bridge с DHCP Snooping
/interface/bridge add name=bridge-office dhcp-snooping=yes comment="Office LAN with DHCP Snooping"

# Порты
/interface/bridge/port add bridge=bridge-office interface=ether2 trusted=yes \
    comment="Uplink to DHCP server"
/interface/bridge/port add bridge=bridge-office interface=ether3 trusted=no \
    comment="Floor 1"
/interface/bridge/port add bridge=bridge-office interface=ether4 trusted=no \
    comment="Floor 2"
/interface/bridge/port add bridge=bridge-office interface=ether5 trusted=no \
    comment="Meeting room"
/interface/bridge/port add bridge=bridge-office interface=wlan1 trusted=no \
    comment="Wi-Fi"

# IP и DHCP
/ip/address add address=10.0.0.1/24 interface=bridge-office
/ip/pool add name=office-pool ranges=10.0.0.100-10.0.0.250
/ip/dhcp-server/network add address=10.0.0.0/24 gateway=10.0.0.1 dns-server=10.0.0.1
/ip/dhcp-server add name=dhcp-office interface=bridge-office \
    address-pool=office-pool lease-time=8h disabled=no

# DHCP Alert — оповещение
/ip/dhcp-server/alert add interface=bridge-office \
    valid-server=10.0.0.1 \
    on-alert="/log warning \"Rogue DHCP detected on bridge-office!\""

# Логирование
/system/logging add topics=bridge,dhcp action=memory
IP / DHCP Snooping на MikroTik — защита от rogue DHCP