第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

九、思考

  1. DHCP Snooping 是如何防止私设 DHCP 服务器的?
  2. Trust 端口和 Untrust 端口的区别是什么?
  3. 什么是 DHCP 饿死攻击?如何防护?
  4. DHCP Snooping Binding Table 记录了哪些信息?
  5. 为什么在 DHCP Relay 场景中也需要启用 DHCP Snooping?

下篇预告:第110篇《IP Source Guard——防 IP 地址欺骗》——讲解如何利用 DHCP Snooping 的绑定表对 IP 报文进行过滤,防止用户私自篡改 IP 地址。