Служба обнаружения соседних маршрутизаторов и совместимого оборудования в RouterOS присутствует давно. К сожалению, над схемой функционирования “Neighbor Discovery” товарищи админы задумываются редко. Там вроде как будто всё просто, но просто не настолько как кажется.
Наглядной иллюстрацией служат неудачные попытки скрыть информацию о своём маршрутизаторе MikroTik, при этом получать инфу о маршрутизаторах соседей внутри broadcast-домена провайдера. Так сказать, подглядывать за соседями по провайдерскому свитчу. Обычно это выглядит как запрет фаерволом отправки широковещательных пакетов объявления службы discovery UDP 255.255.255.255:5678. Вбив запрещающее правило в конфиг фаервола, некоторые считают, что полностью скрыли свой маршрутизатор от видимости соседями. Но это не так.
Давайте разберемся, как работает Neighbor Discovery в MikroTik.
Neighbor Discovery в RouterOS до 6.38 содержит в себе два пути объявления и получения информации работающие на разных уровнях модели OSI: на уровне L4 работает транспорт UDP, на уровне L2 информацию принимает и передает протокол семейства MNDP/VDP/CDP. Полученная из обеих источников информация объединяется и отображается в списке обнаруженных соседей “/ip neighbors”. Вот так выглядит Neighbor Discovery в текущем релизе:
Таким образом, простым запретом отправки UDP-пакетов на порт 5678, информацию о маршрутизаторе скрыть невозможно. Нужно либо полностью отключать службу Neighbors на интерфейсе командой /ip neighbor discovery set ether1-gateway discover=no, либо фильтровать исходящий L2 трафик на предмет MNDP-пакетов с помощью bridge filters. Например, вот так:
/interface bridge filter add action=drop chain=output disabled=no dst-mac-address=01:00:0C:CC:CC:CC/FF:FF:FF:FF:FF:FF out-interface=ether1-gateway.
Сейчас готовится к релизу новая версия RouterOS 6.38, и в ней наконец-то случилось то, о чём так долго говорили большевики просили админы многих стран. В 6.38 наконец-то добавлена хорошая плюшка в виде поддержки открытого протокола LLDP. Это еще немного расширяет возможности оборудования в части мониторигна состояния L2 соединения. Теперь в списке соседей можно будет видеть любое LLDP-совместимое оборудование, при условии, что на нем тоже включена поддержка объявления LLDP. Например, теперь мой тестовый маршрутизатор отлично «видит» соседний свитч HP v1905-24
Информации пока принимается и передается немного, но для мониторинга наличия/отсутствия видимости по L2 достаточно. Отмечу, что поддержка LLDP не заменила другие протоколы, а добавлена к списку поддерживаемых в MikroTik Discovery и начиная со 6.38 она будет выглядеть вот так:
В официальной WiKi MikroTik уже добавлены сведения об информации принимаемой и передаваемой RouterOS посредством LLDP.
RouterOS sends out:
Chassis subtype (MAC)
- Port subtype (interface name)
- TTL
- System name (system identity)
- Sys description ({platform} RouterOS {osvers} {boardName})
- All IP addresses on configured on the port
RouterOS accepts and processes:
- identity (LLDP_TYPE_SYS_NAME)
- interfaceName (depending on the priority, if one is empty checks the next: LLDP_TYPE_CHASSIS_ID, LLDP_TYPE_PORT_ID, LLDP_TYPE_PORT_DESC)
- ip4 (first entry of IPv4 LLDP_TYPE_MANAGEMENT_ADDR)
- ip6 (first entry of IPv6 LLDP_TYPE_MANAGEMENT_ADDR)
- TTL (LLDP_TYPE_TTL)
- MAC (Source — 6-11 byte)
Ну, что ж, ждём официального релиза и внимательно наблюдаем за тестовыми аппаратами – на то и статус у 6.38 пока еще «rc».
Автор: nkusnetsov