DNS 查询出现 Server Failure 或 SERVFAIL,如何排查转发器、防火墙 53 端口和缓存?

SERVFAIL 表示 DNS 服务器无法完成查询。应从权威区域、转发器、TCP/UDP 53、DNSSEC、超时和缓存顺序排查。

先控制风险,再实施变更建议先在测试环境或单一对象上验证,保存配置、日志和可恢复备份。涉及生产切换、批量策略、数据库修复或存储重建时,应设置维护窗口和明确回退条件。

1. 结论与适用范围

SERVFAIL 不是“域名不存在”,而是解析流程中的服务器失败。客户端、缓存 DNS、上游转发器和权威 DNS 任一环节超时、拒绝或返回无效数据,都可能产生相同结果,因此必须比较不同服务器和查询类型。

该问题涉及 DNS、网络、VPN、防火墙和受控访问。应从查询路径、端口、回程和日志分层验证。

2. 需要优先关注的风险信号

  • 同一域名时通时不通,清缓存后短暂恢复。
  • A 记录可查但 CNAME、AAAA 或较大响应失败,或不同 DNS 服务器结果不一致。

3. 迁移或处理前的检查清单

  1. 使用 Resolve-DnsName 或 nslookup 分别指定两台内网 DNS 和上游 DNS。
  2. 检查条件转发器目标是否为空、地址错误、顺序异常或已失效。
  3. 在防火墙确认 DNS 服务器到上游的 UDP 53 和 TCP 53 以及回程。
  4. 查看 DNS Server 事件、调试日志、递归超时、DNSSEC 和负缓存。
只读检查与验证示例
Resolve-DnsName vendor.example -Type A -Server 192.0.2.53
Resolve-DnsName vendor.example -Type CNAME -Server 192.0.2.53
Test-NetConnection 203.0.113.53 -Port 53
Clear-DnsServerCache -Force

corp.example、192.0.2.0/24 与 203.0.113.0/24 均为文档示例。只有在确认实际环境参数后,才能替换为真实值。

4. 推荐实施步骤

  1. 先修正错误转发器和防火墙策略,再在两台 DNS 清理缓存。
  2. 不要在客户端绕过内网 DNS 作为长期方案。
  3. 对单个厂商域建立条件转发器并记录上游,避免影响所有递归查询。
  4. 若权威 DNS 本身异常,保留查询证据并联系域名服务方。
远程还是现场处理?日志、配置和少量对象通常可先远程评估;涉及物理服务器、存储、机房供电、批量切换或恢复演练时,应安排受控现场窗口。浙江、上海、江苏可根据项目情况上门,其他地区可远程协助。

5. 验证、回退与常见误区

  • 连续多次查询 A、AAAA、CNAME 和 SOA 结果一致。
  • 两台内网 DNS 在主备切换和缓存冷热状态下均成功。
  • 日志中没有持续超时、拒绝或 TCP 回退失败。

常见错误做法

  • 只测试 ping 或网页。
  • 只清客户端缓存,不处理服务器缓存和错误转发器。
  • 认为放行 UDP 53 就覆盖全部 DNS。

常见问题

SERVFAIL 是否等于域名不存在?

不是。不存在通常返回 NXDOMAIN,SERVFAIL 表示服务器未能完成解析。

两台 DNS 都要清缓存吗?

需要。客户端可能使用任意一台,配置和缓存都应分别处理。

上一篇内网严格禁止上网,业务系统只需解析厂商域名,DNS 条件转发器应该如何设计?下一篇企业部署两台 DNS 服务器后,条件转发器、缓存和根提示是否必须保持一致?

需要结合实际环境进一步判断?

可提供系统版本、拓扑、完整报错、事件日志时间点、影响范围、近期变更和已做过的操作。我们会先判断风险、处理边界和回退方式,再确认实施范围。