Как стать автором
Обновить

Комментарии 14

xgu.ru/xg-ids/ch04s02.html
Проверял метод из статьи по ссылке, вручную через snmpwalk на коммутаторах DLink — получение порта по SNMP вполне реально, универсально, и безопасный доступ только по чтению через public. Нужно только найти правильную базу для соответствующих OID.

show lldp neighbors interface .... | display xml — чтобы не завязываться на формат дескрипшенов.

Да, на счет lldp я думал, но с последнего свича в цепочке все равно хотелось получить дескрипшен и есть дополнительная проверка, что это именно downlink, по признаку «SW>».
Если этой проверки нет, скрипт может пытаться лезть по ssh на все подряд и тупить. С дескрипшенами процесс более контролируемый, хоть и менее универсальный.
cacti + mactrack plugin делает то же самое через snmp
PS тоже сначала чесались руки написать свой велосипед для SSH, но разум сказал: ищи готовое решение.
SNMP для этих целей гораздо практичней. Привезут вам цисок, будете переписывать?
И ещё — если устройство давно не рассылало широковещательных кадров его MAC вы ни на Core ни на DS вы не найдёте.
У меня большие сомнения, что на SNMP не придется переписывать под циски, у джуна весьма загадочная трактовка MIB-ов.
И на Core и на DS найду все, что нужно, так как весь роутер, через который работает инет, тоже подключен к кору.
У разных вендоров действительно разные MIB, но обычно уже все сделано до нас.
github.com/Cacti/plugin_mactrack/tree/develop/lib
Для Ubiquiti EdgeSwitch использовал настройки mactrack_trendnet
До тех пор пока железка которую вы ищете ходит в интернет.
Альтернатива — пройти по всем Access-свичам полным перебором?
Ну вы же не сказали для чего вы ищите порт, откуда берёте MAC и что делаете дальше.
Если из ARP, то можно ещё до начала поиска сделать ping. А перебор это не альтернатива, а скорее последний шанс, если не нашёл по вашей логике.
Тут, собственнно, рецепт
forums.juniper.net/t5/Ethernet-Switching/Use-SNMP-to-figure-out-which-port-a-MAC-address-is-reachable-on/m-p/238166/highlight/true#M10183
P.S. да, скорее всего он будет универсальным для разных вендоров, но то, что простым в реализации — не уверен.
Зависит от библиотек, Вы ж не будете сами с нуля писать.
Библиотеки тут ни при чем, поддержка SNMP на питоне близка к идеалу, там все элементарно, в целом решение не выглядит простым.

То что в Cacti есть этот модуль — отлично, но мне нужно было не для Cacti.
NetDoT — собирает маки по snmp, при поиске выдает конечный порт. так же собирает и arp, что тоже удобно, чаще изначально знаешь именно IP того кого ищешь, а не MAC. Ну и удобно то, что не ищет «то что прям щас» (хотя так тоже бывает полезно), а собирает в базу по крону, то есть хранит историю. но если нужно «прям щас» — можно принудительно пнуть
Зарегистрируйтесь на Хабре , чтобы оставить комментарий