第109篇:DHCP Snooping:防私设 DHCP 服务器
关键词:DHCP Snooping、DHCP 攻击、私设 DHCP 服务器、信任端口、Option82、绑定表、二层安全
一、引言
DHCP(Dynamic Host Configuration Protocol)是园区网中最重要的协议之一,它为终端自动分配 IP 地址、网关、DNS 等网络参数。然而,DHCP 协议本身缺乏安全机制,任何接入网络的设备都可以充当 DHCP 服务器或中继代理,发起各种攻击。
DHCP Snooping 是交换机层面的一项安全特性,它通过区分信任端口和不信任端口,建立 DHCP 绑定表,有效防范非法 DHCP 服务器攻击、DHCP 耗尽攻击等二层安全威胁。
二、核心概念
2.1 DHCP 攻击类型
| 攻击类型 | 描述 | 危害 |
|---|---|---|
| 非法 DHCP 服务器 | 私设 DHCP 服务器,分配错误 IP/网关/DNS | 用户流量被劫持,中间人攻击 |
| DHCP Starvation | 耗尽 DHCP 地址池,合法用户无法获取地址 | 拒绝服务 |
| DHCP Relay 欺骗 | 伪造 DHCP Relay Agent,劫持 DHCP 请求 | 流量重定向 |
| IP/MAC 欺骗 | 使用非法获取的 IP/MAC 组合通信 | 身份冒充 |
2.2 DHCP Snooping 核心概念

| 概念 | 说明 |
|---|---|
| 信任端口(Trust Port) | 允许通过 DHCP Offer/Ack/Nak 等服务器响应报文 |
| 不信任端口(Untrust Port) | 丢弃来自该端口的 DHCP Offer/Ack/Nak 报文 |
| DHCP Snooping 绑定表 | 记录 IP-MAC-VLAN-Port-租期的映射关系 |
| Option82 | 交换机插入的 DHCP 选项,包含交换机 ID 和端口信息 |
2.3 DHCP Snooping 工作流程

三、技术细节
3.1 信任端口的默认行为
| 端口类型 | 默认信任状态 | 说明 |
|---|---|---|
| Access 端口 | 不信任 | 连接终端的端口,默认不信任 |
| Trunk 端口 | 信任 | 连接上层设备的端口,默认信任 |
| Hybrid 端口 | 不信任 | 需手动配置 |
最佳实践:仅将连接合法 DHCP 服务器或中继的端口配置为信任端口。
3.2 Option82 详解
Option82(Relay Agent Information Option)由 DHCP Snooping 交换机插入,包含:
| 子选项 | 名称 | 内容 |
|---|---|---|
| Sub-option 1 | Circuit ID | 交换机标识 + 端口号 |
| Sub-option 2 | Remote ID | 交换机 MAC 地址或主机名 |
| Sub-option 9 | Subscriber ID | 用户标识(可选) |
Option82 的作用: 1. DHCP 服务器通过 Option82 精确识别报文来源端口 2. 实现基于端口的 IP 地址分配策略 3. 辅助 DHCP Snooping 绑定表的建立 4. 防止 DHCP 报文环路
3.3 DHCP Snooping 绑定表
绑定表记录了通过 DHCP Snooping 验证的终端信息:
| 字段 | 示例 | 说明 |
|---|---|---|
| MAC Address | 00e0-fc12-3456 | 终端 MAC 地址 |
| IP Address | 10.10.10.100 | 分配的 IP 地址 |
| VLAN ID | 10 | 所属 VLAN |
| Interface | GE0/0/5 | 接入端口 |
| Lease Time | 3510 | 剩余租期(秒) |
| Type | Dyn dhcp snoop | 动态 DHCP Snooping 类型 |
四、实战配置/案例分析
4.1 华为交换机 DHCP Snooping 基础配置
# ========== 全局启用 DHCP Snooping ==========
[HUAWEI] dhcp enable
[HUAWEI] dhcp snooping enable
# ========== 配置信任端口 ==========
# 连接合法 DHCP 服务器的端口设为信任
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] dhcp snooping trusted
# ========== 配置不信任端口 ==========
# Access 端口默认为不信任,无需额外配置
# 如需显式配置:
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] undo dhcp snooping trusted
# ========== 启用 Option82 ==========
[HUAWEI] dhcp snooping option82 insert
# ========== 配置 DHCP Snooping 绑定表容量 ==========
[HUAWEI] dhcp snooping max-entries 4096
# ========== 查看绑定表 ==========
[HUAWEI] display dhcp snooping userbinding
4.2 启用 DHCP 报文速率限制
# 限制每个端口每秒处理的 DHCP 报文数量,防止 DHCP Starvation 攻击
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] dhcp snooping limit rate 5
# 限制 VLAN 级别
[HUAWEI] vlan 10
[HUAWEI-vlan10] dhcp snooping limit rate 100
4.3 故障案例:私设 DHCP 服务器导致全网劫持
场景描述:某办公楼所有用户的 DNS 突然被修改为一个非法域名服务器,打开银行网站时被重定向到钓鱼网站。运维团队发现所有新接入的 PC 获取到的网关和 DNS 都不正确。
排查过程:
- 检查 DHCP 服务器:
# 合法 DHCP 服务器配置正常,地址池未满
- 检查交换机 DHCP Snooping:
[SW-ACC] display dhcp snooping configuration
# 发现 DHCP Snooping 未启用
- 查找非法 DHCP 服务器:
# 开启 DHCP Snooping 调试
[SW-ACC] debugging dhcp snooping packet
# 发现 GE0/0/15 端口持续发送 DHCP Offer 报文
- 根因确认:GE0/0/15 连接的用户私接了一台开启 DHCP 服务的无线路由器,分配的网关指向了攻击者的机器。
处理措施:
# 第一步:立即关闭攻击端口
[SW-ACC] interface GigabitEthernet 0/0/15
[SW-ACC-GigabitEthernet0/0/15] shutdown
# 第二步:启用 DHCP Snooping
[SW-ACC] dhcp snooping enable
[SW-ACC] interface GigabitEthernet 0/0/24
[SW-ACC-GigabitEthernet0/0/24] dhcp snooping trusted
[SW-ACC] dhcp snooping option82 insert
# 第三步:联系用户,关闭无线路由器的 DHCP 功能
预防:全接入层交换机统一启用 DHCP Snooping,仅将上行 Trunk 端口配置为信任端口。
五、总结
| 项目 | 说明 |
|---|---|
| DHCP Snooping 本质 | 区分信任/不信任端口,过滤非法 DHCP 报文 |
| 信任端口 | 连接合法 DHCP 服务器/中继,允许服务器响应报文 |
| 不信任端口 | 连接终端,丢弃来自该端口的 DHCP Offer/Ack |
| Option82 | 插入交换机和端口信息,精确定位终端 |
| 绑定表 | IP-MAC-VLAN-Port-租期映射,为 IPSG/DAI 提供数据源 |
| 速率限制 | 防止 DHCP Starvation 攻击 |
| 华为推荐 | 全局启用 + 仅信任上行端口 + 启用 Option82 |
思考
-
DHCP Snooping 的信任端口如果配置错误(如将连接终端的端口也配置为信任),会导致什么安全问题?
-
Option82 插入后,如果 DHCP 服务器不支持 Option82,终端还能正常获取 IP 地址吗?如何解决兼容性问题?
-
DHCP Snooping 绑定表中的信息是动态生成的。如果交换机重启,绑定表丢失,会影响 IP Source Guard 和 DAI 的运行吗?
下篇预告:第110篇:IP Source Guard:防 IP 地址欺骗