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 地址分配 |
| 11 | IP 地址续租 |
| 12 | IP 地址释放 |
| 13 | IP 地址拒绝(NACK) |
| 15 | 地址冲突检测 |
| 16 | 租约到期 |
| 20 | BOOTP 请求 |
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 ... 导入后筛选。