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
中继就像“翻译官”,把 PC 的“广播呐喊”转为“单播电话”打给服务器。
eNSP/EVE-NG 拓扑
(此处待补充真实模拟器拓扑截图)
1. 原理:广播变单播
DHCP 中继代理(通常是 PC 的网关路由器或三层交换机)扮演了“传话筒”的角色:
- 接收:网关收到 PC 的广播 Discover 包。
- 转换:网关将目的 IP 修改为 DHCP 服务器的单播 IP,源 IP 修改为网关接口 IP (Giaddr)。
- 转发:以单播形式发送给 DHCP 服务器。
2. 核心问题:服务器如何识别?
你可能会问:服务器远在千里之外,怎么知道要给这个 PC 分配哪个网段的 IP?
答案在 Giaddr 字段。
- PC 发出的包,源 IP 是
0.0.0.0。 - 中继网关收到后,会把自己的接口 IP(比如
192.168.10.1)填入 DHCP 报文的 Giaddr (Gateway IP Address) 字段。 - 服务器收到报文,检查 Giaddr:
- 如果 Giaddr 是
0.0.0.0-> 说明是直连,分自己接口网段。 - 如果 Giaddr 是
192.168.10.1-> 说明是中继过来的。服务器查找配置,找到属于192.168.10.0/24的地址池,从中拿一个 IP 分配。
- 如果 Giaddr 是
具体的配置命令,请参考下一节 3.4 DHCP 配置实战 (Config)。
3. 常见坑点
- 路由不可达:这是最容易犯的错。中继把包送到了服务器,但服务器不知道怎么把 Offer 包回给 PC 所在的网段。必须配置静态路由或运行动态路由协议。
- Option 82:某些交换机开启中继后会默认插入 Option 82 选项,如果服务器不支持或未配置信任,可能会丢弃报文。