Я работаю в крупной организации с большим количеством сетевых устройств. Часто возникает необходимость знать к какому порту коммутатора подключено то или иное устройство с определенным mac или ip-адресом, а в случае какого-либо сбоя, куда оно было подключено. Я задался вопросом: можно ли получить эту информацию по snmp-протоколу? Оказалось, можно.
Также хотелось совместить эту информацию с информацией по коммутации портов коммутаторов. Поскольку я изучаю язык Java, то я решил написать веб-приложение на этом языке. Что я и сделал. В данный момент приложение поддерживает только устройства фирмы Cisco, так как они установлены в нашей организации, но может быть доработано и для поддержки устройств других производителей. В приложении используются следующие mib: CISCO-VTP-MIB, BRIDGE-MIB, IF-MIB, RFC1213-MIB.
Особенности приложения:
- поддержка всех трех версий протокола snmp;
- поддержка таблиц коммутации портов устройств;
- формирование таблицы результатов;
- периодический опрос устройств в соответствие с расписанием;
- сортировка таблиц по нескольким столбцам (при клике с нажатой клавишей shift на каждом последующем столбце после первого);
- аутентификация и роли пользователей.
Хотелось бы более подробно остановиться на пунктах 2,3.
Таблица коммутации
Таблица коммутации представлена в следующем виде:
- ip-адрес устройства;
- порт устройства;
- кросс (необязательно);
- розетка (необязательно).
Есть возможность выгрузки и загрузки таблицы в csv-формате.
Таблица результатов
Таблица результатов представлена в следующем виде:
- mac-адрес оконечного устройства (компьютера, принтера и т.д.);
- vlan;
- ip-адрес оконечного устройства (необязательно);
- ip-адрес коммутатора;
- порт коммутатора;
- кросс (необязательно);
- розетка (необязательно);
- время последнего обнаружения устройства.
Есть возможность опросить устройства и обновить таблицу результатов. Так же можно сделать выгрузку в csv-файл.
В статье я привел мини-обзор приложения, кому интересно можете перейти по ссылке на мой github: приложение MacMonitor на github. Там приведены исходный и бинарный коды, а также инструкция по установке и руководство пользователя.
Комментарии (10)
OnTheOtherSide
13.01.2017 11:03Данный велосипед уже был благополучно изобретён. Называется SoftPerfect Switch Port Mapper.
sviato_slav
13.01.2017 11:03Фишка моего приложения — это совмещение информации по коммутации порта(кросс, розетка) с информацией о мак-адресе устройства на нем, а так же сохранение истории, когда и где встречался тот или иной мак-адрес.
Упомянутое вами приложение лишь показывает, что на определенном порту находится, тот или иной мак-адрес.
gotch
13.01.2017 13:23+2Готовое приложение это как-то скучновато. ( Рассказали бы основные принципы, какие подводные камни встретились, чтобы каждый мог написать свой велосипедик.
neumeika
13.01.2017 23:27cacti mactrack: история маков (когда-где-кто), поиск, интерфейс с портами, если не лень, можно накрутить мониторинг (заббикс вкуснее, но mactrack там нет). Либо noc, но сие мало кто осилит.
MMik
Интересно.
Я правильно понял из лицензии, что запрещено только распространение (redistribution в п.3 лицензии) в коммерческих целях, а использование в коммерческих целях и модификация разрешены по принципу «всё, что не запрещено, то разрешено»?
sviato_slav
Постараюсь пояснить.
Когда я писал п.3 лицензии я хотел сказать следующее:
использование в целях получения финансовой выгоды(продажа моего приложения, продажа ПО основанного на моей исходном коде) без моего разрешения запрещено;
использование в любых организациях(в том числе и в коммерческих), либо физическими лицами без получения финансовой выгоды разрешено.
MMik
Коммерческая организация — юридическое лицо, преследующее извлечение (получение) прибыли в качестве основной цели своей деятельности (т.е. коммерческие цели — у вас как раз в лицензии написано «commercial purposes»). Налицо финансовая выгода.
В п.3 лицензии вы говорите только о распространении. Об использовании там ничего не говорится. Ну так что, «всё, что не запрещено, то разрешено»?
sviato_slav
Поясните с какой целью вы это спрашиваете? Как вы хотите использовать приложение, либо исходные коды? Если вы опишете конкретную ситуацию, я вам отвечу.
MMik
На работе. Работаю на разные компании, и, как правило, они коммерческие. В том числе работаю на провайдеров, у которых для этих же целей используются или энтерпрайзные продукты, или свои «велосипеды». Возможно, мне понадобится модифицировать исходники (например, сходу напрашивается добавление RESTful API).