标准答案
- 先确认进程实际使用的 resolver 配置和搜索域,再用独立工具查询同一域名、记录类型和 resolver。
- 区分 NXDOMAIN、SERVFAIL、超时、连接拒绝和返回旧记录,它们对应的修复路径不同。
- 大响应、DNSSEC 或网络限制可能使查询切换 TCP;容器和宿主机的 resolv.conf 来源也可能不同。
- 修复要验证 TTL、缓存刷新、多个网络位置和应用重试行为,避免把暂时性解析失败无限重试。
题目解析
DNS 排查要区分解析器、权威服务器、网络路径、缓存和应用 resolver 行为。NXDOMAIN 表示名称不存在或当前权威返回不存在,SERVFAIL 可能表示解析服务失败,超时则表示在规定时间内没有得到响应;三者的修复方向不同。
应从服务实际运行环境检查 /etc/resolv.conf、NSS、search domain、IPv4/IPv6 和可用区差异,用 getent 验证应用实际解析路径,再用 dig 分别查询指定 resolver。hosts 文件可以作为临时止血,但会绕过正常 TTL 和服务发现,必须记录范围并安排撤销。
常见误区
- 误区:只 ping 域名。改正:先用 getent/dig 确认解析,再分别测试 TCP/UDP、TLS 和应用协议。
- 误区:把 NXDOMAIN 当成网络超时。改正:区分不存在、解析服务错误和无响应,并查看 DNS 状态码。
- 误区:修改 hosts 后当成正式修复。改正:把 hosts 作为有期限的止血措施,同时修复权威记录、resolver 或服务发现。