Sticky MAC:端口安全怎么自动学习并锁定接入设备

· 6 分钟阅读

在企业网络里,未授权设备接入是最常见的威胁之一。端口安全是保护网络基础设施的第一道防线,而 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"]

四个核心机制:

  1. MAC 学习:设备首次发数据时,交换机学习其源 MAC
  2. 地址固化:学到的地址从动态表项转为静态表项,写入运行配置
  3. 数量限制:每个端口可配最大 MAC 数, Cisco 默认是 1
  4. 违规处理:超限或出现陌生 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静态 MACSticky 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 就等于没配。