dig 返回码怎么读
解析排查的第一步不是看有没有结果,而是看状态码(status)。NOERROR 表示查询成功,但要区分「有记录」和「成功但没有该类型的记录」这两种情况;NXDOMAIN 明确表示这个域名不存在;SERVFAIL 说明权威侧处理失败或超时,通常是上游问题;REFUSED 表示查询被拒绝,多与访问控制或问错了服务器有关。把状态码认错,排查方向会整个跑偏。
基本信息
| 工具 | dig(BIND 工具集),Windows 侧可用 nslookup 对照 |
|---|---|
| 关键字段 | status 状态码、ANSWER 段记录、SERVER 应答服务器 |
| 组合参数 | +noall +comments 只输出头部信息,便于看状态码 |
| 逐级排查 | +trace 从根开始展示委派链 |
| 指定服务器 | @服务器地址 排除本地缓存干扰 |
| 报障要件 | status、查询的服务器、时间点,三者缺一不可 |
典型使用场景
- 应用报「域名解析失败」,先分清是记录不存在还是服务器处理失败
- 验证新加的解析记录是否已生效,排除本地缓存干扰
- 确认故障是全局还是仅某个解析器视角
- 向解析服务商提工单时,提供可直接复现的命令与输出
- 迁移与委派变更后,逐级验证委派链是否完整
状态码与排查方向
| 状态 | 含义 | 常见原因与下一步 |
|---|---|---|
| NOERROR | 查询成功 | 注意区分有无目标记录:无记录时 ANSWER 段为空 |
| NXDOMAIN | 域名不存在 | 拼写错误、记录被删、委派缺失 |
| SERVFAIL | 权威处理失败或超时 | 权威不可达、DNSSEC 配置错误、上游故障 |
| REFUSED | 查询被拒绝 | ACL 限制,或查询了不提供递归的服务器 |
| 超时无响应 | 没有任何应答 | 网络不通、53 端口被拦、权威宕机 |
查看完整状态信息
查看完整状态信息
dig www.example.com +noall +comments | grep -i status # 只看状态码
dig www.example.com +noall +answer # 只看记录
dig www.example.com @8.8.8.8 +short # 换公共解析器对照
dig www.example.com @<权威NS> +noall +comments # 直接问权威,排除缓存
dig +trace www.example.com # 逐级检查委派链
dig www.example.com +tcp # TCP 方式,排除大包被丢的影响NOERROR 但 ANSWER 为空是容易被忽略的一种情况:查询成功了,只是这个域名下没有该类型的记录。它和 NXDOMAIN 的意义不同,前者说明域名存在但记录缺失,后者说明域名整体不存在,排查方向完全不同。
报障时让查询方提供完整输出(含 status、查询的服务器与时间点),能减少一轮往返。只描述「解析不了」时,对方无法判断是缓存问题、权威问题还是本机网络问题。