Neighbors на MikroTik — обнаружение устройств в сети
IP Neighbors на MikroTik — обнаружение устройств в сети
Neighbor Discovery — механизм автоматического обнаружения устройств в локальной сети. MikroTik поддерживает три протокола обнаружения: собственный MNDP (MikroTik Neighbor Discovery Protocol), Cisco CDP и стандартный IEEE LLDP. Эти протоколы позволяют увидеть соседние устройства без ручного сканирования — модель, IP-адрес, версию RouterOS, имя и интерфейс подключения. Это мощный инструмент для инвентаризации сети и диагностики, но он же может раскрыть информацию о вашей инфраструктуре злоумышленнику, если оставить discovery на WAN-интерфейсе.
Описание
Протоколы обнаружения
RouterOS использует три протокола для обмена информацией о соседних устройствах:
| Протокол | Описание | Совместимость |
|---|---|---|
| MNDP | Проприетарный протокол MikroTik | Только MikroTik-устройства |
| CDP | Cisco Discovery Protocol | Cisco, MikroTik и некоторые другие вендоры |
| LLDP | Link Layer Discovery Protocol (IEEE 802.1AB) | Стандарт, поддерживается большинством управляемых коммутаторов |
MNDP отправляет мультикаст-пакеты на UDP-порт 5678. Устройства обмениваются информацией: identity (имя роутера), версия RouterOS, платформа (модель), IP-адреса, uptime и интерфейс. CDP и LLDP работают на L2-уровне и не маршрутизируются — видны только устройства в пределах одного broadcast-домена.
Что показывает таблица Neighbors
Для каждого обнаруженного соседа RouterOS отображает:
- Identity — системное имя устройства (
/system/identity) - Address — IP-адрес соседа
- MAC Address — MAC-адрес интерфейса
- Interface — локальный интерфейс, через который обнаружен сосед
- Platform — модель устройства (RouterBOARD, CRS, CCR и т.д.)
- Version — версия RouterOS
- Board — наименование платы (hAP ax2, RB5009 и т.д.)
- Uptime — время работы устройства
Это позволяет быстро определить, что подключено к каждому порту, без необходимости подключаться к каждому устройству отдельно.
Настройка
Просмотр обнаруженных соседей
Базовая команда для просмотра всех обнаруженных устройств:
[admin@MikroTik] >/ip/neighbor/print
Вывод с дополнительными полями:
[admin@MikroTik] >/ip/neighbor/print detail
Фильтрация — показать только соседей на определённом интерфейсе:
[admin@MikroTik] >/ip/neighbor/print where interface=ether1
Настройка Discovery Settings
Глобальные параметры обнаружения задаются в discovery-settings:
[admin@MikroTik] >/ip/neighbor/discovery-settings/print
Основные параметры:
[admin@MikroTik] >/ip/neighbor/discovery-settings/set \ discover-interface-list=LAN \ protocol=mndp,cdp,lldp \ lldp-med-net-policy-vlan=disabled
| Параметр | Описание | Рекомендация |
|---|---|---|
| discover-interface-list | Список интерфейсов для discovery | Только LAN, никогда WAN |
| protocol | Активные протоколы (mndp, cdp, lldp) | Оставить все три для совместимости |
| lldp-med-net-policy-vlan | LLDP-MED для VLAN assignment | Включить при использовании IP-телефонов |
Ограничение Discovery по интерфейсам
Самый важный шаг — ограничить обнаружение только доверенными интерфейсами. Создайте interface list и укажите его в настройках:
[admin@MikroTik] ># Создаём список интерфейсов для discovery (если ещё нет) /interface/list/add name=DISCOVERY comment="Интерфейсы для neighbor discovery" # Добавляем только LAN-интерфейсы /interface/list/member/add list=DISCOVERY interface=bridge-LAN /interface/list/member/add list=DISCOVERY interface=bridge-GUEST # Применяем список /ip/neighbor/discovery-settings/set discover-interface-list=DISCOVERY
Если у вас уже есть interface list LAN (что типично для стандартной конфигурации), используйте его:
[admin@MikroTik] >/ip/neighbor/discovery-settings/set discover-interface-list=LAN
Полное отключение Discovery
Если discovery не нужен вообще (например, на пограничном маршрутизаторе):
[admin@MikroTik] >/ip/neighbor/discovery-settings/set discover-interface-list=none
Настройка LLDP для IP-телефонов
LLDP-MED позволяет автоматически назначать VLAN для IP-телефонов. Телефон получает через LLDP информацию о Voice VLAN и автоматически настраивается:
[admin@MikroTik] >/ip/neighbor/discovery-settings/set \ lldp-med-net-policy-vlan=100 \ protocol=mndp,cdp,lldp
Это особенно полезно при развёртывании VoIP-инфраструктуры — телефоны Polycom, Yealink, Grandstream автоматически помещают голосовой трафик в VLAN 100.
Проверка
Проверка текущих настроек
[admin@MikroTik] ># Текущие настройки discovery /ip/neighbor/discovery-settings/print # Список обнаруженных соседей /ip/neighbor/print # Проверка, на каких интерфейсах активен discovery /ip/neighbor/discovery-settings/print
Использование для инвентаризации сети
Neighbor Discovery — быстрый способ провести инвентаризацию MikroTik-устройств в сети:
[admin@MikroTik] ># Все соседи с моделью и версией /ip/neighbor/print proplist=identity,address,platform,version,board # Найти устройства со старой версией RouterOS /ip/neighbor/print where version~"6\\."
Идентификация порта через LLDP
Если нужно определить, к какому порту управляемого коммутатора подключён MikroTik, LLDP покажет информацию об удалённом порте. Это работает и в обратную сторону — на управляемом коммутаторе (Cisco, HP, Juniper) можно увидеть MikroTik через show lldp neighbors.
[admin@MikroTik] ># Детальная информация о соседях — включая LLDP-данные /ip/neighbor/print detail
В выводе обратите внимание на поля interface-name (имя порта на удалённой стороне) и system-description.
Мониторинг появления новых устройств
Можно использовать скрипт для оповещения о новых соседях:
[admin@MikroTik] ># Посмотреть текущих соседей в реальном времени /ip/neighbor/print interval=5s
Типичные ошибки
-
Discovery включён на WAN-интерфейсе — самая частая ошибка. MNDP-пакеты уходят к провайдеру, раскрывая имя роутера, модель, версию RouterOS и IP-адреса. Злоумышленник может использовать эту информацию для целенаправленной атаки. Решение:
discover-interface-list=LANили явно указать список доверенных интерфейсов -
Полное отключение Discovery в большой сети — администратор отключает discovery "для безопасности" на всех устройствах. В итоге затрудняется диагностика и инвентаризация. Правильный подход — ограничить по интерфейсам, а не отключать полностью
-
Не видны соседи через VLAN — Discovery работает на L2-уровне. Если между устройствами есть маршрутизатор (L3), discovery-пакеты не проходят. Устройства в разных VLAN не увидят друг друга, даже если физически подключены к одному коммутатору. Для обнаружения через VLAN оба устройства должны быть в одном broadcast-домене
-
LLDP-MED VLAN конфликтует с ручной настройкой телефона — если телефон настроен на конкретный VLAN вручную, а LLDP-MED предлагает другой, поведение зависит от модели телефона. Отключите ручную настройку VLAN на телефоне при использовании LLDP-MED
-
Не обновляется таблица соседей — записи в таблице neighbors имеют TTL. Если сосед был отключён, запись исчезнет через несколько минут. Не полагайтесь на таблицу neighbors как на точный мониторинг — для этого есть SNMP, Zabbix и Netbox
/ip/neighbor/print /ip/neighbor/print detail /ip/neighbor/print where interface=ether1 /ip/neighbor/discovery-settings/print /ip/neighbor/discovery-settings/set \ discover-interface-list=LAN \ protocol=mndp,cdp,lldp \ lldp-med-net-policy-vlan=disabled # Создаём список интерфейсов для discovery (если ещё нет) /interface/list/add name=DISCOVERY comment="Интерфейсы для neighbor discovery" # Добавляем только LAN-интерфейсы /interface/list/member/add list=DISCOVERY interface=bridge-LAN /interface/list/member/add list=DISCOVERY interface=bridge-GUEST # Применяем список /ip/neighbor/discovery-settings/set discover-interface-list=DISCOVERY /ip/neighbor/discovery-settings/set discover-interface-list=LAN /ip/neighbor/discovery-settings/set discover-interface-list=none /ip/neighbor/discovery-settings/set \ lldp-med-net-policy-vlan=100 \ protocol=mndp,cdp,lldp # Текущие настройки discovery /ip/neighbor/discovery-settings/print # Список обнаруженных соседей /ip/neighbor/print # Проверка, на каких интерфейсах активен discovery /ip/neighbor/discovery-settings/print # Все соседи с моделью и версией /ip/neighbor/print proplist=identity,address,platform,version,board # Найти устройства со старой версией RouterOS /ip/neighbor/print where version~"6\\." # Детальная информация о соседях — включая LLDP-данные /ip/neighbor/print detail # Посмотреть текущих соседей в реальном времени /ip/neighbor/print interval=5s