我当然希望使用 SNMP,获取连接到 Cisco Catalyst 3600 中的 VLAN 的客户端 IP 列表。
到目前为止,我已经制作了一个获取这些 IP 地址的伪算法,但我不确定这是否以正确的方式完成:
1)从 Catalyst (oid) 接收所有 IP 地址1.3.6.1.2.1.4.20.1.2
我得到类似的信息:
IP-MIB::ipAdEntIfIndex.10.10.2.1 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.2.251 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.3.251 = INTEGER: 151
等等。
2)1.3.6.1.2.1.4.20.1.2.10.10.2.1.<IP_ADDRESS>
从上面的列表中获取特定 IP 地址的 VLAN(oid)的 ifIndex :
IP-MIB::ipAdEntIfIndex.10.10.2.1 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.2.251 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.3.251 = INTEGER: 151
3)获取 VLAN 名称 (oid 1.3.6.1.4.1.9.9.46.1.3.1.1.4.1.<IF_INDEX>
) If_index 是从上面的列表借用的:
IP-MIB::ipAdEntNetMask.152 = No Such Instance currently exists at this OID
IP-MIB::ipAdEntNetMask.151 = No Such Instance currently exists at this OID
在第三步中我遇到了这个问题,在 OID 中找不到该实例。这很奇怪,因为对于大约 40 个 IP 地址,我可以找到它们所连接的大约 10 个 VLAN 名称。或者也许我做错了?
答案1
我还设法获得了新算法来查找连接到 VLAN 的 IP:
1)获取唯一标识该条目适用的接口的索引值(oid 1.3.6.1.2.1.4.20.1.2
:)
示例输出:
IP-MIB::ipAdEntIfIndex.10.10.2.1 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.2.251 = INTEGER: 152
IP-MIB::ipAdEntIfIndex.10.10.3.250 = INTEGER: 151
IP-MIB::ipAdEntIfIndex.10.10.3.251 = INTEGER: 151
IP-MIB::ipAdEntIfIndex.10.100.0.1 = INTEGER: 312
IP-MIB::ipAdEntIfIndex.10.100.0.251 = INTEGER: 312
等等...
1.3.6.1.2.1.31.1.1.1.1.<INTERFACE_INDEX>
2)使用上述索引 (oid: )获取 Catalyst 3600 上的接口名称
示例输出(对于索引 =152):
IF-MIB::ifName.152 = STRING: Vl206
3) 从步骤 1) 中提取特定接口索引的 IP 地址。例如索引152它的 IP 地址如下:
10.10.2.1
10.10.2.251
连接到名为Vl206
我希望我做得好。