Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    SNMP-запросы для таблицы соответствия MAC->порту

    SNMP-запросы для таблицы соответствия MAC->порту

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    SNMP-запросы для таблицы соответствия MAC->порту, RouterOS
     
    pe1chl
    Guest
    #1
    0
    03.07.2015 19:23:00
    Для генерации документации о том, «какое устройство подключено к какому порту», я в прошлом писал скрипты, которые используют SNMP для получения информации с роутеров и свитчей. Для свитчей этот скрипт выполняет snmpwalk по mib-2.17.4.3.1.2, чтобы получить «таблицу соответствия MAC-адрес — порт». На обычных свитчах это позволяет увидеть, какой MAC-адрес подключён к какому порту. Конечно, MikroTik RB2011 совмещает функции и роутера, и свитча. Когда свитчи отключены, а все ethernet-порты подключены к мостам или используются для маршрутизации, вышеупомянутый SNMP-идентификатор получает информацию по ethernet-интерфейсам роутера, похожую на ту, что можно получить по портам управляемого свитча. Однако в RB2011 есть ещё два свитч-чипа. Когда их включают (через настройку «master port» у некоторых ethernet-портов), этот же SNMP-запрос возвращает номер мастер-порта для всех устройств, подключённых через такое коммутируемое соединение. Я понимаю, что информация действительно получается на уровне ethernet-портов. Тем не менее, если посмотреть в административном интерфейсе, можно увидеть, к какому физическому порту действительно подключены MAC-адреса. Можно ли получить такую информацию через SNMP?
     
     
     
    pimmie
    Guest
    #2
    0
    01.09.2015 20:49:00
    Я тоже использовал oid mac-address / .1.3.6.1.2.1.2.2.1.6.1 для мониторинга подключённых устройств на своих коммутаторах и столкнулся с той же проблемой, что и pe1chl описывает. Мне это кажется багом в системе. Как и говорит pe1chl, правильная информация на самом деле доступна в WinBox (Switch → Host), так почему её нет в snmp? Кто-нибудь из Mikrotik мог бы взглянуть на это и сказать, корректно ли такое поведение или нет?
     
     
     
    janisk
    Guest
    #3
    0
    03.09.2015 10:35:00
    RouterOS вернёт все OID с помощью walk (bulkwalk для более быстрой работы).
     
     
     
    pimmie
    Guest
    #4
    0
    03.09.2015 12:32:00
    Извини, я скопировал неправильный oid. Должно быть .1.3.6.1.2.1.17.4.3.1.2
     
     
     
    janisk
    Guest
    #5
    0
    03.09.2015 13:22:00
    Мы проверяем, возможно ли это.
     
     
     
    marrold
    Guest
    #6
    0
    03.09.2015 13:27:00
    / interface bridge host print Показывает, какой MAC-адрес привязан к какому интерфейсу моста. Но, похоже, получить это через SNMP нельзя.  
    [admin@#########] > / interface bridge host print
    Флаги: L - локальный, E - внешний-fdb  
     BRIDGE                                                                                         MAC-АДРЕС        НА ИНТЕРФЕЙСЕ                                                                                         ВОЗРАСТ  
    L Br-V129                                                                                        D4:CA:6D:E7:58:73 Ограниченная LAN [01] 0с
     Br-V130                                                                                        00:1B:67:14:C2:B0 Основная LAN [01] 0с
     Br-V130                                                                                        28:92:4A:34:4B:66 Основная LAN [01] 1м
     Br-V130                                                                                        A0:F3:C1:CE:3B:AC Основная LAN [01] 1с
     Br-V130                                                                                        AC:CA:54:00:0E:26 Основная LAN [01] 1с
     
     
     
    pimmie
    Guest
    #7
    0
    05.09.2015 08:56:00
    Ответ, который я получил по электронной почте от поддержки Mikrotik: в RouterOS 6.x нельзя будет собрать всю эту информацию вместе. Придется ждать выхода RouterOS 7.x, чтобы увидеть, какие хосты доступны на каких портах.
     
     
     
    mp412
    Guest
    #8
    0
    28.06.2019 23:03:00
    Есть какие новости по просмотру mac-хоста на snmp? Или всё ещё придётся ждать версию 7?
     
     
     
    pe1chl
    Guest
    #9
    0
    29.06.2019 08:10:00
    Ну, эта тема была поднята очень давно, и на самом деле проблема решилась сама собой после перехода с «master-port» на «bridge» в некоторых версиях.
     
     
     
    Jotne
    Guest
    #10
    0
    29.06.2019 10:33:00
    Как тогда получить mac на интерфейсе с помощью SNMP? С CLI это работает: /interface bridge host print Но это ничего не выводит: /interface bridge host print oid И это тоже ничего не даёт snmpget -v 2c -c public myhost .1.3.6.1.2.1.17.4.3.1.2
     
     
     
    pe1chl
    Guest
    #11
    0
    29.06.2019 11:45:00
    Используйте snmpwalk вместо snmpget! Вы получите список элементов, начиная с .1.3.6.1.2.1.17.4.3.1.2, но с добавленными 6 дополнительными числами — это байты MAC-адреса в десятичном формате. Значение каждого элемента — это целое число, которое соответствует номеру интерфейса. Чтобы получить соответствие номера интерфейса и его имени, нужно просмотреть другие OID, например, .1.3.6.1.2.1.2.2.1.2 или .1.3.6.1.2.1.31.1.1.1.1.
     
     
     
    imadloo
    Guest
    #12
    0
    01.07.2020 18:35:00
    Я заметил проблему в версии 6.47. RouterOS 6.47 (stable) на RB2011iLS: сопоставленные порты из команды iso.3.6.1.2.1.17.4.3.1.2 смещены на 7.

    Пример:  
    # snmpwalk -v2c -c public x.x.x.x 1.3.6.1.2.1.17.4.3.1.1.240.77.162.90.140.137  
    iso.3.6.1.2.1.17.4.3.1.1.240.77.162.90.140.137 = Hex-STRING: F0 4D A2 5A 8C 89  
    # snmpwalk -v2c -c public x.x.x.x 1.3.6.1.2.1.17.4.3.1.2.240.77.162.90.140.137  
    iso.3.6.1.2.1.17.4.3.1.2.240.77.162.90.140.137 = INTEGER: 9  

    И на самом деле MAC-адрес принадлежит порту ether1, то есть 1.3.6.1.2.1.31.1.1.1.1.2 = STRING: "ether1".  

    На других устройствах смещение другое:  
    RouterOS 6.47 (stable) на RB750Gr3  
    # snmpwalk -v2c -c public x.x.x.x .1.3.6.1.2.1.17.4.3.1.1.248.209.17.164.72.123  
    iso.3.6.1.2.1.17.4.3.1.1.248.209.17.164.72.123 = Hex-STRING: F8 D1 11 A4 48 7B  
    # snmpwalk -v2c -c public x.x.x.x .1.3.6.1.2.1.17.4.3.1.2.248.209.17.164.72.123  
    iso.3.6.1.2.1.17.4.3.1.2.248.209.17.164.72.123 = INTEGER: 0  
    # snmpwalk -v2c -c public x.x.x.x .1.3.6.1.2.1.31.1.1.1.1.2  
    iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "ether2"  

    И реально MAC-адрес соответствует порту ether2, то есть смещение здесь равно 2.
     
     
     
    pe1chl
    Guest
    #13
    0
    01.07.2020 18:53:00
    Ты прав, сейчас это уже работает неправильно…
     
     
     
    rururudy
    Guest
    #14
    0
    08.12.2022 22:15:00
    Старая версия (6.46.8 и ранее) при запросе .1.3.6.1.2.1.17.4.3.1.2 через SNMP возвращала ‘interfaceIndex’. Сейчас (например, 6.49.5) запрос возвращает ‘bridgeIndex’. Чтобы преобразовать bridgeIndex в interfaceIndex, нужно использовать этот OID: .1.3.6.1.2.1.17.1.4.1.2

    ======================= Таблица MAC =======================
    SNMPv2-SMI::mib-2.17.4.3.1.2.8.134.59.81.162.182 = INTEGER: 3  
    SNMPv2-SMI::mib-2.17.4.3.1.2.76.94.12.214.120.33 = INTEGER: 7  
    SNMPv2-SMI::mib-2.17.4.3.1.2.212.202.109.162.157.64 = INTEGER: 0  

    ======================= Индексы интерфейсов =======================
    IF-MIB::ifName.1 = STRING: sfp-unused  
    IF-MIB::ifName.2 = STRING: 01g-uplink  
    IF-MIB::ifName.3 = STRING: 02g  
    IF-MIB::ifName.4 = STRING: 03g  
    IF-MIB::ifName.5 = STRING: 04g  
    IF-MIB::ifName.6 = STRING: 05g  
    IF-MIB::ifName.7 = STRING: 06f  
    IF-MIB::ifName.8 = STRING: 07f  
    IF-MIB::ifName.9 = STRING: 08f  
    IF-MIB::ifName.10 = STRING: 09f  
    IF-MIB::ifName.11 = STRING: 10f-POE  
    IF-MIB::ifName.12 = STRING: bridge-local  

    ======================= Соответствие моста портам =======================
    SNMPv2-SMI::mib-2.17.1.4.1.2.1 = INTEGER: 3  
    SNMPv2-SMI::mib-2.17.1.4.1.2.2 = INTEGER: 4  
    SNMPv2-SMI::mib-2.17.1.4.1.2.3 = INTEGER: 5  
    SNMPv2-SMI::mib-2.17.1.4.1.2.4 = INTEGER: 6  
    SNMPv2-SMI::mib-2.17.1.4.1.2.5 = INTEGER: 7  
    SNMPv2-SMI::mib-2.17.1.4.1.2.6 = INTEGER: 1  
    SNMPv2-SMI::mib-2.17.1.4.1.2.7 = INTEGER: 2  
    SNMPv2-SMI::mib-2.17.1.4.1.2.8 = INTEGER: 8  
    SNMPv2-SMI::mib-2.17.1.4.1.2.9 = INTEGER: 9  
    SNMPv2-SMI::mib-2.17.1.4.1.2.10 = INTEGER: 10  
    SNMPv2-SMI::mib-2.17.1.4.1.2.11 = INTEGER: 11  

    Расшифровывая MAC-адреса и сопоставляя мост с индексом, можно определить следующее:  
    .1.3.6.1.2.1.17.4.3.1.2.76.94.12.214.120.33 = 4c:5e:0c:d6:78:21 на мосту: 7, порт: 2  
    .1.3.6.1.2.1.17.4.3.1.2.8.134.59.81.162.182 = 08:86:3b:51:a2:b6 на мосту: 3, порт: 5  
    .1.3.6.1.2.1.17.4.3.1.2.212.202.109.162.157.64 = d4:ca:6d:a2:9d:40 на мосту: 0, порт: НЕ ОПРЕДЕЛЁН  

    Примечания: Чтобы понять сопоставление OID, рассмотрим пример:  
    SNMPv2-SMI::mib-2.17.1.4.1.2.1 = INTEGER: 3  
    Видите выделенные значения? Индекс моста 1 соответствует индексу интерфейса 3.
     
     
     
    rururudy
    Guest
    #15
    0
    08.12.2022 22:21:00
    Используйте этот скрипт, чтобы упростить себе задачу. Запуск: ./mikrotik-walk-test.sh IP_УСТРОЙСТВА. Измените COMM на имя вашего сообщества.

    # mikrotik-walk-test.sh — проход по этим OID!

    IP=$1  
    COMM=YourSNMPcommunity

    echo "======================= Версия ОС $IP =======================";  
    snmpwalk -v2c -c $COMM $IP .1.3.6.1.4.1.14988.1.1.7.4.0  
    echo "======================= Таблица MAC =======================";  
    snmpwalk -v2c -c $COMM $IP .1.3.6.1.2.1.17.4.3.1.2  
    echo "======================= Индекс интерфейса =======================";  
    snmpwalk -v2c -c $COMM $IP .1.3.6.1.2.1.31.1.1.1.1  
    echo "======================= Отображение моста на порт =======================";  
    snmpwalk -v2c -c $COMM $IP .1.3.6.1.2.1.17.1.4.1.2  
    # Обновлено следующими двумя запросами к этому посту 17 октября 2023!
    echo "======================= IP — физический адрес =======================";  
    snmpwalk -v2c -c $COMM $IP IP-MIB::ipNetToMediaPhysAddress  
    echo "======================= Описание физического адреса =======================";  
    snmpwalk -v2c -c $COMM $IP IF-MIB::ifDescr
     
     
     
    rururudy
    Guest
    #16
    0
    08.12.2022 22:30:00
    Это возможно с версиями 6.x и 7.x. В зависимости от версии, вам нужны эти три OID:  
    .1.3.6.1.2.1.17.4.3.1.2 — таблица MAC  
    .1.3.6.1.2.1.17.1.4.1.2 — отображение BridgePortIndex на InterfaceIndex  
    .1.3.6.1.2.1.31.1.1.1.1 — интерфейс
     
     
     
    rururudy
    Guest
    #17
    0
    18.10.2023 00:15:00
    Чтобы получить информацию о VLAN, нужно выполнить запрос snmpwalk -v2c -c $COMM $IP IP-MIB::ipNetToMediaPhysAddress
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры