Skip to content

3.4 DHCP 中继 (Relay)

在前面的实验中,PC 和 DHCP 服务器都在同一个网段(同一个广播域)。 但在中大型企业中,为了便于管理,通常会把所有的 DHCP 服务器集中在机房,而不同楼层、不同部门的 PC 分布在不同的网段。

问题来了: PC 发出的 DHCP Discover 是广播包,而路由器(三层设备)默认隔离广播。 这意味着,PC 的呼喊,远在机房的 DHCP 服务器根本听不到!

这就需要 DHCP 中继 (DHCP Relay) 出马了。

🌉 DHCP 中继 (Relay) 工作场景 (模拟)
🗄️
DHCP Server
10.0.0.1
🛰️
中继 (网关)
192.168.10.1
💻
PC (Client)
VLAN 10
广播 (Discover)单播 (Relay)

中继就像“翻译官”,把 PC 的“广播呐喊”转为“单播电话”打给服务器。

eNSP/EVE-NG 拓扑

(此处待补充真实模拟器拓扑截图)

1. 原理:广播变单播

DHCP 中继代理(通常是 PC 的网关路由器或三层交换机)扮演了“传话筒”的角色:

  1. 接收:网关收到 PC 的广播 Discover 包。
  2. 转换:网关将目的 IP 修改为 DHCP 服务器的单播 IP,源 IP 修改为网关接口 IP (Giaddr)。
  3. 转发:以单播形式发送给 DHCP 服务器。

2. 核心问题:服务器如何识别?

你可能会问:服务器远在千里之外,怎么知道要给这个 PC 分配哪个网段的 IP?

答案在 Giaddr 字段。

  1. PC 发出的包,源 IP 是 0.0.0.0
  2. 中继网关收到后,会把自己的接口 IP(比如 192.168.10.1)填入 DHCP 报文的 Giaddr (Gateway IP Address) 字段。
  3. 服务器收到报文,检查 Giaddr:
    • 如果 Giaddr 是 0.0.0.0 -> 说明是直连,分自己接口网段。
    • 如果 Giaddr 是 192.168.10.1 -> 说明是中继过来的。服务器查找配置,找到属于 192.168.10.0/24 的地址池,从中拿一个 IP 分配。

具体的配置命令,请参考下一节 3.4 DHCP 配置实战 (Config)

3. 常见坑点

  1. 路由不可达:这是最容易犯的错。中继把包送到了服务器,但服务器不知道怎么把 Offer 包回给 PC 所在的网段。必须配置静态路由或运行动态路由协议。
  2. Option 82:某些交换机开启中继后会默认插入 Option 82 选项,如果服务器不支持或未配置信任,可能会丢弃报文。