[Из песочницы] Мониторинг mac-адресов на портах сетевых устройств Cisco с помощью протокола snmp

Я работаю в крупной организации с большим количеством сетевых устройств. Часто возникает необходимость знать к какому порту коммутатора подключено то или иное устройство с определенным mac или ip-адресом, а в случае какого-либо сбоя, куда оно было подключено. Я задался вопросом: можно ли получить эту информацию по snmp-протоколу? Оказалось, можно.


Также хотелось совместить эту информацию с информацией по коммутации портов коммутаторов. Поскольку я изучаю язык Java, то я решил написать веб-приложение на этом языке. Что я и сделал. В данный момент приложение поддерживает только устройства фирмы Cisco, так как они установлены в нашей организации, но может быть доработано и для поддержки устройств других производителей. В приложении используются следующие mib: CISCO-VTP-MIB, BRIDGE-MIB, IF-MIB, RFC1213-MIB.


Особенности приложения:


  1. поддержка всех трех версий протокола snmp;
  2. поддержка таблиц коммутации портов устройств;
  3. формирование таблицы результатов;
  4. периодический опрос устройств в соответствие с расписанием;
  5. сортировка таблиц по нескольким столбцам (при клике с нажатой клавишей shift на каждом последующем столбце после первого);
  6. аутентификация и роли пользователей.

Хотелось бы более подробно остановиться на пунктах 2,3.


Таблица коммутации


Таблица коммутации представлена в следующем виде:


  • ip-адрес устройства;
  • порт устройства;
  • кросс (необязательно);
  • розетка (необязательно).

image

Есть возможность выгрузки и загрузки таблицы в csv-формате.


Таблица результатов


Таблица результатов представлена в следующем виде:


  • mac-адрес оконечного устройства (компьютера, принтера и т.д.);
  • vlan;
  • ip-адрес оконечного устройства (необязательно);
  • ip-адрес коммутатора;
  • порт коммутатора;
  • кросс (необязательно);
  • розетка (необязательно);
  • время последнего обнаружения устройства.

image


Есть возможность опросить устройства и обновить таблицу результатов. Так же можно сделать выгрузку в csv-файл.


В статье я привел мини-обзор приложения, кому интересно можете перейти по ссылке на мой github: приложение MacMonitor на github. Там приведены исходный и бинарный коды, а также инструкция по установке и руководство пользователя.

Комментарии (5)

  • 12 января 2017 в 21:03

    0

    Интересно.
    Я правильно понял из лицензии, что запрещено только распространение (redistribution в п.3 лицензии) в коммерческих целях, а использование в коммерческих целях и модификация разрешены по принципу «всё, что не запрещено, то разрешено»?
    • 12 января 2017 в 21:05

      0

      Постараюсь пояснить.
      Когда я писал п.3 лицензии я хотел сказать следующее:
      использование в целях получения финансовой выгоды (продажа моего приложения, продажа ПО основанного на моей исходном коде) без моего разрешения запрещено;
      использование в любых организациях (в том числе и в коммерческих), либо физическими лицами без получения финансовой выгоды разрешено.
      • 12 января 2017 в 21:13

        0

        Коммерческая организация — юридическое лицо, преследующее извлечение (получение) прибыли в качестве основной цели своей деятельности (т.е. коммерческие цели — у вас как раз в лицензии написано «commercial purposes»). Налицо финансовая выгода.

        В п.3 лицензии вы говорите только о распространении. Об использовании там ничего не говорится. Ну так что, «всё, что не запрещено, то разрешено»?

        • 12 января 2017 в 21:34

          0

          Поясните с какой целью вы это спрашиваете? Как вы хотите использовать приложение, либо исходные коды? Если вы опишете конкретную ситуацию, я вам отвечу.
          • 12 января 2017 в 21:39 (комментарий был изменён)

            0

            На работе. Работаю на разные компании, и, как правило, они коммерческие. В том числе работаю на провайдеров, у которых для этих же целей используются или энтерпрайзные продукты, или свои «велосипеды». Возможно, мне понадобится модифицировать исходники (например, сходу напрашивается добавление RESTful API).

© Habrahabr.ru