К основному содержанию

Кейс

Как найти MikroTik с macOS без IP: MNDP, LLDP и MAC-Telnet

Находим MikroTik в локальном L2-сегменте через MNDP или LLDP и подключаемся к RouterOS по MAC-адресу — без Winbox, Wine и заранее известного IP.

Поиск устройства по MAC и подключение без IP

MAC-Telnet работает на канальном уровне: адрес устройству не нужен, достаточно быть с ним в одном сегменте.

На выезде часто бывает так: физический линк до роутера уже есть, а его IP неизвестен или недоступен из текущей подсети. Для MikroTik это не тупик — устройство можно найти и открыть консоль на канальном уровне, по MAC-адресу.

Winbox под Wine для этого не нужен. На macOS достаточно консольного клиента MAC-Telnet. А если кроме входа нужно понять, что именно подключено к порту, пригодится стандартный LLDP.

Перед началом

MAC-Telnet работает только внутри одного L2-домена: между компьютером и роутером не должно быть маршрутизатора, а коммутатор, VLAN или Wi-Fi-точка должны пропускать широковещательный трафик. Надёжнее всего подключаться кабелем к management-сегменту.

Важно: MAC-Telnet — инструмент первичной настройки и аварийного доступа, а не замена SSH или VPN. Используйте его только в доверенной сети. На RouterOS доступ следует ограничить нужными интерфейсами через /tool mac-server allowed-interface-list.

Устанавливаем MAC-Telnet

В 2018 году клиент устанавливался одной командой Homebrew. Сейчас формулы mactelnet в Homebrew Core нет, поэтому актуальный способ для macOS — собрать клиент из исходников по инструкции проекта:

brew install gettext autoconf automake libtool openssl pkg-config
git clone https://github.com/haakonnessjoen/MAC-Telnet.git
cd MAC-Telnet

export GETTEXT_PATH="$(brew --prefix gettext)"
export OPENSSL_PATH="$(brew --prefix openssl)"
export PATH="${GETTEXT_PATH}/bin:${OPENSSL_PATH}/bin:${PATH}"
export LDFLAGS="-L${GETTEXT_PATH}/lib"
export CPPFLAGS="-I${GETTEXT_PATH}/include -I${OPENSSL_PATH}/include"
export CRYPTO_CFLAGS="-I${OPENSSL_PATH}/include"
export CRYPTO_LIBS="-L${OPENSSL_PATH}/lib ${OPENSSL_PATH}/lib/libcrypto.3.dylib"

./autogen.sh
make
sudo make install

Перед сборкой стоит свериться с разделом Mac OS X в актуальном README проекта: зависимости могут измениться.

Быстрый путь: находим роутер через MNDP

В MAC-Telnet уже встроен поиск соседей по фирменному MikroTik Neighbor Discovery Protocol. Отдельный LLDP-клиент для обычного подключения не требуется:

mactelnet -l

Команда покажет доступные устройства RouterOS в локальном L2-сегменте. Подключиться можно по найденному MAC или имени устройства:

mactelnet 64:d1:54:78:2e:68
# или
mactelnet gw.homenet

Клиент запросит логин и пароль и откроет обычную консоль RouterOS. Ни одного IP-адреса заранее знать не нужно.

Для RouterOS старше 6.43 используется современная EC-SRP-аутентификация. Если нужно подключиться к действительно старому устройству, как RouterOS 6.42 из исходной заметки, клиент поддерживает совместимый режим:

mactelnet -o 64:d1:54:78:2e:68

Когда нужен LLDP

MNDP быстрее приводит к консоли, но привязан к MikroTik. LLDP — стандартный протокол обнаружения соседей и полезен для диагностики смешанной сети. MikroTik может передать через него:

Установим актуальный lldpd из Homebrew:

brew install lldpd
sudo lldpd
sudo lldpcli show neighbors

Современный lldpd по умолчанию работает в режиме rx-and-tx. Если список пуст, сначала проверьте правильный интерфейс и VLAN. Затем можно явно включить приём и передачу на нужном порту — например, на проводном en0:

sudo lldpcli configure ports en0 lldp status rx-and-tx
sudo lldpcli update
sudo lldpcli show neighbors

В нашем случае сосед ответил так:

Interface:  en0, via: LLDP
Chassis:
  ChassisID: mac 64:d1:54:78:2e:68
  SysName:   gw.homenet
  SysDescr:  MikroTik RouterOS 6.42rc15 RB952Ui-5ac2nD
  MgmtIP:    172.31.184.65
Port:
  PortID:    ifname br0
  TTL:       120

Теперь видно не только адрес для MAC-Telnet, но и модель, версию RouterOS, порт и management-IP. Это удобно при обследовании объекта: ещё до входа в устройство понятно, что находится на другом конце кабеля.

Если сосед не находится

Проверяйте по порядку:

  1. Mac и MikroTik находятся в одном VLAN и одном L2-домене.
  2. Выбран проводной интерфейс, через который действительно подключён роутер.
  3. На RouterOS нужный интерфейс входит в discover-interface-list.
  4. MAC-Telnet разрешён на этом интерфейсе через allowed-interface-list.
  5. Коммутатор или точка доступа не фильтруют LLDP и широковещательные кадры.

Итог

Для быстрого входа достаточно двух команд: mactelnet -l, затем mactelnet <имя или MAC>. LLDP добавляет диагностику и помогает в смешанных сетях, где одного MNDP мало.

Связка не заменяет нормальный management-доступ через SSH или VPN, но хорошо закрывает момент первичной настройки и аварийную ситуацию, когда линк уже есть, а IP ещё нет.

Все кейсы