Собирать MAC-адреса подключенных устройств через SNMP

849
R.Christes

Я работаю над сценарием, который собирает данные с Netgear-коммутаторов через SNMP. Моя проблема в том, что я не могу найти OID, который представляет MAC-адрес клиентов, подключенных к порту.

SNMPWalk обнаружил некоторые (но не все) адреса в OID, таких как iso.0.8802.1.1.2.1.4.1.1.5.18524162.7.7 (возвращает строку HEX устройства, подключенного к порту 7)

Кто-нибудь знает, как собрать адреса всех (напрямую) подключенных устройств или какой OID следует использовать здесь?

С уважением Р.Христес

1

1 ответ на вопрос

1
bcs78

Я бы использовал, 1.3.6.1.2.1.17.4.3.1.1чтобы получить список подключенных устройств. Обратите внимание, что в список также входят MAC-адреса портов, и когда к одному из портов подключен другой коммутатор, в списке будет больше MAC-адресов (MAC-адреса устройств, подключенных к другому коммутатору).

1.3.6.1.2.1.17.4.3.1.2 имеет список соответствующих идентификаторов портов.

Это стандартные OID, а не специфичные для Netgear, так что это должно работать с любым брендом.

Вот пример вывода из моего Mikrotik:

bcs78@sv1:~# snmpwalk -l authPriv -a SHA -A password -x AES -X password -u community 192.168.88.1 1.3.6.1.2.1.17.4.3.1 iso.3.6.1.2.1.17.4.3.1.1.0.12.66.194.81.97 = Hex-STRING: 00 0C 42 C2 51 61 iso.3.6.1.2.1.17.4.3.1.1.0.12.66.231.167.149 = Hex-STRING: 00 0C 42 E7 A7 95 iso.3.6.1.2.1.17.4.3.1.1.28.116.13.111.54.18 = Hex-STRING: 1C 74 0D 6F 36 12 iso.3.6.1.2.1.17.4.3.1.1.40.194.221.106.213.139 = Hex-STRING: 28 C2 DD 6A D5 8B iso.3.6.1.2.1.17.4.3.1.1.120.29.186.155.14.13 = Hex-STRING: 78 1D BA 9B 0E 0D iso.3.6.1.2.1.17.4.3.1.1.172.133.61.155.120.36 = Hex-STRING: AC 85 3D 9B 78 24 iso.3.6.1.2.1.17.4.3.1.1.176.70.252.87.106.236 = Hex-STRING: B0 46 FC 57 6A EC iso.3.6.1.2.1.17.4.3.1.1.176.70.252.87.107.46 = Hex-STRING: B0 46 FC 57 6B 2E iso.3.6.1.2.1.17.4.3.1.1.184.39.235.8.17.87 = Hex-STRING: B8 27 EB 08 11 57 iso.3.6.1.2.1.17.4.3.1.1.228.141.140.231.7.102 = Hex-STRING: E4 8D 8C E7 07 66 iso.3.6.1.2.1.17.4.3.1.1.228.141.140.231.7.103 = Hex-STRING: E4 8D 8C E7 07 67 iso.3.6.1.2.1.17.4.3.1.1.228.141.140.231.7.104 = Hex-STRING: E4 8D 8C E7 07 68 iso.3.6.1.2.1.17.4.3.1.1.228.141.140.231.7.105 = Hex-STRING: E4 8D 8C E7 07 69 iso.3.6.1.2.1.17.4.3.1.1.228.141.140.231.7.107 = Hex-STRING: E4 8D 8C E7 07 6B iso.3.6.1.2.1.17.4.3.1.2.0.12.66.194.81.97 = INTEGER: 4 iso.3.6.1.2.1.17.4.3.1.2.0.12.66.231.167.149 = INTEGER: 5 iso.3.6.1.2.1.17.4.3.1.2.28.116.13.111.54.18 = INTEGER: 3 iso.3.6.1.2.1.17.4.3.1.2.40.194.221.106.213.139 = INTEGER: 19 iso.3.6.1.2.1.17.4.3.1.2.120.29.186.155.14.13 = INTEGER: 6 iso.3.6.1.2.1.17.4.3.1.2.172.133.61.155.120.36 = INTEGER: 6 iso.3.6.1.2.1.17.4.3.1.2.176.70.252.87.106.236 = INTEGER: 4 iso.3.6.1.2.1.17.4.3.1.2.176.70.252.87.107.46 = INTEGER: 5 iso.3.6.1.2.1.17.4.3.1.2.184.39.235.8.17.87 = INTEGER: 4 iso.3.6.1.2.1.17.4.3.1.2.228.141.140.231.7.102 = INTEGER: 26 iso.3.6.1.2.1.17.4.3.1.2.228.141.140.231.7.103 = INTEGER: 5 iso.3.6.1.2.1.17.4.3.1.2.228.141.140.231.7.104 = INTEGER: 4 iso.3.6.1.2.1.17.4.3.1.2.228.141.140.231.7.105 = INTEGER: 3 iso.3.6.1.2.1.17.4.3.1.2.228.141.140.231.7.107 = INTEGER: 19 (...) 

Как вы можете видеть, дочерние OID создаются динамически (то есть .: новый OID для MAC 00:0C:42:C2:51:61был создан в десятичном представлении как (...).0.12.66.194.81.97).


Как это обсуждается в комментариях ниже, вышеуказанные OID действительны для некоторых устройств (я тестировал их на маршрутизаторе Mikrotik). Однако коммутаторы, поддерживающие VLAN, с большей вероятностью будут использовать OID 1.3.6.1.2.1.17.7.1.2.2.1 вместо того, где дочерний OID .1является таблицей MAC-адресов и .2содержит связанные порты, но основной принцип тот же.

Многие VLAN-совместимые коммутаторы на самом деле не поддерживают этот OID. Вместо этого они используют `1.3.6.1.2.1.17.7.1.2.2.1.2` из 802.1Q, который включает идентификатор VLAN вместе с MAC-адресом. (Я считаю, что это для поддержки «независимого обучения».) grawity 6 лет назад 1
Я пробовал это, OIDs @ bcs78 только возвращают "noSuchInstance", если я запускаю SNMPWalk на 1.3.6.1.2.1.17.7.1.2.2.1.2, он возвращает кучу целочисленных значений под OID, как iso.3.6 .1.2.1.17.7.1.2.2.1.2.1.0.0.203.97.24.145 = INTEGER: 52 R.Christes 6 лет назад 0
Это возвращает «Нет такого объекта, доступного на этом агенте с этим OID». Нужно ли мне что-то настраивать на коммутаторе или мне нужно использовать определенную версию SNMP? R.Christes 6 лет назад 0
Если я запускаю SNMPWalk для идентификатора Parend, он возвращает набор целочисленных значений под идентификаторами OID, которые я не могу распознать, как iso.3.6.1.2.1.17.7.1.2.2.1.2.1.0.128.163.182.231.31 = INTEGER: 52 R.Christes 6 лет назад 0
Вот и все, большое спасибо за ваше терпение :-) R.Christes 6 лет назад 0

Похожие вопросы