我正在编写一个脚本来映射连接到我们的交换机和路由器的服务器。我使用http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a00801c9199.shtml中列出的算法来映射第二层端口以提取MAC地址。
第3层端口是另一回事。这些端口未显示在路由器/第3层交换机上的“sh vlan”命令中。理想情况下,我想使用这些端口中存在的MAC地址,这是第3层连接的基础,因为它比IP地址更“永久” - 这些确实显示在设备的MAC地址表中。但是,这些端口没有关联的VLAN,并且通过SNMP进行MAC检索是VLAN索引的,这使得它非常困难。
我一直在敲打我的脑袋大约一个星期左右,但我尝试/找到的任何东西似乎都不允许我获得非VLAN MAC地址。是否可以通过这种方式映射第三层端口,还是需要使用第3层(IP地址)映射?
答案 0 :(得分:0)
如果您通过第2层连接到设备,您可以在第3层地址上使用ping来生成arp查找,然后在arp缓存中查找mac ...这适用于任何第3层端口,甚至是像Portchannels的第3层版本的逻辑端口。 这可能是最简单的方法。
如果您希望在SNMP领域100%:
要获取该设备的接口表,请转到下面的oid。它会回来 该设备上所有接口的列表。这应该适用于运行SNMP代理的任何设备(甚至是服务器):
.1.3.6.1.2.1.2.2.1.2
这将为您提供接口编号列表(OID中的最后一位数字)和接口说明。它适用于SVI和物理接口,不确定SVI以外的逻辑类型。
然后对于每个接口,获取它的mac(其中x是接口表中的值):
.1.3.6.1.2.1.2.2.1.6.x
这会给你mac。 (在某些设备上可以截断前导0。) 但是,您需要在每个设备上至少使用1层3地址进行snmpwalk并获取。
如果您只想要所有的Mac,那么请走这个oid:
.1.3.6.1.2.1.2.2.1.6
我使用这种方法在大型网络上做类似的事情。