DNS 解析异常排障
区分超时、NXDOMAIN、SERVFAIL 与记录差异,对照解析器、记录类型和缓存 TTL。
适用范围与前提
客户端至递归解析器的 DNS 排障;不执行区域传送、不修改系统 DNS,不等同于网站连通性检测。
- 仅查询获授权的名称与解析器;命令会产生网络请求,域名可能进入终端历史、网络设备和解析器日志。
- 示例 example.com 与 192.0.2.53 分别是公开名称和文档地址;将服务器替换为已批准且实际可达的 IPv4 解析器。
- 先记录故障时间、所在网络/VPN、查询类型、预期记录及最近变更;完整输出可能包含内部地址。
命令仅供手动复制到获授权的环境执行。站点不会连接服务器;涉及网络的诊断可能产生请求或登录审计记录。
1. 保留完整 DNS 响应并分类
dig -q 'example.com.' -t 'A' +time=3 +tries=1预期现象:记录 status、ANSWER、AUTHORITY、TTL 和 SERVER。超时表示未收到有效回答;NXDOMAIN 表示名称不存在;SERVFAIL 表示解析失败;NOERROR 且答案为空可能只是没有该类型记录。
- 超时或无法到达解析器 → 在同一网络对照 UDP 与 TCP
- NXDOMAIN 或 NOERROR 但无预期记录 → 核对记录类型、别名和 TTL
- SERVFAIL → 对照已批准解析器的完整回答
- 有答案但地址不符预期 → 核对记录类型、别名和 TTL
- 答案符合预期 → 验证恢复
2. 在同一网络对照 UDP 与 TCP
dig '@192.0.2.53' -q 'example.com.' -t 'A' +time=3 +tries=1
dig '@192.0.2.53' -q 'example.com.' -t 'A' +time=3 +tries=1 +tcp预期现象:先替换文档地址。仅某种传输失败提示路由、53 端口策略、截断回退或解析器监听差异;默认 dig 遇截断可能回退 TCP,不能只凭命令参数确认实际传输。
- 传输路径或解析器配置差异明确 → 修复建议(需人工确认)
- 两者都失败或无权检查网络 → 升级求助前收集
- 恢复响应但记录不符 → 核对记录类型、别名和 TTL
3. 对照已批准解析器的完整回答
dig '@192.0.2.53' -q 'example.com.' -t 'A' +time=3 +tries=1预期现象:将同一名称、类型与系统解析器结果对照。SERVFAIL 可由 DNSSEC 验证、委派、权威服务或上游超时引起;不能直接认定本地故障,更不能禁用 DNSSEC 作为修复。
- 仅一个解析器异常:交管理员核对缓存、策略与上游日志 → 升级求助前收集
- 多个解析器异常:交域名负责人核对委派、权威与 DNSSEC → 升级求助前收集
- 解析恢复但答案不同 → 核对记录类型、别名和 TTL
4. 核对记录类型、别名和 TTL
dig -q 'example.com.' -t 'A' +time=3 +tries=1
dig -q 'example.com.' -t 'AAAA' +time=3 +tries=1
dig -q 'example.com.' -t 'CNAME' +time=3 +tries=1预期现象:对照已批准的权威配置、变更时间和旧 TTL;检查拼写、尾点、CNAME、分区 DNS/VPN 和负缓存。没有 AAAA 或 CNAME 不一定是错误;地域/CDN 答案差异也可能符合策略。
- 配置错误、别名错误或旧缓存原因已有证据 → 修复建议(需人工确认)
- 权威配置或预期值不明 → 升级求助前收集
- 差异符合业务解析策略 → 验证恢复
修复建议(需人工确认)
- 由域名负责人备份并人工确认后修正错误记录、委派或 DNSSEC 配置;降低新 TTL 不会立即清除已有缓存。
- 按旧 TTL 与负缓存时限安排观察;确需刷新某层缓存时先确认影响,不批量刷新或把公共 DNS 作为通用替代。
- 网络问题由管理员修正最小必要路由/访问策略,保留回退方案,不关闭防火墙或验证机制。
验证恢复
- 在原故障网络和已批准对照网络重复相同类型查询,核对 SERVER、status、答案与 TTL。
- 使用应用正常的 DNS 路径验证;浏览器 DoH、系统缓存与 dig 路径可能不同。解析正确之后另行检查服务连接。
升级求助前收集
- 提供时间及时区、网络/VPN、名称与类型、预期记录、脱敏完整回答、解析器及变更/旧 TTL;内部名称不要直接发到公共解析器。