
DHCP 租约过程深度排错从4步握手到T1/T2续租的3类故障定位1. 当DISCOVER广播无人响应时网络工程师最常遇到的噩梦之一客户端发出DHCP DISCOVER广播后陷入漫长的等待。此时建议按照以下优先级进行排查物理层检查清单使用tcpdump -i eth0 port 67 or port 68确认是否收到DISCOVER报文验证交换机端口VLAN配置是否匹配服务器所在VLAN检查是否存在网络环路导致广播风暴服务器端常见陷阱# 检查dhcpd服务状态Linux systemctl status isc-dhcp-server # 验证监听端口 netstat -ulnp | grep dhcp注意Windows DHCP服务默认会绑定所有接口而ISC-DHCP需要显式指定监听接口防火墙策略要点UDP 67/68端口需开放双向通信确认未启用DHCP Snooping等安全特性误拦截合法请求在Cisco设备上检查ip dhcp relay information trusted配置关键提示当客户端获取169.254.x.x地址时表明DHCP流程完全失败需从底层网络连通性开始排查2. OFFER后的沉默为何没有ACK当Wireshark抓包显示服务器发出OFFER但未收到客户端REQUEST时需要关注以下特殊场景跨VLAN通信问题现象可能原因解决方案客户端收到多个OFFER存在多个DHCP服务器配置DHCP Snooping或删除冗余服务器OFFER报文未到达客户端中继代理配置错误在中继设备上添加ip helper-address客户端配置验证# Linux客户端强制释放现有租约 dhclient -r eth0 dhclient eth0 # Windows客户端重置TCP/IP栈 netsh int ip reset reset.log报文冲突分析DHCP OFFER报文关键字段 - Your IP (yiaddr): 提供的IP地址 - Server Identifier: 必须与后续ACK一致 - Option 54: 服务器标识符3. T1/T2续租失败的隐蔽陷阱租约过半T1和87.5%T2时的续租失败往往最难诊断因其涉及时间敏感操作租约时间配置对照表服务器类型配置文件位置关键参数ISC-DHCP/etc/dhcp/dhcpd.confdefault-lease-time/max-lease-timeWindows ServerDHCP管理控制台租用期限华为交换机dhcp enablelease day hour minute排错操作指南在客户端抓取续租请求tcpdump -i eth0 -w dhcp-renew.pcap port 67 or port 68检查服务器日志# ISC-DHCP日志 tail -f /var/log/syslog | grep dhcpd # Windows事件日志 事件ID 10(DHCPACK), 11(DHCPNACK)验证时间同步# 检查NTP同步状态 ntpq -p典型故障模式分析当T1时刻续租失败但T2成功通常为服务器临时过载两次续租均失败可能IP地址池耗尽或策略限制客户端持续使用过期IP检查时钟偏差超过租期50%4. 高级诊断工具链实战Wireshark过滤技巧dhcp.op 1 # DISCOVER dhcp.option.dhcp 2 # OFFER dhcp.option.requested_ip 192.168.1.100DHCP服务器健康检查# 检查地址池利用率ISC-DHCP dhcpd-pools -c /etc/dhcp/dhcpd.conf -f j | jq .subnets[].utilization # Windows性能计数器 \DHCP Server\Packets Received/secPython模拟客户端测试from scapy.all import * conf.checkIPaddr False dhcp_discover Ether(dstff:ff:ff:ff:ff:ff)/IP(src0.0.0.0,dst255.255.255.255)/UDP(sport68,dport67)/BOOTP(chaddrmac)/DHCP(options[(message-type,discover),end]) sendp(dhcp_discover, ifaceeth0)5. 厂商特定问题处理Cisco设备注意事项启用service dhcp全局配置中继场景需要ip dhcp relay information option使用debug dhcp detail时注意性能影响Windows Server特有故障作用域必须激活才能分配地址地址冲突检测可能导致延迟租约数据库损坏时运行jetpack dhcp.mdb temp.mdb云环境特殊考量AWS VPC需要启用DHCP选项集OpenStack中确保neutron-dhcp-agent正常运行Kubernetes网络插件可能接管DHCP功能