【发布时间】:2015-04-12 01:46:06
【问题描述】:
我正在对我们学校的实验室进行清单和审核。它需要跟踪每个实验室是否有 PC 转移。每个实验室都有自己的网络。因此,如果仅通过 IP 地址,甚至不可能知道转移。是否可以从 PC 连接的交换机端口获取数据?
【问题讨论】:
标签: windows ip-address mac-address switching
我正在对我们学校的实验室进行清单和审核。它需要跟踪每个实验室是否有 PC 转移。每个实验室都有自己的网络。因此,如果仅通过 IP 地址,甚至不可能知道转移。是否可以从 PC 连接的交换机端口获取数据?
【问题讨论】:
标签: windows ip-address mac-address switching
是的,如果您的交换机支持 SNMP。您可以通过网络接口卡的 MAC 地址来跟踪 PC(只要它们不改变)。有一些 OID 对于获取此信息可能很有趣。首先是:
1.3.6.1.2.1.17.4.3.1.1 (dot1dTpFdbAddress):
网桥具有转发和/或过滤信息的单播 MAC 地址。
如果您的网络真的很简单,比如实验室用一个交换机,没有 VLAN 等。您可以通过第一个 OID 并从交换机获取 MAC 地址,将它们与您的 PC 数据库交叉引用并检查您的任何内容需要检查。
如果您确实有 VLAN 或有多个实验室连接到单个交换机,则您需要更深入地找到 PC 连接到的端口。
1.3.6.1.2.1.17.4.3.1.2 (dot1dTpFdbPort):
值“0”或端口的端口号,在该端口上看到源地址等于 dot1dTpFdbAddress 的相应实例的值的帧。
1.3.6.1.2.1.17.1.4.1.2(dot1dBasePortIfIndex):
在 MIB-II 中定义的 ifIndex 对象实例的值,用于与此端口对应的接口。
1.3.6.1.2.1.31.1.1.1.1(ifName):
接口的文本名称。该对象的值应该是本地设备分配的接口名称,并且应该适合在设备的“控制台”输入的命令中使用。
以下是手动执行此操作的示例(在某些 Linksys 交换机上),但您可以轻松编写一个脚本来执行此操作并返回它们学习的 MAC 地址和端口列表。
# snmpwalk -v2c -c "your_community" switch.example.com 1.3.6.1.2.1.17.4.3.1.1
SNMPv2-SMI::mib-2.17.4.3.1.1.64.85.57.242.44.224 = Hex-STRING: 40 55 39 F2 2C E0
遍历此 OID 将列出交换机已获知的所有 MAC 地址。在我的示例中,为简单起见,只有一个 MAC 地址 (40:55:39:f2:2c:e0)。接下来要查找该MAC地址的网桥端口号:
# snmpget -v2c -c "your_community" switch.example.com 1.3.6.1.2.1.17.4.3.1.2.64.85.57.242.44.224
SNMPv2-SMI::mib-2.17.4.3.1.2.64.85.57.242.44.224 = INTEGER: 6
您在 OID 中看到的其他数字是 MAC 地址的点分十进制表示。在此之后,您从网桥端口号获取接口索引,最后是接口名称(端口名称)。
# snmpget -v2c -c "your_community" switch.example.com 1.3.6.1.2.1.17.1.4.1.2.6
SNMPv2-SMI::mib-2.17.1.4.1.2.6 = INTEGER: 6
# snmpget -v2c -c "your_community" switch.example.com 1.3.6.1.2.1.31.1.1.1.1.6
IF-MIB::ifName.6 = STRING: Port6
您发现一个具有 40:55:39:f2:2c:e0 MAC 地址的主机连接到端口 6。如果您正在处理一些更高质量的设备(如 Cisco),您应该知道他们可能会为每个 VLAN 保留单独的实例并使用称为 SNMP Community String Indexing 的东西,您可以在其中将 Vlan 索引添加到您的社区字符串中,如下所示(对于 Vlan 123 ):
# snmpwalk -v2c -c "your_community"@123 switch.example.com 1.3.6.1.2.1.17.4.3.1.1
【讨论】: