排查DHCP(动态主机配置协议)故障通常遵循一个由物理层到应用层的排查逻辑。以下是系统化的排查步骤和常见故障点:
第一阶段:物理链路与基础连接(最基础但最容易被忽视)
在怀疑DHCP协议之前,先确认设备能不能通信。
- 检查物理连接:
- 网线/光纤:确保网线已插好,端口指示灯(Link Light)是否亮起或闪烁。
- Wi-Fi:确认设备是否已连接到正确的SSID,信号强度是否足够。
- 检查交换机/路由器状态:
- 确认上游交换机或路由器的端口是否处于
Up 状态。
- 检查是否有环路或广播风暴导致网络瘫痪。
第二阶段:客户端排查(确认是谁的问题)
首先判断是单个设备有问题,还是所有设备都有问题。
1. 检查客户端IP配置
- Windows:
- 打开CMD,输入
ipconfig /all。
- 查看是否获取到了IP。如果IP是
169.254.x.x (APIPA地址),说明DHCP请求完全失败。
- 查看“DHCP服务器”一栏,确认显示的服务器IP是否是预期的DHCP服务器。
- Linux/macOS:
- 使用
ifconfig 或 ip addr 查看IP。
- 使用
cat /var/lib/dhcp/dhclient.leases (路径可能不同) 查看租约信息。
2. 尝试释放和续约
- Windows:
ipconfig /release -> ipconfig /renew
- Linux:
dhclient -r (释放) -> dhclient (获取)
- 观察过程:如果卡在
DHCPREQUEST 或者一直显示 正在获取IP,说明客户端发出了请求但没收到回复。
3. 检查客户端防火墙/网卡驱动
- 临时关闭客户端防火墙,看是否拦截了DHCP流量(虽然少见,但有可能)。
- 检查网卡驱动是否过旧或损坏。
第三阶段:网络层排查(VLAN与中继)
如果客户端没问题,问题通常出在网络设备上。
1. 检查VLAN配置(非常常见)
- 确认客户端所在的接入端口VLAN配置是否正确。
- 场景:如果客户端在VLAN 10,但DHCP服务器在VLAN 20,或者接入端口被错误地划分到了没有DHCP服务的VLAN,客户端将无法获取IP。
2. 检查DHCP中继(DHCP Relay / IP Helper)
如果DHCP服务器和客户端不在同一个网段,必须在中间的三层交换机或路由器上配置DHCP中继。
3. 检查ACL(访问控制列表)
- 检查交换机或路由器上是否有ACL(访问控制列表)阻止了UDP端口 67(服务器)和 68(客户端)的流量。
第四阶段:服务器端排查(DHCP服务本身)
如果网络连通性没问题,问题出在服务器上。
1. 服务状态
- Windows Server: 打开“服务”(services.msc),检查 DHCP Server 服务是否正在运行。
- Linux (ISC DHCP): 检查
systemctl status isc-dhcp-server 或 service isc-dhcp-server status。
2. 地址池(Scope)耗尽
这是最常见的故障原因。
- 现象:老设备能上网,新设备无法获取IP。
- 排查:登录DHCP服务器,查看地址池的利用率。如果显示100%或剩余为0,说明IP被耗尽了。
- 解决:缩小租期(Lease Time),或者扩大地址池范围。
3. 作用域未激活或配置错误
- 检查DHCP作用域(Scope)是否处于**激活(Active)**状态。
- 检查子网掩码(Subnet Mask)和网关(Router Option 003)配置是否正确。
- 检查排除范围(Exclusion Range)是否设置过大,导致可用IP太少。
4. IP冲突
- 如果客户端获取到IP但无法上网,可能是IP冲突。
- 检查DHCP服务器是否启用了“冲突检测尝试(Conflict Detection Attempts)”。
- 检查网络中是否有设备手动配置了静态IP,且该IP正好在DHCP地址池范围内。
第五阶段:抓包分析(终极手段)
如果以上都看不出问题,需要使用抓包工具(如Wireshark)进行深度分析。
- 在客户端抓包:
- 过滤条件:
bootp 或 udp.port == 67 or udp.port == 68。
- 正常流程:Discover -> Offer -> Request -> ACK。
- 故障判断:
- 只有 Discover 没有 Offer:服务器没收到请求,或者服务器没响应(网络阻断或服务器故障)。
- 有 Offer 但没有 ACK:服务器拒绝了请求(可能是服务器认为该IP已分配或冲突)。
- 在服务器抓包:
- 确认是否收到了客户端的 Discover 包。
- 如果没收到,说明包在网络中丢失(路由/VLAN问题)。
快速排查流程图(总结)
| 步骤 |
检查点 |
命令/操作 |
| 1. 物理层 |
网线、端口灯、Wi-Fi连接 |
看指示灯 |
| 2. 客户端 |
IP是否为169.254.x.x |
ipconfig |
| 3. 单点/全局 |
是所有设备断网还是一台? |
换设备测试 |
| 4. 网络层 |
VLAN、DHCP中继(Helper) |
show ip helper-address |
| 5. 服务器端 |
服务状态、地址池是否满 |
检查DHCP控制台 |
| 6. 深度分析 |
抓包看DHCP握手过程 |
Wireshark (bootp) |
常见故障案例
- 案例1:新部署的AP下的用户无法获取IP。
- 原因:交换机连接AP的端口没有配置成Trunk,或者没有放通用户VLAN。
- 案例2:办公室只有几台电脑无法上网,其他正常。
- 原因:DHCP地址池耗尽,这几台电脑是最后尝试连接的。
- 案例3:跨网段无法获取IP。
- 原因:三层交换机上忘了配置
ip helper-address。