1

我正在编写一个脚本来映射连接到我们的交换机和路由器的服务器。我使用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 地址。是否可以通过这种方式映射第三层端口,还是需要使用第三层(IP 地址)映射?

4

1 回答 1

0

如果您通过第 2 层连接到设备,则可以在第 3 层地址上使用 ping 来生成 arp 查找,然后在 mac 的 arp 缓存中查找...这适用于任何第 3 层端口,甚至逻辑端口,例如第 3 层版本的 Portchannels。这可能是最简单的方法。

如果您想 100% 进入 SNMP 领域:

要获取该设备的接口表,请执行以下 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

我使用这种方法在大型网络上做类似的事情。

于 2012-02-04T01:11:48.800 回答