Я работаю в крупной организации с большим количеством сетевых устройств. Часто возникает необходимость знать к какому порту коммутатора подключено то или иное устройство с определенным 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. Там приведены исходный и бинарный коды, а также инструкция по установке и руководство пользователя.

Поделиться с друзьями
-->

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


  1. MMik
    12.01.2017 21:03

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


    1. sviato_slav
      12.01.2017 21:05

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


      1. MMik
        12.01.2017 21:13

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

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


        1. sviato_slav
          12.01.2017 21:34

          Поясните с какой целью вы это спрашиваете? Как вы хотите использовать приложение, либо исходные коды? Если вы опишете конкретную ситуацию, я вам отвечу.


          1. MMik
            12.01.2017 21:39

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


  1. OnTheOtherSide
    13.01.2017 11:03

    Данный велосипед уже был благополучно изобретён. Называется SoftPerfect Switch Port Mapper.


    1. sviato_slav
      13.01.2017 11:03

      Фишка моего приложения — это совмещение информации по коммутации порта(кросс, розетка) с информацией о мак-адресе устройства на нем, а так же сохранение истории, когда и где встречался тот или иной мак-адрес.
      Упомянутое вами приложение лишь показывает, что на определенном порту находится, тот или иной мак-адрес.


    1. gotch
      13.01.2017 13:29

      Как-то денег стоит этот SoftPerfect Switch Port Mapper.


  1. gotch
    13.01.2017 13:23
    +2

    Готовое приложение это как-то скучновато. ( Рассказали бы основные принципы, какие подводные камни встретились, чтобы каждый мог написать свой велосипедик.


  1. neumeika
    13.01.2017 23:27

    cacti mactrack: история маков (когда-где-кто), поиск, интерфейс с портами, если не лень, можно накрутить мониторинг (заббикс вкуснее, но mactrack там нет). Либо noc, но сие мало кто осилит.