2015-02-11 167 views
0

我正在开发我们学校实验室的清单和审计。它需要跟踪每个实验室是否有PC传输。每个实验室都有自己的网络。所以如果仅仅通过IP地址就不可能知道传输。是否可以从PC连接的交换机端口获取数据?从电脑连接的交换机的端口获取数据

回答

0

是的,如果你的交换机支持SNMP。您可以通过网络接口卡的MAC地址跟踪PC(只要不改变)。有几个OID可能对获取这些信息很有意思。其中第一个是:

1.3.6.1.2.1.17.4.3.1.1(dot1dTpFdbAddress):

甲单播MAC地址的量,桥已转发和/或过滤信息。

如果您的网络是非常简单的就像一个开关,用于实验室,没有的VLAN等,你可以走在第一个OID和从交换机获得MAC地址,你的电脑数据库相互参照和检查你需要检查的任何东西。

如果您确实有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):

所述的ifIndex对象的实例,在MIB-II中所定义,对于对应于该端口的接口的值。

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地址的主机连接到Port6。如果你正在处理一些更高质量的设备(如思科),你应该知道他们可以为每个VLAN保留单独的实例,并使用一种称为SNMP社区字符串索引的方法,将Vlan索引添加到你的社区字符串中(对于Vlan 123 ):

# snmpwalk -v2c -c "your_community"@123 switch.example.com 1.3.6.1.2.1.17.4.3.1.1