dig 是排查解析的主力
dig 直接向指定 DNS 服务器发起查询并打印完整应答报文,比 ping 域名更适合脚本化排查。它输出的不只是地址,还有应答码、TTL 与权威段,能区分「解析被缓存」和「委派链断了」。Windows 上没有 dig,可用 nslookup 或 PowerShell 的 Resolve-DnsName 达到同样目的。
基本信息
| 适用平台 | Linux/Unix 安装 bind-utils 后自带,Windows 用 nslookup 或 Resolve-DnsName |
|---|---|
| 权限要求 | 普通用户即可,指定服务器在命令里加 @地址 |
| 常用选项 | +short、@server、+trace、+noall +answer、-x 反向查询 |
| 输出重点 | status 应答码、ANSWER 段、TTL、AUTHORITY 段 |
典型使用场景
- 改完解析记录后确认是否生效,以及当前缓存的剩余 TTL
- 怀疑运营商递归异常,直接对比公共 DNS 与权威服务器的结果
- 排查解析失败:区分 NXDOMAIN(记录不存在)与 SERVFAIL(服务端异常)
- 跟踪委派链断点,确认某一级 DNS 是否返回了正确的 NS
- 查 TXT、MX、PTR 等记录,用于验证邮件与反垃圾相关配置
常用 dig 组合
常用 dig 组合
dig +short www.example.com # 只看最终结果,适合写进脚本
dig www.example.com @8.8.8.8 # 指定递归服务器查询
dig +trace www.example.com # 从根域逐级跟踪委派链
dig +noall +answer www.example.com # 只看应答段,含剩余 TTL
dig -x 203.0.113.10 +short # 反向解析,查 PTR 记录
dig TXT example.com +short # 查 TXT 记录,注意输出带引号输出逐列读法
| 字段 | 含义 | 读数要点 |
|---|---|---|
| status | 应答码 | NOERROR 正常,NXDOMAIN 记录不存在,SERVFAIL 服务端异常,REFUSED 被拒绝 |
| ANSWER SECTION | 最终应答记录 | 为空说明没有这条记录或查询类型写错 |
| TTL | 剩余缓存秒数 | 递减说明仍在缓存期内,归零后才会重新回源 |
| AUTHORITY SECTION | 权威服务器段 | 用来判断委派是否正确 |
+trace 从根域逐级查询且绕过本机 DNS 配置,输出较长,但能精确定位委派链在哪一级断开。
查询结果会受递归缓存影响:TTL 未过期时看到的是旧值,不代表权威记录没有被修改。
配套检查项
- 解析生效后从多地递归同时验证,避免只看单一节点的结果
- 变更记录前先把 TTL 调低,缩短旧值残留的时间窗口