Quantcast
Channel: polygun2000的博客
Viewing all articles
Browse latest Browse all 55

根据MAC反查交换机端口的思路

$
0
0
公司CMDB系统有个需求,在已知MAC的情况下,找出该MAC所在的交换机端口。
简单的思路如下,用程序实现即可。

STEP 1. 获取当前交换机的MAC地址表(BRIDGE-MIB提供),dot1dTpFdbPort
# snmpwalk -v2c -c public 10.10.10.1 .1.3.6.1.2.1.17.4.3.1.2
SNMPv2-SMI::mib-2.17.4.3.1.2.0.0.12.7.172.32 = INTEGER: 51
SNMPv2-SMI::mib-2.17.4.3.1.2.0.0.12.7.172.33 = INTEGER: 51
SNMPv2-SMI::mib-2.17.4.3.1.2.0.5.152.17.81.16 = INTEGER: 39
…..
取到的内容说明:
SNMPv2-SMI::mib-2.17.4.3.1.2.是dot1dTpFdbPort前缀
0.0.12.7.172.32是MAC地址的10进制格式,对应16进制应该为   00:00:0C:07:AC:20
51是端口索引号, dot1dBasePort的值

STEP 2. 将端口索引转为接口编号
# snmpwalk -v2c -c public 10.10.10.1 .1.3.6.1.2.1.17.1.4.1.2
SNMPv2-SMI::mib-2.17.1.4.1.2.1 = INTEGER: 10101
SNMPv2-SMI::mib-2.17.1.4.1.2.2 = INTEGER: 10102
…….
SNMPv2-SMI::mib-2.17.1.4.1.2.51 = INTEGER: 10047
SNMPv2-SMI::mib-2.17.1.4.1.2.52 = INTEGER: 10048

可以看到SNMPv2-SMI::mib-2.17.1.4.1.2.51 = INTEGER: 10047 ,51接口对应的接口编号是10047

STEP 3. 将接口编号转换为可读的接口名字
# snmpget -v2c -c public 10.10.10.1 ifName.10047
IF-MIB::ifName.10047 = STRING: Fa0/47

得到10047接口的名字是Fa0/47

以上结果可以这么解读:  MAC地址00:00:0C:07:AC:20,是从交换机10.10.10.1的,Fa0/47端口上学习到的。

参考文档:
http://networkengineering.stackexchange.com/questions/2900/using-snmp-to-retrieve-the-arp-and-mac-address-tables-from-a-switch
http://serverfault.com/questions/441072/how-do-i-poll-the-arp-table-with-an-snmp-oid
http://networkengineering.stackexchange.com/questions/2990/translating-snmpwalk-output-into-human-readable-format

 

Viewing all articles
Browse latest Browse all 55

Trending Articles