DHCP 审计与日志

DHCP 服务器 · 第 7 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📖 目录

  1. DHCP 审计概述
  2. 启用 DHCP 审计日志
  3. 配置日志参数
  4. 日志文件分析
  5. PowerShell 监控脚本
  6. 常见问题

1. DHCP 审计概述

DHCP 审计日志记录所有 DHCP 服务器活动:IP 分配、续租、释放、拒绝请求等。通过分析日志可以追踪 IP 分配历史、排查网络问题、检测未授权设备。

2. 启用 DHCP 审计日志

1

DHCP 管理器 → 右键 dc1.iehang.cn「属性」

2

切换到 「常规」 选项卡

3

勾选「启用 DHCP 审计日志」

4

日志文件路径默认 %SystemRoot%\System32\dhcp

5

磁盘检查间隔设为 7(每 7 分钟检查磁盘空间)→ 确定

PowerShell - 启用审计
# 启用审计日志
Set-DhcpServerAuditLog -ComputerName "dc1.iehang" -Enabled $true

# 查看审计配置
Get-DhcpServerAuditLog -ComputerName "dc1.iehang.cn"

3. 配置日志参数

1

服务器属性 → 「高级」 选项卡 → 「审核日志」 区域

2

磁盘检查间隔:7 分钟

3

最大日志文件大小:70 MB

4

最小剩余磁盘空间:20 MB(低于此值停止记录日志)

PowerShell - 日志参数
# 配置详细日志参数
Set-DhcpServerAuditLog -ComputerName "dc1.iehang.cn" `
  -Enabled $true `
  -DiskCheckInterval 7 `
  -MaxLogFilesSize 70MB `
  -MinSpaceDisk 20MB

# 查看
Get-DhcpServerAuditLog -ComputerName "dc1.iehang.cn"

4. 日志文件分析

DHCP 日志文件位于 %windir%\System32\dhcp\DhcpSrvLog-YYYYMMDD.log,使用逗号分隔格式。

常见事件 ID

事件 ID含义
00日志已启动
10新 IP 地址分配
11IP 地址续租
12IP 地址释放
13IP 地址拒绝(NACK)
15地址冲突检测
16租约到期
20BOOTP 请求
PowerShell - 分析日志
# 查看今天的日志
$logDate = Get-Date -Format "yyyyMMdd"
$logFile = "$env:SystemRoot\System32\dhcp\DhcpSrvLog-$logDate.log"
Get-Content $logFile | Select-Object -Last 20

# 统计今天新分配的 IP 数量
(Get-Content $logFile | Select-String ",10,").Count

# 查找被拒绝的请求
Get-Content $logFile | Select-String ",13,"

5. PowerShell 监控脚本

PowerShell - DHCP 监控脚本
# 监控地址池使用率
$scope = Get-DhcpServerv4Scope -ComputerName "dc1.iehang.cn"
foreach ($s in $scope) {
  $free = (Get-DhcpServerv4FreeIPAddress -ComputerName "dc1.iehang.cn" `
    -ScopeId $s.ScopeId.AddressAsString).Count
  $total = $s.SubnetMask.IPAddressToString -match "/(\d+)"
  $prefix = $Matches[1]
  $hosts = [Math]::Pow(2, 32 - [int]$prefix) - 2
  $used = $hosts - $free
  $usage = [Math]::Round(($used / $hosts) * 100, 1)
  Write-Host "$($s.Name): $usage% 使用 ($used/$hosts)"
}

6. 常见问题

Q1:日志文件太大?

减小 MaxLogFilesSize,或将日志目录移到专用磁盘。DHCP 每天自动创建新文件。

Q2:找不到日志文件?

检查是否启用了审计日志。确认路径 %windir%\System32\dhcp\ 下有 DhcpSrvLog 开头的文件。

Q3:如何导出日志用于审计?

直接复制日志文件,或用 Import-Csv $logFile -Header ... 导入后筛选。