需求
有线局域网内的 MAC 地址白名单功能,使不在名单内的终端无法上网。(有线局域网内,可以理解为终端都是 PC 机器)
设备
- Huawei S5720EI 核心交换机
- Huawei S5720S 普通交换机
拓扑图

目前尝试
例如在上图的拓扑图中,我想只让 B、C、D、E 机器的 MAC 地址进行白名单化,使 PC-A 无法上网。 在核心交换机上,将 PC-A ( A 号 PC 机器)的 MAC 地址拉黑进入黑洞 MAC 列表,可以有效拉黑某台终端设备。 取消拉黑之后,还原为初始状态,我思考先通过关闭 MAC 地址学习以及静态 MAC 地址表的方式实现白名单,我是这么操作的:
- 将这个 PC-A 的 MAC 地址所在的 VLAN 以及 Interface 接口的 MAC 地址学习都 disable 关闭。telnet 进入核心交换机,将普通交换机 1 的接上的是核心交换机的 GigabitEthernet0/0/25,所以将 GigabitEthernet0/0/25 的 mac-address learning 关掉,而且不在表内的数据包的处理方式 Action 设置为 discard 丢弃,以及 PC-A 所在的 VLAN 的 mac-address learning 也关掉。
参考如下: 配置关闭 MAC 地址学习功能
- 在核心交换机内,将 GigabitEthernet0/0/25 的其他所有 MAC 地址全部写入静态表内。
- 在静态 MAC 地址表内删除 PC-A 的 MAC 地址。
观察一段时间发现,在核心交换机内,根据display mac-address dynamic 命令查看动态 MAC 地址表,也没有查到 PC-A 的 MAC 地址。但是实际检查发现 PC-A 机器仍然可以上网。
可能的问题
详细查阅了华为的文档,还有这么一条,也无法理解这个逻辑,是否是这里存在问题?
说明:
S5720EI 设备,VLAN 下配置关闭 MAC 地址学习功能,同时加入该 VLAN 的接口配置关闭 MAC 地址学习功能且动作为丢弃,则该接口对该 VLAN 的报文不会丢弃。譬如:VLAN2 配置关闭 MAC 地址学习功能,VLAN3 不配置关闭 MAC 地址学习功能,Port1 配置关闭 MAC 地址学习功能且动作为丢弃,同时 Port1 加入 VLAN2 和 VLAN3。 此时 Port1 收到 VLAN2 的报文不会丢弃,收到 VLAN3 的报文会丢弃。
求助各位大佬,看看哪里有什么不对的地方?是否使用这种方法实现白名单?