Sticky MAC:端口安全怎么自动学习并锁定接入设备
在企业网络里,未授权设备接入是最常见的威胁之一。端口安全是保护网络基础设施的第一道防线,而 Sticky MAC(粘滞 MAC)是其中性价比最高的一种实现:不用手工抄 MAC 地址,又能让端口只认某几台设备。
一、Sticky MAC 是什么
Sticky MAC 是交换机端口安全功能的一种工作方式,它会自动学习并固化连接到端口的设备 MAC 地址。与普通动态 MAC 的区别在于:动态表项老化后会消失,Sticky 学到的地址会以静态表项的形式写进配置。
这里有个常见误解需要先说清:“粘滞”不等于”断电不丢”。Sticky MAC 学到地址后写入的是 running-config,设备重启前如果没有保存配置,这些表项一样会消失。所谓持久化,前提是你执行过 write memory(或 copy running-config startup-config)。很多现场问题就出在这一步——配置看着有,重启后端口安全策略空了。
它解决什么问题
- 防止未授权接入:只有学过的设备能通,其他设备一律按违规处理
- 省去手工收集 MAC:不用一台台机器抄地址再配静态绑定
- 重启后策略依然有效:前提是配置已保存
- 便于定位:违规会产生日志和计数器,方便回溯是谁接了线
二、工作流程
graph TD
A[启用端口安全与 Sticky MAC] --> B{设备接入并发送数据}
B --> C[学习源 MAC 地址]
C --> D{是否达到 MAC 数量上限?}
D -- 否 --> E[写入地址表并固化到配置]
E --> F[正常转发]
D -- 是 --> G{MAC 是否在允许列表中?}
G -- 是 --> F
G -- 否 --> H[触发安全违规]
H --> I["按违规动作处理:shutdown / restrict / protect"]
四个核心机制:
- MAC 学习:设备首次发数据时,交换机学习其源 MAC
- 地址固化:学到的地址从动态表项转为静态表项,写入运行配置
- 数量限制:每个端口可配最大 MAC 数, Cisco 默认是 1
- 违规处理:超限或出现陌生 MAC 时,按预设动作处置
三、配置示例
Cisco 交换机
configure terminal
interface gigabitethernet 0/1
switchport mode access
! 启用端口安全
switchport port-security
! 开启粘滞学习
switchport port-security mac-address sticky
! 允许的最大 MAC 数(默认 1,接 IP 电话 + PC 时给 2)
switchport port-security maximum 2
! 违规动作
switchport port-security violation restrict
end
! 关键:保存配置,否则重启后粘滞表项全丢
write memory
华为交换机
华为侧的概念一致,命令体系不同,粘滞学习同样是”学习 + 固化”两步:
system-view
interface GigabitEthernet 0/0/1
port-security enable
port-security max-mac-num 2
port-security mac-address sticky
port-security protect-action restrict
H3C 则是另一套模型,端口安全按 port-security port-mode(如 autolearn)选择工作方式,而不是像 Cisco/华为那样叠加多个开关。多厂商混合组网时,这一层差异最容易让人照着文档配错,迁移配置时要先确认设备的”端口安全模型”是哪一类。
参数说明:
switchport mode access:端口设为接入模式,端口安全只对 access 端口生效mac-address sticky:开启粘滞学习maximum:允许的 MAC 数量上限,超限即违规violation:违规动作,可选shutdown/restrict/protect
四、三种违规动作的差别
这是实际选型时最需要想清楚的地方:
| 动作 | 行为 | 日志 | 恢复方式 | 适用场景 |
|---|---|---|---|---|
protect | 静默丢弃违规流量 | 不记录 | 自动,无需干预 | 干扰少的办公区,不想被误触发断网 |
restrict | 丢弃并计数 | 记录 Syslog 与计数器 | 自动 | 需要留痕、又要保证业务连续 |
shutdown | 端口 err-disable | 记录 | 需 shutdown / no shutdown,或配 errdisable 自动恢复 | 机房、服务器区等高安全要求场景 |
shutdown 安全性最高,代价是误判时端口直接躺下,得人工去恢复。办公区大面积部署时,restrict 通常更划算——能查到是谁、又不至于让用户断网投诉。
五、与其他 MAC 表项的对比
| 特性 | 动态 MAC | 静态 MAC | Sticky MAC |
|---|---|---|---|
| 学习方式 | 自动学习 | 手工配置 | 自动学习 |
| 老化 | 会老化消失 | 永久 | 永久(需保存配置) |
| 管理开销 | 低 | 高 | 中 |
| 安全性 | 低 | 高 | 高 |
| 灵活性 | 高 | 低 | 中 |
Sticky MAC 的价值就在这张表的中间那一列:安全性接近手工静态绑定,管理成本却接近动态学习。
六、适用场景
- 办公环境:员工工位端口绑定到具体设备,换机器需要管理员介入
- 会议室 / 公共区域:限制单端口可接入的设备数量,防止私接小交换机
- 服务器接入:服务器端口只放行已知 MAC
- VoIP 部署:
maximum 2让 IP 电话和串接的 PC 各占一个名额
七、踩坑与处理
设备更换:新设备接上去会直接触发违规。需要先清掉该端口的粘滞表项,让端口重新学习:
interface gigabitethernet 0/1
no switchport port-security mac-address sticky
switchport port-security mac-address sticky
端口被 shutdown 关掉:shutdown 再 no shutdown 恢复。频繁发生的话,建议配 errdisable 自动恢复,别让运维半夜爬起来。
查看当前学习结果:
show port-security interface gigabitethernet 0/1
show port-security address
数量限制给太小:接了 IP 电话又串了 PC,maximum 1 会让后接入的那台一直违规。VoIP 场景记得给 2。
别忘了保存配置。这一条值得单独写一遍:Sticky 的表项活在 running-config 里,没 write memory 就等于没配。
