Windows DNS服务器递归必须分级控制:对内网可信子网保留递归,对外网禁用,否则易被用于DNS放大攻击;需禁用递归、清空根提示、配置防火墙ACL限制53端口、启用调试日志审计,并用DNS策略“递归范围”实现子网级控制。
windows dns 服务器递归查询不能“一开全开、一关全关”,必须按客户端来源分级控制:对内网可信设备保留递归能力,对外网或不可信ip必须禁用,否则极易被利用发起 dns 放大攻击。
关闭非必要递归并验证是否生效
默认情况下,Windows Server DNS 服务开启递归,但生产环境必须限制。操作路径为:DNS 管理器 → 右键服务器名 → “属性” → “高级”选项卡 → 勾选“禁用递归(也禁用循环查找)”。勾选后务必切换到“根提示”选项卡,清空全部 IP 地址——否则禁用后仍可能回退至根提示发起外部查询。
- 执行 net stop dns && net start dns 重启服务使配置生效
- 本地测试命令:nslookup -type=soa example.com 127.0.0.1,应返回 “Query refused” 或超时;若成功返回 SOA 记录,说明递归未真正关闭
- 如需为特定子网(如 192.168.10.0/24)保留递归,应使用 DNS 策略中的“递归范围”,而非全局启用
用主机防火墙实现等效 ACL 控制
Windows DNS 不支持 BIND 风格的 ACL 语法,但可通过系统防火墙精准限制 UDP/TCP 53 端口入站来源,达到相同防护效果。
将提醒同步至 Windows/Outlook 日历。用户提及「提醒我」「设置提醒」「加到日历」「同步到日历」「日程」「calendar」「日历」时触发。支持Microsoft Graph API 设备代码流认证,无需 Web 服务器,直接写入用户 Outlook 日历。
- 仅放行内部管理网段和业务子网(例如 10.20.30.0/24、192.168.1.0/24),拒绝所有其他来源请求
- 避免依赖“转发器替代递归关闭”:转发器不校验请求源,外部请求仍可借道发出;且转发器失效时可能触发根提示回退,意外恢复递归行为
- 若需差异化解析(如办公网 vs 生产网),应启用 DNS 策略 + 客户端子网 + 区域范围组合,而非开放全局递归
启用调试日志识别异常递归请求
配置只是起点,持续监控才能发现绕过或误配问题。DNS 调试日志是定位开放递归风险的关键手段。
- 在 DNS 管理器 → 服务器属性 → “调试日志”选项卡中启用日志,勾选“查询”和“拒绝”级别,指定独立存储路径
- 定期检查日志中高频出现的外部 IP,尤其关注大量 A/AAAA 查询 + 非常规域名(如随机子域、长字符串域名)
- 用 PowerShell 快速提取 Top 10 可疑客户端:Get-WinEvent -LogName "DNS Server" | Where-Object {$_.Id -eq 257} | Group-Object -Property @{e={$_.Properties[1].Value}} | Sort-Object Count -Descending | Select-Object -First 10
排查业务异常是否由递归策略引发
很多“上不了网”“API 调用失败”“OAuth 回调超时”问题,根源其实是 DNS 递归策略误配,而非网络或应用本身故障。
- 在业务服务器上对比测试:nslookup api.thirdparty.com 127.0.0.1 与 nslookup api.thirdparty.com 8.8.8.8
- 若前者失败后者成功,优先检查本地 DNS 是否对业务子网关闭了递归,或防火墙是否误阻 UDP 53 出站
- 禁用递归后未配置转发器,或转发器超时(默认 5 秒)、不可达,也会导致所有解析直接失败,而非缓慢响应

















