通过SNMP收集连接设备的MAC地址


1

我正在编写一个脚本,它通过SNMP从Netgear交换机收集数据。我的问题是,我无法找到OID,它代表连接到端口的客户端的MAC地址。

SNMPWalk在OID上找到了一些但不是全部地址,如iso.0.8802.1.1.2.1.4.1.1.5.18524162.7.7(返回连接到端口7的设备的HEX-String)

有谁知道,如何收集所有(直接)连接设备的地址或这里应该使用哪个OID?

关心R.Christes

Answers:


1

我会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 有相应的端口ID列表。

这些是标准的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(即:00:0C:42:C2:51:61以十进制表示形式创建了MAC的新OID (...).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包含相关端口但基本原理相同。


1
许多支持VLAN的交换机实际上不支持此OID。相反,他们使用1.3.6.1.2.1.17.7.1.2.2.1.2802.1Q,其中包括VLAN ID和MAC地址。(我相信这是为了“独立学习”的支持。)
grawity

我试过这个,@ bcs78的OID只返回“noSuchInstance”,如果我在1.3.6.1.2.1.17.7.1.2.2.1.2上运行SNMPWalk,它会在iso3.6等OID下返回一堆Integer-Values .1.2.1.17.7.1.2.2.1.2.1.0.0.203.97.24.145 = INTEGER:52
R.Christes

这将返回“此OID上此代理上没有此类对象”我是否必须在交换机上配置某些内容,或者是否必须使用特定的SNMP版本?
R.Christes

如果我在parend OID上运行SNMPWalk,它会在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

就是这样,非常感谢你的耐心:-)
R.Christes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.