zoukankan      html  css  js  c++  java
  • 基于SNMP的cisco网络环境中设备定位

    背景知识:
        1.三层设备的arp表存储IP和MAC的对应关系。
                   2.二层设备的转发桥接表中存储MAC和转发端口对应关系。
                   3.CDP(Cisco Discovery Protocol)是思科设备之间发现相邻设备的链路层协议。
                   4.三层交换机的二层模块中的转发表以cam表实现,如 show cam dynamic
    5.在划分VLAN 的情况下,思科设备上转发表内容要根据Community String Indexing 方法获取。
    1.根据IP地址得到所对应的MAC地址:

    通过查看系统的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 )

    可以看到ipNetToMediaPhyAddress.10.10.1.3.4这样一个oid,这里紧跟在ipNetToMediaPhyAddress后面的10是指10.1.3.4的转发端口索引。这样就可以根据这一项得出10.1.3.4的MAC地址是00:08:9c:bd:a7。

     

    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 )

    这里c0 a8 63 02 是IP地址的16进制表示,转成十进制是192.168.99.2。三层设备的IP是192.168.99.1。这个IP地址的表示类型可以根据cdpCacheAddressType确定。CdpCacheAddress后面的10是指ifIndex。

    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

    OID 部分最后一位是指vlan号,OID值是指IfIndex。可以从中得到该设备上的所有vlan号。

    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

    这里是dot1dTpFdbPort加上由上所得到的mac地址的十进制查找到桥接端口,再根据这个端口查到其端口索引,查找dot1dBasePortIfIndex(OID:1.3.6.1.2.1.17.4.1.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

    从上面可以看出,桥接端口对应的端口索引IfIndex是5。根据这个端口可以很容易得到端口名,端口描述等。
    5.根据CDP得到指定端口索引下连的交换机IP。

    2中和方法,cdpCacheAddress加上端口索引可以得到下接的网络设备。如果没找到下端网络设备,那么下接的可能就已经是所要查的主机,也有可能是不支持CDP协议的设备,定位互此终止。如果能够得到下连设备的IP地址,那么可以根据此IP重复3以下的查找过程,直到找不到下连设备。这里还可以从cdpCacheDevicePort中得到下连设备连接该设备的端口。有利于形成完整的链接关系


    作者:古梅飞动
    公司:蜜团科技
    出处:http://www.mitsofts.com/index.php
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Civil3D有哪些API
    Android Dex分包之旅
    android 资料
    Android拆分与加载Dex的多种方案对比
    Android开机时间分析
    (3) arm 指令
    (2) arm 指令条件码
    (1) arm 指令格式
    Temp
    Android持续优化
  • 原文地址:https://www.cnblogs.com/luhuan860/p/1736669.html
Copyright © 2011-2022 走看看