交换机怎么审计MAC地址?
一、交换机“学 MAC”是怎么回事?
交换机的核心任务是根据 MAC 地址表(又叫转发表) 来进行转发决策。

正常情况下的学习过程如下:
- 交换机收到一帧二层数据包
- 查看帧头部的源 MAC 地址
- 把这个 MAC 与进入的接口绑定,记录进表项(如:MAC A 来自 Gig0/0/1)
- 下一次要发给 MAC A 的帧,就直接从 Gig0/0/1 发出去
这个过程称为 MAC地址学习,是交换机转发的基础。
二、如果学不到 MAC 地址,会发生什么?
当交换机没有目标 MAC 的转发表项,它就只能选择:
广播或泛洪(Flooding)!

也就是说:
- 发往未知 MAC 的帧,会被转发到除了入端口之外的所有端口
- 这在少量数据包时没问题,但一旦这种“未知帧”多了,就会造成广播泛滥
更严重时,某些错误拓扑或配置还会导致这些帧循环在网络中 —— 广播风暴正式形成。
三、什么是广播风暴?
广播风暴(Broadcast Storm) 就是指大量的广播帧(或泛洪帧)在网络中不断循环、放大、堆积,最终拖垮整个局域网的现象。
特征:
- 所有端口指示灯疯狂闪烁
- Ping 抖动、丢包严重
- 网速缓慢或中断
- 接入设备频繁掉线
- ARP 表疯狂刷新
根源:
网络中存在环路 + 没有防环机制(如 STP) + 未知 MAC 引发泛洪
四、哪些场景会导致学不到 MAC 地址?
- 双工/速率不匹配接口协商异常,导致数据无法正常识别或学习。
- MAC 地址冲突网络中有多个设备使用相同 MAC,交换机记录混乱。
- 配置了“静态 MAC”但不准锁死 MAC 到错误端口,结果学不到真实来源。
- 交换机缓存溢出网络中 MAC 数量太多,超出设备容量,无法学习新地址。
- 环路存在且 STP 没启用广播帧循环转发,导致地址学不到、表项刷不完。
- 非法设备接入网络(仿冒网关、MAC泛洪攻击)
五、如何防止 MAC 学不到 + 广播风暴?
1. 启用 STP(生成树协议)
防止环路,核心防风暴机制
# 华为示例
interface GigabitEthernet0/0/1
stp enable
2. 配置接口限速 / storm control(风暴控制)
storm-control broadcast threshold 100 80
防止广播帧流量超限直接拖死全网。
3. 设置 MAC 限制和静态绑定
mac-limit maximum 50
mac-address static XXXX-XXXX-XXXX interface Gig0/0/1 vlan 10
对关键设备做绑定,防止泛洪
4. 定期清理 ARP/MAC 缓存
防止缓存异常或溢出导致学习失败。
5. 使用 DHCP snooping + 动态 ARP 检测
防止伪造报文引发 MAC 学习混乱。
最后总结一句话
交换机学不到 MAC,不是“不学无术”,而是很可能配置有问题或网络出了环路。
只要你发现:
- 设备能 ping 网关但局域网互访慢
- ARP 表刷得飞快,设备频繁掉线
- 不通的设备一换口就好
那真的要小心了,可能就是 MAC 表学不到+广播风暴起飞,早点处理,不然全网陪葬。
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
更多回答
CCIE学习笔记——CCIE实验笔记——HCIE学习笔记——HCIE实验笔记——H3CIE学习笔记——H3CIE实验笔记——CCIE安全——CCIE数通——CCIE数据中心——HCIE安全——HCIE数通——HCIE数据中心——H3CIE安全——H3CIE数通——H3CIE数据中心
1、端口安全防止MAC层攻击
端口安全——可限制接口MAC学习数量。假如,只限制接口可以学2个MAC,当有第3个MAC出现时,交换机就不学习,可以防范泛洪攻击。
端口安全——可在接口上静态绑定MAC地址,只有从绑定的接口进来的才被接收,从其他非绑定接口进来的不接收。防止MAC地址欺骗攻击。
2、配置端口安全
Int f0/1
Switchport mode access #启用端口安全,必须先设为access接口#
Switchport port-security #启用端口安全,默认只能学习一个MAC#
Switchport port-security maximum 5 #指定最多允许学习多少个MAC地址#
Switchport port-security mac-address aaaa.bbbb.cccc #绑定静态MAC#
Switchport port-security violation [protext | restrict | shutdown ] #指定行为#
Shutdown关闭——当收到违规流量,接口进入err-disable。默认处理方式就是shutdown
Protect保护——当收到违规流量,接口直接丢弃数据。
Restrict限制——当收到违规流量,接口就会扔掉数据,同时进行计数,扔掉了几个包。
什么叫违规流量,比如端口限制1个MAC,第二个MAC就是违规流量。
Switchport port-security aging time 1 #设定多长时间后重新学习MAC地址。默认是0,不会重新学习的#
上面的 time 1表示——当第一个MAC地址,1分钟没有流量过来,就重新学习MAC地址了。
Switchport port-security mac-address sticky #永久性的把MAC地址记录下来#。该命令会把MAC固定绑定。交换机接IP电话的时候都会用到这个命令.
3、实验拓扑

4、实验操作与验证
配置
R1:
int e0/0
no shutdown
SW1:
在E0/0上,启用端口安全,绑定一个MAC,000c.0012.3456。
interface Ethernet0/0
shutdown
switchport mode access
switchport port-security mac-address 000c.0012.3456
switchport port-security
Switchport port-security violation shutdown #这是一条默认命令,show是看不到的#
验证

E0/0上绑定了一个静态MAC,并且在E0/0上启用了端口安全,默认的命令会生效,,所以当有违规流量进来时,直接err-disable了。
SW1:
show int e0/0,显示err-disable。虽然显示down,其实并不是我们理解的那种down,去R1的E0/0端口看一下。

R1:
show int e0/0 所以一定要理解err-diable和down完全不一样,只是呈现的效果一样而已。

恢复err-disable的端口
恢复E0/0,先要no 掉 端口安全后,执行shutdown,再执行no shutdown就好了。
int e0/0
no switchport port-security
关掉端口安全后,依然显示err-diable。

执行shutdown,再执行no shutdown,端口恢复了。
