dns老化清理需三端闭环:区域启用老化并设无刷新/刷新间隔、服务器启用自动清理并设24小时周期、客户端真实触发动态更新;缺一不可。
要让 dns 服务自动释放因长期未更新而堆积的无效记录(比如离线设备留下的 a、ptr 记录),必须配置“老化与清理”策略。它不是一键开关,而是三处协同生效:区域级启用老化、服务器级启用自动清理、客户端真实刷新时间戳。缺一环,旧记录就清不掉。
区域级:开启老化并设好两个关键间隔
在 DNS 管理器中,右键你要管理的正向查找区域(如 contoso.com)→ “属性” → “常规”选项卡 → 点击“老化…”:
- 勾选为此区域启用自动老化/清理
- 无刷新间隔:默认 7 天。这期间即使客户端 IP 没变,也不允许重复刷新时间戳(避免频繁写入)。设太短会加重 AD 复制压力;设太长会让僵尸记录滞留更久
- 刷新间隔:默认 7 天。无刷新期结束后,客户端必须在此期限内发起一次动态更新,否则记录被标记为“待清理”
- 总生命周期 = 无刷新间隔 + 刷新间隔。例如都设为 7 天,一条记录最多存活 14 天
- 注意:手动添加的记录默认不参与老化(时间戳为 0),需单独右键该记录 → “属性” → 勾选“在此记录上启用老化”
服务器级:启用自动清理并调短扫描周期
右键 DNS 服务器节点(不是区域)→ “属性” → “高级”选项卡:
- 勾选启用自动清理
- 设置自动清理周期:建议改为 24 小时,而非默认 7 天。这个值只控制服务器多久扫描一次过期记录,不决定单条记录何时过期。设为 7 天,意味着过期记录可能堆积一周才被真正删除
- 如果是 AD 集成区域,还需右键服务器 → “设置所有区域的老化/清理” → 勾选“Scavenge Stale Resource Records”,并在弹窗中务必勾选“应用到现有 AD 集成区域”
客户端端:确保动态更新真实发生
服务端全配好,客户端不刷新,整个机制就卡死。需确认以下几点:
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
- 网络适配器属性中已勾选:在 DNS 中注册此连接的地址 和 使用此连接的 DNS 后缀注册
- DHCP 客户端服务正在运行;DHCP 服务器已启用“为 DNS 动态更新配置”
- 客户端与 DNS 服务器、域控制器时间偏差 ≤5 分钟(建议统一部署 NTP)
- 静态 IP 主机若未手动启用 DNS 注册,其记录不会刷新,也不会进入老化流程
验证是否真生效,别只看勾选框
配置完成后,打开 DNS 服务器的事件查看器 → Windows 日志 → 系统,筛选以下事件 ID:
- 2501:清理开始
- 2502:清理完成
- 4521:拒绝更新(提示客户端刷新失败)
若长时间没看到 2501/2502,说明某处配置未闭环。可先对目标区域运行 dnscmd /ageallrecords 区域名 手动打上时间戳,再观察后续日志。










