第109篇:DHCP Snooping——防私设 DHCP 服务器
关键词
DHCP Snooping、私设 DHCP 服务器、Trust 端口、Untrust 端口、DHCP 攻击、IP 欺骗
一、什么是 DHCP Snooping?
1.1 为什么需要 DHCP Snooping
DHCP(Dynamic Host Configuration Protocol)的工作原理是客户端广播 Discover 报文,任意 DHCP 服务器都可以响应 Offer。这意味着——如果有人私接了一台 DHCP 服务器,它就可以给全网用户分配错误的 IP 地址。
攻击场景:私设 DHCP 服务器
恶意 DHCP 服务器
192.168.100.100
│
PC-A ────────── 交换机 ───────────────┘
(正常获取 IP) │
合法 DHCP 服务器
192.168.1.1
PC-A 发送 DHCP Discover → 广播 → 两台 DHCP 服务器都响应
合法 DHCP:分配 192.168.1.10/24,网关 192.168.1.1
恶意 DHCP:分配 192.168.100.10/24,网关 192.168.100.1(不存在)
→ PC-A 获得错误 IP,无法上网
1.2 DHCP Snooping 的核心功能
DHCP Snooping 在交换机上实现对 DHCP 报文的过滤和审计:
| 功能 | 说明 |
|---|---|
| 信任端口过滤 | 只允许 Trust 端口发送 DHCP Offer/ACK;Untrust 端口的 DHCP 服务器报文被丢弃 |
| DHCP Binding Table | 记录合法的 IP + MAC + VLAN + 端口绑定关系 |
| 防 DHCP 饿死攻击 | 限制端口单位时间内的 DHCP 请求数量 |
| 防 DHCP 仿冒 | 验证 DHCP 报文中的 MAC 地址 |
二、DHCP Snooping 的工作原理
2.1 Trust 端口与 Untrust 端口
交换机(DHCP Snooping 开启) Trust 端口 ─── 上联 DHCP 服务器 Untrust 端口 ── 下联终端 PC
| 端口角色 | 接收行为 | 发送行为 |
|---|---|---|
| Trust | 允许接收任何 DHCP 报文 | 正常发送所有 DHCP 报文 |
| Untrust | 丢弃 DHCP Offer/ACK/NAK | 正常转发 DHCP Discover/Request |
关键规则:只有 Trust 端口的 DHCP 服务器报文才可信。所有非 Trust 端口的 Offer/ACK 一律丢弃。
2.2 DHCP Binding Table 的建立
DHCP 正常交互流程:
PC ──── DISCOVER ────► 交换机 ────► DHCP Server
◄──── OFFER ────── 交换机 ◄──── 合法 DHCP Server
──── REQUEST ────► 交换机 ────► DHCP Server
◄──── ACK ──────── 交换机 ◄──── 合法 DHCP Server
│
DHCP Snooping 记录:
IP=192.168.1.10, MAC=xxxx, VLAN=10, Port=GE0/0/1
当 DHCP ACK 通过 Trust 端口收到后,交换机在 DHCP Binding Table 中记录一条绑定信息。
2.3 绑定表的使用
后续 IP 通信时,交换机可以基于绑定表做 IP Source Guard 检查(见第110篇)。
三、华为交换机配置
3.1 基础配置
# ===== 全局启用 DHCP Snooping =====
dhcp enable
dhcp snooping enable
# ===== 在 VLAN 中启用 DHCP Snooping =====
vlan 10
dhcp snooping enable
# ===== 配置 Trust 端口(连接合法 DHCP 服务器或上联 DHCP Relay)=====
interface GigabitEthernet0/0/24
dhcp snooping trusted
# ===== 其余端口默认为 Untrust(无需配置)=====
3.2 防 DHCP 饿死攻击
攻击者发送大量 DHCP Discover 报文,源 MAC 不断变化,耗尽 DHCP 地址池:
# 限制端口每秒最多处理 10 个 DHCP 报文
interface GigabitEthernet0/0/1
dhcp snooping check dhcp-rate enable
dhcp snooping dhcp-rate 10
# 超过限制的报文被丢弃,端口可能 Error-Disable
3.3 防 MAC 地址仿冒
攻击者发送 DHCP Request 时篡改 Chaddr(客户端 MAC 字段):
# 校验 DHCP 报文中的 Chaddr 字段是否与帧源 MAC 一致
interface GigabitEthernet0/0/1
dhcp snooping check dhcp-chaddr enable
3.4 查看绑定表
# 查看 DHCP Snooping 绑定表
display dhcp snooping binding
-----------------------------------------------
MAC地址 IP地址 VLAN 接口 Lease(s)
xxxx-xxxx-xxxx 192.168.1.10 10 GE0/0/1 86300
yyyy-yyyy-yyyy 192.168.1.11 10 GE0/0/2 86200
四、实战案例
4.1 案例:某企业突然大面积断网
现象:上午 10 点,研发部 100 多台电脑突然无法上网。
排查:
1. 检查 DHCP 服务器日志 → 发现大量 IP 地址冲突警告
2. 在接入交换机上执行 display dhcp snooping → 发现 DHCP Snooping 未启用
3. 检查 ARP 表 → 出现大量 192.168.1.xxx 指向异常的 MAC 地址
4. 定位到某工位的 PC 私接了无线路由器,LAN 口接到了企业网络
根因:私设无线路由器自带的 DHCP 服务器分配了错误的网段。
解决方案: 1. 在所有接入交换机启用 DHCP Snooping 2. 将上联端口配置为 Trust,下行端口保持 Untrust 3. 切断私设路由器后网络恢复
4.2 案例:DHCP 地址池快速耗尽
现象:DHCP 地址池 254 个地址在 10 分钟内被耗光,大量用户获取不到 IP。
排查:
1. display dhcp snooping binding → 发现大量 MAC 地址伪造的记录
2. 同一端口下连续出现很多不同的 MAC 地址
3. display dhcp snooping statistics → 该端口 DHCP 请求量异常高
根因:攻击者运行了 DHCP 饿死工具,发送源 MAC 不断变化的 DHCP Discover。
解决方案:
interface GigabitEthernet0/0/5
dhcp snooping check dhcp-rate enable
dhcp snooping dhcp-rate 5
五、DHCP Snooping 与 DHCP Relay 的配合
在 DHCP Relay 场景(DHCP 服务器与客户端不在同一网段)中,DHCP Snooping 需要额外处理:
# 在 DHCP Relay 设备上
interface Vlanif10
dhcp select relay
dhcp relay server-ip 192.168.200.100
# 同样需要启用 DHCP Snooping
vlan 10
dhcp snooping enable
注意:在 Relay 场景中,DHCP 报文包含 Relay Agent Information Option(Option 82),DHCP Snooping 可以利用 Option 82 精确记录客户端信息。
六、Option 82 与 DHCP Snooping
6.1 Option 82 的作用
Option 82(Relay Agent Information Option)在 DHCP 报文中插入交换机端口和 VLAN 信息:
DHCP Discover → 交换机插入 Option 82(端口/VLAN)→ DHCP Server
DHCP Server 根据 Option 82 分配特定 IP
6.2 配置 Option 82
# 启用 Option 82 插入
interface GigabitEthernet0/0/1
dhcp snooping information enable
# 可选:格式化 Option 82 内容
dhcp snooping information format standard
七、DHCP Snooping 的局限
| 局限 | 说明 |
|---|---|
| 只检测 DHCP 服务器报文 | 不防其他类型的攻击(如 ARP 欺骗) |
| 需要所有交换机都启用 | 在网络中单一交换机启用效果有限 |
| 增加 CPU 负担 | 尤其是在大量 DHCP 请求时 |
| 不适用于静态 IP | 静态 IP 用户不在绑定表中,需配合 IP Source Guard |
八、总结
| 知识点 | 核心要点 |
|---|---|
| DHCP Snooping 本质 | 交换机上过滤 DHCP 报文,防止非法 DHCP 服务器 |
| Trust/Untrust | Trust 端口接收 DHCP Offer,Untrust 丢弃 |
| Binding Table | 记录 IP+MAC+VLAN+端口的合法绑定关系 |
| 防饿死 | 限制端口 DHCP 报文速率 |
| Option 82 | 插入端口/VLAN 信息,配合 DHCP 精细分配 |
| 最佳实践 | 接入交换机必须启用,上联口配置 Trust |
九、思考
- DHCP Snooping 是如何防止私设 DHCP 服务器的?
- Trust 端口和 Untrust 端口的区别是什么?
- 什么是 DHCP 饿死攻击?如何防护?
- DHCP Snooping Binding Table 记录了哪些信息?
- 为什么在 DHCP Relay 场景中也需要启用 DHCP Snooping?
下篇预告:第110篇《IP Source Guard——防 IP 地址欺骗》——讲解如何利用 DHCP Snooping 的绑定表对 IP 报文进行过滤,防止用户私自篡改 IP 地址。