必须同步清空根提示并验证效果:勾选“禁用递归”后需立即清空“根提示”选项卡中所有ip,执行net stop dns && net start dns重启服务,并在本地运行nslookup -type=soa example.com 127.0.0.1验证返回“query refused”或超时,否则仍可能回退查询导致防护失效。
直接在 dns 管理器中勾选“禁用递归”只是第一步,真正关闭必须同步清空根提示并验证效果,否则攻击者仍可能借道回退查询,导致防护失效。
关闭递归并防止回退到根提示
Windows DNS 默认开启递归,若仅勾选禁用而未清理底层依赖,服务会在转发器失效或配置异常时自动回退至根提示发起外部查询——这等于留了一条隐蔽的放大攻击通道。
- 打开 DNS 管理器 → 右键服务器名称 → “属性” → 切换到“高级”选项卡 → 勾选“禁用递归(也禁用循环查找)”
- 立即切换到“根提示”选项卡 → 清空列表中所有 IP 地址(一个不留)
- 执行 net stop dns && net start dns 重启服务,使两项配置同时生效
本地验证是否真正关闭
不能只看界面勾选状态,必须实测响应行为。攻击者常利用未彻底关闭的递归向你的服务器发送伪造源IP的查询请求,触发放大流量。
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 在 DNS 服务器本机运行:nslookup -type=soa example.com 127.0.0.1
- 预期结果是“Query refused”或超时;若返回 SOA 记录,说明递归仍在工作
- 注意:该测试必须在服务器本地执行,不能从远程客户端测——防火墙可能已拦截,但服务层仍开放
用防火墙补充限制 53 端口访问来源
Windows DNS 不支持 BIND 风格的 ACL 语法,但主机防火墙可精准控制谁有资格发请求,这是防止外部滥用的关键一环。
- 打开“高级安全 Windows 防火墙” → 新建入站规则
- 协议类型选 UDP 和 TCP,本地端口填 53
- 在“作用域”中,仅允许“远程 IP 地址”为内网可信子网(如 192.168.10.0/24、10.20.30.0/24)
- 确保拒绝所有其他来源——包括 0.0.0.0/0,且 UDP/TCP 必须同时限制,缺一不可
避免用转发器替代递归关闭
很多管理员误以为配了转发器就等于关了递归风险,其实转发器不校验请求来源,外部请求仍能穿透;更危险的是,转发失败时 DNS 会自动启用根提示,意外恢复递归路径。
- 转发器只用于内网客户端加速解析,不承担访问控制职责
- 若需为不同子网提供差异化解析(如办公网查公网、生产网查内部域名),应使用 DNS 策略中的“递归范围”,而非全局开启递归
- 禁用递归后,内网客户端仍可正常解析——只要其 IP 在防火墙放行范围内且策略允许递归










