3. DHCP 参数故障:Option 67/66/17 配置错误、IP 地址池耗尽、DHCP 中继代理失效

DHCP 这玩意儿,说白了就是网络启动的「引路人」。PXE 客户端一开机,啥也不知道,全靠 DHCP 告诉它:「你去哪拿系统文件、你的 IP 是多少、服务器在哪儿。」

但引路人要是带错了路,或者干脆罢工了,那客户端就只能卡在启动界面干瞪眼。这一章,我带你把这几个最常见的 DHCP 坑挨个踩一遍,顺便告诉你怎么填。

3.1 Option 67/66/17:三个最容易配错的参数

这三个 Option 是 PXE 启动的核心。我见过太多人把 66 和 67 搞混,或者漏了 17,结果折腾一整天。

3.1.1 Option 66(Next-Server)

告诉客户端:「去这个 IP 找 TFTP 服务器。」

  • 常见错误:填成了 DHCP 服务器自己的 IP,或者写了个不存在的地址。
  • 我的经验:有一次客户报修,说新部署的 50 台机器全起不来。我一查,Option 66 写的是网关地址。网关哪有 TFTP 服务?改过来秒好。

3.1.2 Option 67(Bootfile-Name)

告诉客户端:「去 TFTP 服务器上找这个文件。」

  • 常见错误:路径写错、文件名大小写不对、或者忘了加路径前缀。
  • 避坑指南:我曾经遇到一个案例,文件名写的是 pxelinux.0,但实际文件是 pxelinux.0.bak。就少了个后缀,排查了俩小时。

3.1.3 Option 17(Root-Path)

告诉客户端:「你的根文件系统挂载点在哪。」常用于无盘工作站或 iSCSI 启动。

  • 常见错误:格式不对,或者路径指向了一个不存在的 NFS 导出。
  • 注意:有些老旧的 PXE 固件根本不认 Option 17,你得用别的办法传。
核心原则:Option 66 是 IP 地址,Option 67 是文件名,Option 17 是路径。三者各司其职,别串了。

3.2 IP 地址池耗尽:无声的杀手

这个故障最隐蔽。客户端拿到 IP 了吗?拿到了。能启动吗?不能。为什么?因为 DHCP 池子里没地址了,但客户端可能拿到了一个「过期」的租约,或者干脆被拒绝。

3.2.1 症状

  • 部分客户端能启动,部分不能。
  • 能启动的机器,过一会儿也挂了。
  • DHCP 服务器日志里全是 No free leases 或 Address exhausted。

3.2.2 排查方法

  1. 登录 DHCP 服务器,查看当前租约数量。
  2. 对比地址池大小和在线设备数。
  3. 检查租约时间(Lease Time)是否设置得太长。
我的习惯:PXE 启动环境的租约时间我一般设 10-15 分钟。够用就行,别设成 24 小时。否则机器重启后,旧租约还在,新机器就分不到地址了。

3.2.3 解决方案

方案 适用场景 操作
扩大地址池 子网内还有空闲 IP 修改 DHCP 作用域范围
缩短租约时间 临时部署,机器频繁重启 将 Lease Time 改为 5-10 分钟
清理过期租约 地址池被僵尸租约占满 强制回收或重启 DHCP 服务
增加 DHCP 服务器 大规模部署,单点瓶颈 部署多台 DHCP 做负载分担

3.3 DHCP 中继代理失效:跨网段启动的噩梦

你想想看,如果客户端在 VLAN 10,DHCP 服务器在 VLAN 100,中间没有中继代理,那广播包根本过不去。客户端收不到回应,自然就启动失败了。

3.3.1 中继代理的工作原理

说白了,就是交换机或路由器上配一个 ip helper-address,把客户端的 DHCP 广播包转成单播,发给远端的 DHCP 服务器。

3.3.2 常见故障点

  • 中继没配:接口下忘了加 ip helper-address。
  • 配错了地址:指向了错误的 DHCP 服务器 IP。
  • ACL 拦截:防火墙或 ACL 把 DHCP 的 UDP 67/68 端口给拦了。
  • 中继设备性能不足:大量客户端同时请求,中继设备处理不过来,丢包。
我曾经踩过的坑:有一次在 Cisco 交换机上配了 ip helper-address,但忘了在全局模式下开启 ip dhcp relay。结果中继代理根本没生效,客户端全卡在获取 IP 那一步。查了半小时日志才发现。

3.3.3 验证中继是否正常

  1. 在客户端抓包,看有没有 DHCP Offer 回来。
  2. 在中继设备上查看 show ip dhcp relay 统计信息。
  3. 在 DHCP 服务器上查看是否有来自中继网段的请求。

3.4 知识体系:DHCP 参数故障全景图

下面这张图,我把本章的核心逻辑串起来了。你可以把它当成排查时的路线图。

DHCP 参数故障排查全景图 DHCP 参数故障 Option 67/66/17 错误 IP 地址池耗尽 DHCP 中继失效 常见错误 • Option 66 指向错误 IP • Option 67 文件名/路径错误 • Option 17 格式不对 排查要点 • 检查租约数量 • 对比池大小与设备数 • 缩短租约时间 常见原因 • 未配 ip helper-address • ACL 拦截 UDP 67/68 • 中继设备性能瓶颈 排查顺序:先看 Option → 再看地址池 → 最后查中继

3.5 实战排查步骤

遇到 DHCP 相关的 PXE 启动故障,我一般按这个顺序来:

  1. 确认客户端能否获取 IP:在客户端抓包,看 DHCP Discover/Offer/Request/Ack 四步握手是否完整。
  2. 检查 Option 参数:在 DHCP 服务器上查看分配给客户端的 Option 66/67/17 值是否正确。
  3. 验证地址池状态:登录 DHCP 服务器,查看剩余可用地址数。
  4. 测试中继链路:在中继设备上 ping DHCP 服务器,确认网络连通性。
  5. 查看日志:DHCP 服务器日志、中继设备日志、客户端抓包,三管齐下。
一个小技巧:如果你不确定 Option 参数对不对,可以在 DHCP 服务器上手动给一台客户端分配固定地址,然后指定正确的 Option 值。如果这台机器能启动,那问题就出在地址池或中继上。

3.6 总结

DHCP 参数故障,说白了就是三个坑:参数配错、地址不够、中继不通。每个坑都有对应的排查方法和解决手段。你只要按顺序来,别跳步,大部分问题都能在 10 分钟内定位。

嗯,这一章就到这儿。记住那张全景图,下次遇到 DHCP 故障,拿出来对照着查,效率翻倍。