系统工程

DNS 故障排查手册

2026-08-03 #DNS#网络#排障

从客户端缓存到权威服务器,系统定位解析失败、超时与结果不一致。

核心思路

先明确查询名称、记录类型和使用的 DNS 服务器,再分别检查本机、递归服务器和权威结果。注意搜索域、负缓存与 TTL。

落地步骤

容器环境还要检查 CoreDNS、Service 名称和网络策略。临时写 hosts 只能用于验证,不应成为长期配置。

验证清单

实施后不要只确认“能运行”,还应检查错误率、延迟、资源占用和异常路径。把验证命令、预期结果和回滚方式写进变更记录,后续维护会轻松很多。

小结

好的工程实践不是堆叠工具,而是用清晰边界、可观察结果和可逆变更降低长期成本。先解决最重要的问题,再逐步自动化。

可执行实践

用 dig name A 明确记录类型和响应服务器,再分别查询本机配置的递归 DNS 与权威服务器。检查状态码、Answer、TTL、CNAME 链和是否命中搜索域。

验证与退出条件

容器环境继续检查 /etc/resolv.conf、CoreDNS 日志、Service 名称和 NetworkPolicy。清缓存只用于验证,修复应落在正确的权威记录和 TTL。

实践场景

以“排查“域名偶尔解析失败””为例。实施前先保存当前版本、配置和关键指标基线,写明成功条件与停止条件;涉及生产数据或外部写入时,先在隔离环境验证。

分步实施

分别检查本机缓存、递归解析器、权威记录和网络路径;同时查询 A/AAAA/CNAME,记录 TTL、返回码和使用的服务器。每完成一步都记录可观察结果,不把命令返回零等同于业务正确。

故障演练

对不存在域名、过期缓存、错误 DNSSEC 和 IPv6 不通分别验证,避免把 TCP 故障误判为 DNS。演练应使用可清理的测试数据,并验证告警、日志和恢复路径,而不只是确认系统最终又能访问。

观测与回滚

比较 SERVFAIL、NXDOMAIN、解析延迟与缓存命中;变更记录后等待 TTL,不连续修改多个层级。变更单中应写清负责人、观察窗口、阈值和回滚触发器,避免故障发生后再临时争论。

完成后把使用的版本、关键命令、观测窗口和结果写入变更记录。没有验证证据的“已完成”不能作为上线结论。

第二轮实践复核

可复用交付物: 分层解析记录和 TTL 观察表。复用时先固定软件版本、依赖锁文件、测试数据规模和运行环境;文章中的命令包含占位符,必须替换成自己的非生产目标后再执行。

最低验证: dig +trace example.com; dig A example.com; dig AAAA example.com

执行记录要保存命令、退出码、关键输出、观察窗口和回滚结果。若验证会产生写入,先使用隔离环境或 dry-run;任何失败都不能通过扩大权限、关闭校验或跳过测试来“解决”。

完整实战:api.example.com 间歇解析失败

先把“DNS 有问题”改写成可验证现象:哪些客户端、哪个网络、查询哪个名称和记录类型、从何时开始、失败比例、返回码与耗时。浏览器打不开不等于 DNS 失败,也可能是代理、TLS、路由或应用问题。

1
2
3
4
dig api.example.com A
dig api.example.com AAAA
dig @1.1.1.1 api.example.com A
dig +trace api.example.com A

+trace 从根开始迭代,适合检查委派链,但它不复现企业递归解析器的缓存、策略和分流。应分别向客户端实际使用的递归服务器、权威服务器和一个对照公共解析器查询,并保存完整响应的状态、flags、answer、authority 与 TTL。

按层缩小范围

层次 证据 常见问题
客户端 resolv 配置、缓存、hosts、VPN 错误搜索域、负缓存、分流 DNS
递归解析器 查询日志、缓存命中、上游延迟 过期缓存、DNSSEC 校验、限流
委派 NS、glue、父区响应 域名服务器不一致、glue 错误
权威区 SOA serial、各 NS 答案 发布未同步、记录缺失、TTL 错配
传输 UDP/TCP 53、EDNS、包大小 防火墙丢 TCP、分片或 MTU 问题

若只有部分解析器返回旧地址,比较 TTL、SOA serial 和各权威 NS 的答案。若 UDP 查询截断而 TCP 失败,检查防火墙是否只放行 UDP 53。若只在公司网络失败,检查 split-horizon 区域和 VPN 路由,不要直接修改公网记录。

变更与恢复

DNS 迁移前至少一个旧 TTL 周期降低 TTL,确认权威区已同步,再切换记录;迁移完成并稳定后恢复正常 TTL。回滚时旧后端必须至少保留到缓存窗口结束。删除记录或 NS 属于高风险动作,先导出当前区文件和 registrar 配置。

验收同时从多地域递归解析器和实际客户端查询 A/AAAA/CNAME,确认最终地址、TTL、DNSSEC 状态和应用 TLS 主机名都正确。监控 SERVFAIL/NXDOMAIN、解析 P95、权威错误率和新旧地址实际流量,不能只在本机 ping 一次。

一手资料

资料与版本边界复核日期:2026-08-22。工具行为可能演进,实施前以锁定版本对应的官方文档为准。

评论
分享

评论