基于SNMP的cisco网络环境中设备定位
通过查看系统的ARP缓存表可以找出某IP所对应的MAC,查找ipNetToMediaPhyAddress(OID: 1.3.6.1.2.1.4.22.1),可以得到如下结果,例:
OID: 1.3.6.1.2.1.4.22.1.2.8.127.0.0.2 type: snmp.SNMPOctetString value: (hex: 00 06 28 67 05 00 )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.1 type: snmp.SNMPOctetString value: (hex: 00 02 b9 b2 4c 0a )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.4 type: snmp.SNMPOctetString value: (hex: 00 08 74 9c bd a7 )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.5 type: snmp.SNMPOctetString value: (hex: 00 e0 4c 10 3a d7 )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.34 type: snmp.SNMPOctetString value: (hex: 00 0a e6 64 10 4b )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.38 type: snmp.SNMPOctetString value: (hex: 00 e0 4c 3c 11 02 )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.75 type: snmp.SNMPOctetString value: (hex: 00 50 22 88 29 f2 )
OID: 1.3.6.1.2.1.4.22.1.2.10.10.1.3.82 type: snmp.SNMPOctetString value: (hex: 00 d0 f8 0c bc b8 )
2.查找该三层设备MIB表中的cdpCacheAddress(OID: 1.3.6.1.4.1.9.9.23.1.2.1.1.4),如下表示:
OID: 1.3.6.1.4.1.9.9.23.1.2.1.1.4.10.145 type: snmp.SNMPOctetString value: 括c_ (hex: c0 a8 63 02 )
3.查找192.168.99.2上面的桥接表。先要得到该设备上的vlan列表,查找vtpVlanIfIndex(OID: 1.3.6.1.4.1.9.9.46.1.3.1.1.18),例如:
OID: 1.3.6.1.4.1.9.9.46.1.3.1.1.18.1.1 type: snmp.SNMPInteger value: 6
OID: 1.3.6.1.4.1.9.9.46.1.3.1.1.18.1.2 type: snmp.SNMPInteger value: 17
OID: 1.3.6.1.4.1.9.9.46.1.3.1.1.18.1.3 type: snmp.SNMPInteger value: 18
4.查找桥接转发表。查找dot1dTpFdbAddress(OID:1.3.6.1.2.1.17.4.3.1.1),在这里,需要用到Community String Indexing,思科设备的转发表对每个vlan是不一样的。这时候共同体名为community@vlank号,如:public@1,public@2,public@3等,默认情况下取来的是public@1地的转发表。此时需在对每个vlan的转发表进行查找,直到找到10.1.3.4的mac地址,例如:
OID: 1.3.6.1.2.1.17.4.3.1.1.0.2.253.21.123.10 type: snmp.SNMPOctetString value: (hex: 00 02 fd 15 7b 0a )
OID: 1.3.6.1.2.1.17.4.3.1.1.0.5.59.18.64.136 type: snmp.SNMPOctetString value: (hex: 00 05 3b 12 40 88 )
OID: 1.3.6.1.2.1.17.4.3.1.1.0.5.59.18.65.215 type: snmp.SNMPOctetString value: (hex: 00 05 3b 12 41 d7 )
OID: 1.3.6.1.2.1.17.4.3.1.1.0.5.59.18.110.148 type: snmp.SNMPOctetString value: (hex: 00 05 3b 12 6e 94 )
OID: 1.3.6.1.2.1.17.4.3.1.1.0.8.116.156.189.167 type: snmp.SNMPOctetString value: (hex: 00 08 74 9c bd a7 )
跟在dot1dTpFdbAddress后面的是mac地址的十进制表示,查到mac地址所在行后,再查找dot1dTpFdbPort(OID: 1.3.6.1.2.1.17.4.3.1.2),例如:
OID: 1.3.6.1.2.1.17.4.3.1.2.0.2.185.178.76.10 type: snmp.SNMPInteger value: 833
OID: 1.3.6.1.2.1.17.4.3.1.2.0.2.253.21.123.10 type: snmp.SNMPInteger value: 2
OID: 1.3.6.1.2.1.17.4.3.1.2.0.5.59.18.64.136 type: snmp.SNMPInteger value: 2
OID: 1.3.6.1.2.1.17.4.3.1.2.0.8.116.156.189.167 type: SNMP.SNMPInteger value: 2
OID: 1.3.6.1.2.1.17.1.4.1.2.1 type: snmp.SNMPInteger value: 4
OID: 1.3.6.1.2.1.17.1.4.1.2.2 type: snmp.SNMPInteger value: 5
OID: 1.3.6.1.2.1.17.1.4.1.2.65 type: snmp.SNMPInteger value: 11
OID: 1.3.6.1.2.1.17.1.4.1.2.66 type: snmp.SNMPInteger value: 12
OID: 1.3.6.1.2.1.17.1.4.1.2.67 type: snmp.SNMPInteger value: 13
用2中和方法,cdpCacheAddress加上端口索引可以得到下接的网络设备。如果没找到下端网络设备,那么下接的可能就已经是所要查的主机,也有可能是不支持CDP协议的设备,定位互此终止。如果能够得到下连设备的IP地址,那么可以根据此IP重复3以下的查找过程,直到找不到下连设备。这里还可以从cdpCacheDevicePort中得到下连设备连接该设备的端口。有利于形成完整的链接关系
作者:古梅飞动
公司:蜜团科技
出处:http://www.mitsofts.com/index.php
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。