Windows DHCP 服务器 运维手册

1. 系统概述

  • 产品名称:Windows Server DHCP(Dynamic Host Configuration Protocol)角色
  • 操作系统版本:Windows Server 2016 / 2019 / 2022(请确认)
  • 部署位置:数据中心 / IP 地址:________________(请填写)
  • 主要功能

    • IP 地址自动分配与管理
    • 子网(作用域)管理
    • DHCP 选项配置(DNS、网关、WINS 等)
    • DHCP 故障转移(高可用)
    • DHCP 中继代理
    • IP 地址租约管理与保留
  • 服务对象:全网所有使用 DHCP 获取 IP 地址的客户端(办公 PC、瘦客户机、移动设备、IP 电话等)

2. 系统架构

2.1 组件组成

组件说明部署方式
DHCP 主服务器主用 DHCP 服务器,负责 IP 地址分配物理机/虚拟机
DHCP 辅助服务器DHCP 故障转移的备用节点物理机/虚拟机
DHCP 数据库存储租约和配置信息(Jet 数据库)本地或共享存储
DHCP 中继代理跨子网转发 DHCP 请求三层交换机或路由器
NAP(可选)网络访问保护组件可选

2.2 网络拓扑

[DHCP 客户端(PC/终端)]
        ↓ (DHCP Discover/Request)
[接入层交换机(DHCP Snooping 启用)]
        ↓ (DHCP Relay 或广播转发)
[汇聚/核心层交换机/路由器]
        ↓ (DHCP Relay Agent 跨子网转发)
[DHCP 主服务器] ←──故障转移──→ [DHCP 辅助服务器]
        ↓
   [AD + DNS 服务器](选项配置项)

DHCP 通信流程(DORA)

1. DHCP Discover(客户端广播寻找 DHCP 服务器)
2. DHCP Offer(DHCP 服务器提供 IP 地址)
3. DHCP Request(客户端请求使用该 IP)
4. DHCP Acknowledge(DHCP 服务器确认分配)

2.3 依赖关系

  • AD/DNS:DHCP 选项通常配置 DNS 服务器地址
  • 网络设备:三层交换机/路由器需配置 DHCP 中继(如有跨子网需求)
  • 网络基础架构:DHCP 依赖广播通信,需确保 VLAN 内广播可达
  • NTP:租约时间依赖于准确的时间

3. 日常运维操作

3.1 启动与停止

启动顺序

  1. 确保网络基础架构正常运行
  2. 启动 DHCP 服务器
  3. 确认 DHCP 服务已启动且正在监听
  4. 检查作用域状态(是否已激活)

停止顺序

  1. 先停用相关作用域(停止新租约发放)
  2. 停止 DHCP 服务
  3. 关闭服务器

DHCP 服务管理

# 启动/停止/重启 DHCP 服务
net start dhcpserver
net stop dhcpserver
net restart dhcpserver

# 使用 PowerShell
Start-Service dhcpserver
Stop-Service dhcpserver
Restart-Service dhcpserver

# 查看服务状态
Get-Service dhcpserver

3.2 服务状态检查

基本状态检查

# 检查 DHCP 服务进程
Get-Service dhcpserver
# 预期输出:Running

# 检查 DHCP 服务绑定的网卡和监听端口
Get-DhcpServerInDc
netsh dhcp server show bindings

# 查看 DHCP 服务器统计信息
Get-DhcpServerStatistics

# 检查作用域状态
Get-DhcpServerv4Scope | Format-Table ScopeId, Name, State, SubnetMask

详细统计信息

# 查看所有作用域统计
Get-DhcpServerv4ScopeStatistics | Format-Table ScopeId, AddressesInUse, AddressesFree, PercentageInUse

# 查看特定作用域统计
Get-DhcpServerv4ScopeStatistics -ScopeId 192.168.1.0

# 查看 DHCP 服务器全局统计
netsh dhcp server show statistics
# 总地址数、已用地址数、可用地址数、冲突地址数

DHCP 数据库检查

# 检查 DHCP 数据库一致性
netsh dhcp server reconcile

# 检查特定作用域的一致性
netsh dhcp server scope 192.168.1.0 reconcile

3.3 日志查看

关键日志位置

日志/文件路径说明
DHCP 审计日志%SystemRoot%\System32\DHCP\DHCP 操作日志(默认每日一个文件)
事件查看器 - DHCPEvent Viewer → Applications and Services Logs → Microsoft → Windows → DHCP-ServerDHCP 服务事件
事件查看器 - 系统Event Viewer → Windows Logs → System系统相关事件

DHCP 审计日志说明

# 审计日志位置
# %SystemRoot%\System32\DHCP\DhcpSrvLog-<日期>.log

# 日志文件命名:DhcpSrvLog-周一.log, DhcpSrvLog-周二.log ... (英文系统)
# 或 DhcpSrvLog-YYYY-MM-DD.log

查看审计日志

# 查看当日 DHCP 日志
Get-Content "C:\Windows\System32\DHCP\DhcpSrvLog-$(Get-Date -Format 'yyyy-MM-dd').log" -Tail 50

# 查看最新的 DHCP 分配记录(ID 10=分配, 11=续租, 12=释放)
Select-String -Path "C:\Windows\System32\DHCP\DhcpSrvLog-*.log" -Pattern ",10," | Select -First 20

# 查看 DHCP 错误(ID 51=错误)
Select-String -Path "C:\Windows\System32\DHCP\DhcpSrvLog-*.log" -Pattern ",51," 

# 查看 DHCP 事件日志
Get-WinEvent -LogName "Microsoft-Windows-DHCP-Server/Operational" -MaxEvents 50

日志格式说明(CSV 格式):

# 字段:日期,时间,描述,IP地址,主机名,MAC地址,租约时长(秒),...
# ID 代码:00=启动, 10=新租约, 11=续租, 12=释放, 13=拒绝, 50=NACK, 51=错误

3.4 性能监控

关键监控指标

指标说明告警阈值
地址池使用率已分配 IP 地址占总量百分比> 80%(需扩容)
可用地址数剩余可分配 IP 地址数< 10
DHCP 服务状态DHCP 服务是否运行非 Running 即告警
租约请求速率每秒新租约请求数异常突增
拒绝请求数 (NACK)被拒绝的 DHCP 请求持续 > 0
故障转移状态主备同步状态非正常即告警

监控命令

# 查看地址池利用率
Get-DhcpServerv4ScopeStatistics | Format-Table ScopeId, AddressesInUse, AddressesFree, PercentageInUse

# 检查作用域地址耗尽风险
Get-DhcpServerv4ScopeStatistics | Where-Object { $_.PercentageInUse -gt 80 }

# 检查故障转移状态
Get-DhcpServerv4Failover

# 检查 DHCP 服务器性能计数器
Get-Counter "\DHCP Server\Packets/sec" -SampleInterval 5 -MaxSamples 3

# 查看最近 24 小时的租约分配统计
Get-Date | ForEach-Object {
    $yesterday = (Get-Date).AddDays(-1)
    Select-String -Path "C:\Windows\System32\DHCP\DhcpSrvLog-*.log" -Pattern ",10," | Where-Object { $_ -match "10," } | Measure-Object | Select-Object Count
}

3.5 日常巡检 Checklist

每日巡检

  • [ ] 检查 DHCP 服务运行状态
  • [ ] 检查各作用域地址池使用率
  • [ ] 检查 DHCP 审计日志中是否有异常
  • [ ] 检查事件日志中 DHCP 相关错误
  • [ ] 确认 DHCP 故障转移状态正常(如已配置)

每周巡检

  • [ ] 检查作用域地址池,评估是否需要扩容
  • [ ] 检查 DHCP 数据库大小,评估是否需要清理
  • [ ] 审查近一周的 NACK(拒绝)记录
  • [ ] 检查保留地址(Reservation)是否仍有效
  • [ ] 检查 DHCP 中继代理配置是否正常

每月巡检

  • [ ] 审计 DHCP 作用域配置(确认无废弃作用域)
  • [ ] 清理过期和不需要的保留地址
  • [ ] 检查 DHCP 备份任务执行情况
  • [ ] 评估 DHCP 地址规划是否需要调整
  • [ ] 审查 DHCP 安全配置
  • [ ] 检查 DHCP 选项配置是否正确

4. 常见故障处理

4.1 故障列表

故障 1:客户端无法获取 IP 地址

  • 现象:客户端显示"无法获取 IP 地址",自动获取到 169.254.x.x(APIPA 地址)
  • 原因分析

    • DHCP 服务未运行
    • 作用域地址池已耗尽
    • 网络问题(广播无法到达 DHCP 服务器)
    • DHCP 中继代理未配置或配置错误
    • 客户端与 DHCP 服务器不在同一 VLAN 且无中继
    • DHCP Snooping 配置阻止了合法 DHCP 流量
  • 解决步骤

    1. 确认 DHCP 服务运行:

      Get-Service dhcpserver
    2. 检查地址池使用率:

      Get-DhcpServerv4ScopeStatistics | Format-Table ScopeId, AddressesInUse, AddressesFree, PercentageInUse
    3. 在客户端手动释放并更新 IP:

      ipconfig /release
      ipconfig /renew
    4. 在客户端抓包确认 DHCP 请求已发出
    5. 检查 DHCP 中继配置(在交换机/路由器上):

      # 检查中继接口配置
      show ip dhcp relay
    6. 检查是否配置了 DHCP Snooping:

      # 在交换机上检查
      show ip dhcp snooping
      show ip dhcp snooping binding
    7. 检查 DHCP 服务器上的 NACK 记录:

      Get-DhcpServerv4ScopeStatistics | Select-Object ScopeId, Nacked

故障 2:客户端获取到错误的 IP 地址(不在正确网段)

  • 现象:客户端获取的 IP 与所在网段不匹配
  • 原因分析

    • 网络中多个非授权 DHCP 服务器(Rogue DHCP)
    • DHCP 中继配置错误
    • VLAN 配置与 DHCP 作用域不匹配
    • DHCP 选项错误
  • 解决步骤

    1. 确认客户端所在 VLAN
    2. 确认 DHCP 作用域覆盖该 VLAN 网段
    3. 查找网络中是否存在非授权 DHCP 服务器:

      # 在客户端抓包分析 DHCP Offer 的来源
      # 或使用 DHCP 扫描工具检测
    4. 在交换机上配置 DHCP Snooping 防止非授权 DHCP:

      # 交换机配置 DHCP Snooping 示例
      ip dhcp snooping
      ip dhcp snooping vlan 10,20,30
      interface GigabitEthernet0/1
      ip dhcp snooping trust  # 连接合法 DHCP 服务器的端口设为信任端口
    5. 检查中继代理配置是否正确

故障 3:IP 地址冲突

  • 现象:客户端报"IP 地址冲突",或实际存在 IP 冲突导致网络不稳定
  • 原因分析

    • 存在静态分配 IP 与 DHCP 池冲突
    • 其他设备被分配了相同 IP(数据库中不一致)
    • DHCP 数据库损坏
    • 非授权 DHCP 服务器分配了冲突地址
  • 解决步骤

    1. 识别冲突 IP 和冲突设备:

      # 查看 DHCP 冲突事件
      Get-WinEvent -LogName "Microsoft-Windows-DHCP-Server/Operational" | Where-Object { $_.Id -eq 20165 }
      
      # 查看冲突地址记录
      Get-DhcpServerv4ScopeStatistics
    2. 检查冲突地址是否被设置为保留地址
    3. 检查冲突地址是否为静态配置
    4. 在 DHCP 中创建保留地址或调整地址池范围
    5. 运行一致性检查:

      netsh dhcp server reconcile
    6. 如果冲突频繁,启用 DHCP 冲突检测:

      # 设置冲突检测次数(1-5)
      Set-DhcpServerv4Binding -BindingState $true -InterfaceAlias "以太网" -ConflictDetectionAttempts 2

故障 4:DHCP 故障转移状态异常

  • 现象:主备 DHCP 服务器之间状态显示"不正常"或"通信中断"
  • 原因分析

    • 网络不通(主备之间防火墙阻挡)
    • 故障转移配置参数错误
    • 安全认证失败
    • 时间不同步
  • 解决步骤

    1. 检查故障转移伙伴状态:

      Get-DhcpServerv4Failover
      # 关注 State 字段
      # 正常状态:Normal
      # 异常状态:CommunicationInterrupted, PartnerDown
    2. 检查主备服务器网络连通性:

      Test-NetConnection <伙伴服务器IP> -Port 3346
    3. 检查 Windows 防火墙是否放行 DHCP 故障转移流量:

      New-NetFirewallRule -DisplayName "DHCP Failover" -Direction Inbound -Protocol TCP -LocalPort 3346 -Action Allow
    4. 检查主备服务器时间是否同步:

      w32tm /query /status
    5. 强制重置故障转移关系:

      # 在主服务器上
      Invoke-DhcpServerv4FailoverReplication
      
      # 重新创建故障转移关系(如果无法恢复)
      Remove-DhcpServerv4Failover -Name "Failover-Relation"
      Add-DhcpServerv4Failover -Name "Failover-Relation" -PartnerServer <伙伴IP> -ScopeId <作用域ID> -Mode HotStandby

故障 5:DHCP 选项配置错误导致客户端网络异常

  • 现象:客户端虽然获取到了 IP 地址,但无法解析域名或上网
  • 原因分析

    • DHCP 选项 3(默认网关)配置错误或缺失
    • DHCP 选项 6(DNS 服务器)配置错误
    • DHCP 选项 15(DNS 域名)配置错误
    • 选项优先级冲突(服务器级别 vs 作用域级别)
  • 解决步骤

    1. 查看客户端获取的 DHCP 选项:

      ipconfig /all
      # 检查默认网关、DNS 服务器是否正确
    2. 检查作用域选项配置:

      Get-DhcpServerv4OptionValue -ScopeId <作用域IP>
      # 检查 003(路由器)和 006(DNS 服务器)选项值
    3. 检查服务器级别选项配置(可能会被作用域选项覆盖):

      Get-DhcpServerv4OptionValue
    4. 修正选项配置:

      # 设置作用域选项
      Set-DhcpServerv4OptionValue -ScopeId <作用域IP> -OptionId 3 -Value <网关IP>
      Set-DhcpServerv4OptionValue -ScopeId <作用域IP> -OptionId 6 -Value <DNS1>,<DNS2>
    5. 在客户端执行更新:

      ipconfig /renew

故障 6:DHCP 数据库损坏或性能下降

  • 现象:DHCP 服务响应缓慢,日志报数据库错误
  • 原因分析

    • 非正常关闭导致数据库文件损坏
    • 磁盘 I/O 性能下降
    • 数据库文件过大
    • 磁盘空间不足
  • 解决步骤

    1. 检查并压缩 DHCP 数据库:

      # 停止 DHCP 服务
      Stop-Service dhcpserver
      
      # 使用 jetpack 压缩数据库
      jetpack "C:\Windows\System32\DHCP\dhcp.mdb" "C:\Windows\System32\DHCP\dhcp_tmp.mdb"
      copy /y "C:\Windows\System32\DHCP\dhcp_tmp.mdb" "C:\Windows\System32\DHCP\dhcp.mdb"
      del "C:\Windows\System32\DHCP\dhcp_tmp.mdb"
      
      # 启动 DHCP 服务
      Start-Service dhcpserver
    2. 检查并修复合约冲突:

      netsh dhcp server reconcile
    3. 检查磁盘空间:

      Get-PSDrive C | Select-Object Used, Free
    4. 重启 DHCP 服务:

      Restart-Service dhcpserver

4.2 应急处理流程

DHCP 服务中断应急流程

客户端无法获取 IP 地址(大面积断网)
        |
   ┌────┴────┐
   │ 确认范围  │ 影响多少个 VLAN/网段
   └────┬────┘
        ↓
   ┌─────────┐
   │ 检查服务  │ net start dhcpserver
   │ 启动服务  │ Get-Service dhcpserver
   └────┬────┘
        ↓
   ┌─────────┐
   │ 检查作用域 │ Get-DhcpServerv4ScopeStatistics
   │ 地址池   │ 确认地址耗尽 → 临时扩池
   └────┬────┘
        ↓
   ┌─────────┐
   │ 故障转移  │ 检查主备同步状态
   │ 切换     │ 如配置了故障转移,切换到辅助服务器
   └────┬────┘
        ↓
   ┌─────────┐
   │ 紧急措施  │ 如 DHCP 完全不可用:
   │         │ 1. 配置辅助 DHCP 服务器
   │         │ 2. 在交换机上配置静态 IP 池
   │         │ 3. 启用备用 DHCP 服务器
   └─────────┘
        ↓
   ┌─────────┐
   │ 事后处理  │ 分析故障根因
   │         │ 更新运维文档
   └─────────┘

5. 备份与恢复

5.1 需要备份的数据

备份项说明备份频率建议
DHCP 数据库包含所有租约、保留、选项配置每日
DHCP 配置作用域配置、故障转移配置等每周
注册表配置DHCP 相关的注册表设置每次配置变更后

5.2 备份策略建议

使用 netsh 备份 DHCP 配置(推荐):

# 完整备份 DHCP 配置(包括所有作用域和选项)
netsh dhcp server export "D:\DHCPBackup\dhcp_backup_$(Get-Date -Format 'yyyyMMdd').txt" all

# 备份到网络路径
netsh dhcp server export "\\backup-server\dhcp\dhcp_backup_<日期>.txt" all

# 备份单个作用域
netsh dhcp server scope 192.168.1.0 export "D:\DHCPBackup\scope_192.168.1.0.txt"

使用 PowerShell 备份

# 导出所有 DHCP 配置
Export-Clixml -Path "D:\DHCPBackup\dhcp_config_$(Get-Date -Format 'yyyyMMdd').xml" -InputObject @{
    Scopes = Get-DhcpServerv4Scope
    Options = Get-DhcpServerv4OptionValue
    Reservations = Get-DhcpServerv4Reservation
    Failover = Get-DhcpServerv4Failover
}

备份数据库文件

# 停止 DHCP 服务
Stop-Service dhcpserver

# 复制数据库文件
Copy-Item "C:\Windows\System32\DHCP\dhcp.mdb" "D:\DHCPBackup\dhcp_$(Get-Date -Format 'yyyyMMdd').mdb"

# 启动 DHCP 服务
Start-Service dhcpserver

备份保留策略

  • 每日备份保留 7 天
  • 每周备份保留 4 周
  • 每次配置变更后手动备份一次

5.3 恢复步骤

使用 netsh 恢复 DHCP 配置

# 停止 DHCP 服务
Stop-Service dhcpserver

# 导入备份配置
netsh dhcp server import "D:\DHCPBackup\dhcp_backup_<日期>.txt" all

# 启动 DHCP 服务
Start-Service dhcpserver

# 验证恢复
Get-DhcpServerv4Scope | Format-Table ScopeId, Name, State

恢复 DHCP 数据库

# 1. 停止 DHCP 服务
Stop-Service dhcpserver

# 2. 备份当前数据库(以防恢复失败)
Copy-Item "C:\Windows\System32\DHCP\dhcp.mdb" "C:\Windows\System32\DHCP\dhcp_old.mdb"

# 3. 复制备份数据库
Copy-Item "D:\DHCPBackup\dhcp_<日期>.mdb" "C:\Windows\System32\DHCP\dhcp.mdb"

# 4. 重新注册 DHCP 服务
netsh dhcp server reconcile

# 5. 启动 DHCP 服务
Start-Service dhcpserver

# 6. 验证
Get-DhcpServerv4ScopeStatistics

6. 安全配置

6.1 账户权限管理

DHCP 管理角色

角色权限范围适用对象
DHCP AdministratorsDHCP 服务器的完全管理权限网络管理员
DHCP Users只读查看 DHCP 配置和统计监控人员
本地管理员服务器操作系统完全控制系统管理员

安全管理建议

  • 将 DHCP 管理员加入 Builtin\DHCP Administrators 组
  • 禁止普通用户远程管理 DHCP 服务
  • 使用独立的管理账户进行 DHCP 管理
  • 启用 DHCP 审核日志记录所有管理操作

6.2 防火墙规则

端口协议用途来源限制
67UDPDHCP Server 监听(BOOTP Server)所有 DHCP 客户端
68UDPDHCP Client(BOOTP Client)本地
3346TCPDHCP 故障转移通信故障转移伙伴服务器
135TCPRPC 管理管理网段
445TCPSMB(可选文件共享)管理网段

6.3 安全加固建议

  1. 防止 DHCP 饥饿攻击

    • 启用 DHCP Snooping(在交换机上):

      # 交换机配置
      ip dhcp snooping
      ip dhcp snooping vlan <VLAN范围>
      ip dhcp snooping rate limit <pps>
    • 限制每个端口的 DHCP 请求速率
    • 监控异常高的 DHCP Discover 请求
  2. 防止非授权 DHCP 服务器(Rogue DHCP)

    • 启用 DHCP Snooping,只信任连接合法 DHCP 服务器的端口
    • 在 Windows DHCP 服务器上启用"非授权 DHCP 服务器检测":

      Set-DhcpServerSetting -ActivateDetection $true
    • 在 AD 中授权 DHCP 服务器:

      Add-DhcpServerInDC -DnsName <服务器FQDN> -IPAddress <服务器IP>
  3. 审计日志配置

    # 启用 DHCP 审计日志
    Set-DhcpServerAuditLog -Enable $true -Path "C:\Windows\System32\DHCP"
    
    # 设置日志保留天数(默认 7 天)
    Set-DhcpServerSetting -BackupInterval 60
  4. 网络安全配置

    • 将 DHCP 服务器放在独立的管理网段
    • 使用 VLAN 隔离客户端网络和管理网络
    • 控制 DHCP 服务器上的防火墙规则(最小开放原则)
  5. DHCP 选项安全

    • 避免在 DHCP 选项中配置敏感信息
    • 仅设置必要的 DHCP 选项(003、006、015)
    • 定期审计 DHCP 选项配置

7. 参考资料

相关联系人

角色姓名联系电话邮箱
DHCP 管理员______
网络管理员______
AD/DNS 管理员______
微软技术支持400-820-3800
值班工程师______