为什么无法通过snmp在l2交换机上获取主机的mac地址?但是可以在l3路由器上得到它

网络工程 思科 转变 路由器 交换 snmp
2021-07-16 08:16:23

我正在尝试通过snmp 获取计算机的mac 地址。

我在 GNS3 中有一个环境:

l3 R1的镜像是 vios-adventerprisek9-m.SPA.157-3.M3

l2 SW1的镜像是 viosl2-adventerprisek9-m.SSA.high_iron_20180619

PC1的 mac 地址为 00:50:79:66:68:03

PC1通过SW1使用 vlan 10 访问端口SW1使用中继连接到R1上的 vlan 10 网关,使用子接口 g0/0.1,现在我可以使用命令SW1获取PC1的 mac 地址

SW1#show mac address-table
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0ce6.df1f.ee01    DYNAMIC     Gi0/1
  10    0050.7966.6803    DYNAMIC     Gi1/0
  10    0ce6.df1f.ee01    DYNAMIC     Gi0/1
Total Mac Addresses for this criterion: 3

但我无法通过 SW1 上的 snmp 获取它:

[root@pandorafms ~]# snmpbulkwalk -v 2c -c harvey -OXsq 192.168.55.1  .1.3.6.1.2.1.3.1.1.2
mib-2.3.1.1.2.1.1.192.168.55.1 "0C E6 DF 3A 03 00 "
mib-2.3.1.1.2.1.1.192.168.55.254 "C2 02 26 18 00 01 "
mib-2.3.1.1.2.1.1.192.168.190.128 "C2 02 26 18 00 01 "
mib-2.3.1.1.2.1.1.192.168.190.132 "C2 02 26 18 00 01 "

但我可以通过 R1 上的 snmp 获取它:

[root@pandorafms ~]# snmpbulkwalk -v 2c -c harvey -OXsq 172.16.77.1  .1.3.6.1.2.1.3.1.1.2
mib-2.3.1.1.2.1.1.172.16.77.1 "0C E6 DF 1F EE 00 "
mib-2.3.1.1.2.1.1.172.16.77.254 "C2 01 1F BC 00 10 "
mib-2.3.1.1.2.6.1.192.168.11.100 "00 50 79 66 68 03 "
mib-2.3.1.1.2.6.1.192.168.11.254 "0C E6 DF 1F EE 01 "
mib-2.3.1.1.2.7.1.192.168.22.101 "00 50 79 66 68 02 "
mib-2.3.1.1.2.7.1.192.168.22.254 "0C E6 DF 1F EE 01 "

我不知道为什么,我只需要使用 snmp 获取交换机上的 mac 地址,以便使用 snmp 关闭端口。

1个回答

二层交换机不看报文上的三层IP地址来交换二层帧,它只使用帧上的MAC地址进行交换。交换机上的三层接口用于交换机管理。它就像局域网上的另一台主机,除非它与第 3 层的主机通信,否则它不会更新其 ARP 表。

交换机使用 MAC 地址表来交换帧。每次帧进入交换机时,交换机都会使用源 MAC 地址和看到它的接口更新其 MAC 地址表。然后交换机将使用 MAC 地址表来确定帧的目标 MAC 地址的接口在哪里,并将帧切换到该接口。这与交换机管理(第 3 层)ARP 表没有任何关系。

路由器将通过与网络上主机的任何通信更新其 ARP 表,这些主机需要将第 3 层数据包发送到不同的网络,因此它的 ARP 表会定期更新。交换机管理层 3 接口很少与主机通信,因此其 ARP 表不会定期更新主机地址。

查看交换机 MAC 地址表,而不是 ARP 表,以查看在接口上看到的 MAC 地址。