1. 故障排除思路
DHCP 故障排除遵循从底向上的原则:物理层 → 网络层 → 应用层。
| 检查项 | 命令/方法 | 关注点 |
|---|---|---|
| DHCP 服务状态 | Get-Service DHCPServer | 是否 Running |
| 作用域状态 | DHCP 管理器 | 是否激活(绿色) |
| 地址池余量 | Get-DhcpServerv4ScopeStatistics | %InUse 是否接近 100% |
| 客户端租约 | ipconfig /all | DHCP 是否启用 |
| 防火墙 | Get-NetFirewallRule | UDP 67/68 是否放行 |
| 事件日志 | 事件查看器 → DHCP-Server | 错误和警告 |
2. 客户端获取不到 IP(169.254.x.x)
169.254.x.x 是 Windows 的 APIPA 地址,表示 DHCP 获取失败。
排查步骤
1
在客户端运行 ipconfig /release 然后 ipconfig /renew
2
检查网线/无线连接是否正常
3
在 DHCP 服务器上检查服务是否运行:服务器管理器 → 角色 → DHCP
4
检查作用域是否激活(绿色图标)
5
检查地址池是否有余量:展开作用域 → 地址池
6
如果跨网段,检查中继代理配置
7
检查服务器防火墙是否放行 UDP 67/68
PowerShell - 诊断无 IP
# 1. 检查 DHCP 服务状态
Get-Service DHCPServer
# 2. 检查作用域状态
Get-DhcpServerv4Scope -ComputerName "dc1.iehang.cn" |
Select-Object ScopeId, Name, State, @{N="Free";E={$_.Free -as [int]}}, @{N="Total";E={$_.AddressesTotal -as [int]}}, @{N="Usage%";E={if($_.AddressesTotal -gt 0){[Math]::Round(($_.AddressesInUse/$_.AddressesTotal)*100,1)}else{0}}}
# 3. 检查租约数量
(Get-DhcpServerv4Lease -ComputerName "dc1.iehang.cn" -ScopeId 192.168.10.0).Count
3. 获取到错误的 IP
客户端获取到的 IP 不在预期网段,可能原因:
- 网络中存在 Rogue DHCP(未授权服务器在响应)
- 作用域选项错误(网关或 DNS 配错了)
- 中继指向错误的服务器
PowerShell - 检测 Rogue DHCP
# 查看授权的 DHCP 服务器
Get-DhcpServerInDC
# 查看 DHCP 事件日志中的警告
Get-WinEvent -LogName "Dhcp-Server-Operational" -MaxEvents 20 |
Where-Object {$_.LevelDisplayName -eq "Warning"} |
Format-Table TimeCreated, Id, Message -Wrap
4. IP 地址冲突
DHCP 服务器在分配地址前会检测冲突,但仍可能出现冲突:
PowerShell - 冲突检测
# 查看 DHCP 事件日志中的冲突记录
Get-WinEvent -FilterHashtable @{LogName="Dhcp-Server-Operational"; ID=15} -MaxEvents 10 |
Format-Table TimeCreated, Message -Wrap
# 查看所有冲突的 IP 和 MAC
Get-DhcpServerv4AuditLog -ComputerName "dc1.iehang.cn" | Where-Object {$_.EventID -eq 15}
5. DHCP 服务无法启动
1
打开服务管理器(services.msc)→ 找到 DHCP Server
2
检查启动类型是否为「自动」
3
查看事件查看器 → Windows 日志 → 系统,筛选 DHCP 相关错误
PowerShell - 服务诊断
# 尝试启动服务
Start-Service DHCPServer
# 查看详细错误
Get-WinEvent -LogName "System" -MaxEvents 20 |
Where-Object {$_.ProviderName -match "DhcpServer"} |
Format-Table TimeCreated, Id, LevelDisplayName, Message -Wrap
# 检查服务启动类型
Get-Service DHCPServer | Select-Object Name, Status, StartType
6. PowerShell 诊断工具箱
PowerShell - 综合诊断脚本
# DHCP 综合诊断
Write-Host "=== DHCP 诊断报告 ===" -ForegroundColor Cyan
# 服务状态
$svc = Get-Service DHCPServer
Write-Host "服务状态: $($svc.Status)"
# 作用域统计
Get-DhcpServerv4ScopeStatistics -ComputerName "dc1.iehang.cn" |
Format-Table ScopeId, @{N="Usage%";E={[Math]::Round(($_.PercentageInUse),1)}}
# 检查租约分布
Get-DhcpServerv4Lease -ComputerName "dc1.iehang.cn" -ScopeId 192.168.10.0 |
Sort-Object IPAddress |
Format-Table IPAddress, ClientId, LeaseExpiryTime -AutoSize
7. 常见问题
Q1:ipconfig /renew 报错"找不到媒体"?
网卡未连接。检查网线、交换机端口指示灯。无线网络确认已连接 Wi-Fi。
Q2:DHCP 管理器打不开?
以管理员身份运行。检查 DHCP 服务是否运行。重建 DHCP 数据库:netsh dhcp server delete database 后重启服务。
Q3:数据库损坏怎么办?
停止 DHCP 服务 → 备份 %windir%\System32\dhcp\dhcp.mdb → 使用 jetpack 工具修复数据库。