DNS 记录与解析排查速查
常用命令
dig example.com
dig example.com A
dig example.com AAAA
dig example.com CNAME
dig example.com MX
dig example.com TXT
dig example.com NS
dig example.com SOA
dig +short example.com
dig @8.8.8.8 example.com A
dig +trace example.com
dig +noall +answer example.com
dig -x 1.1.1.1
host example.com
nslookup example.com
场景速查
| 目的 |
写法/命令 |
注意 |
| 查 IPv4 |
dig example.com A |
结果可能是 CNAME 链 |
| 查 IPv6 |
dig example.com AAAA |
没有 AAAA 不代表解析故障 |
| 查别名 |
dig www.example.com CNAME |
CNAME 不能与其它记录共存 |
| 查邮件 |
dig example.com MX |
数字表示优先级 |
| 查验证记录 |
dig example.com TXT |
长 TXT 会分段显示 |
| 查权威服务器 |
dig example.com NS |
与本地缓存结果可能不同 |
| 查区信息 |
dig example.com SOA |
序列号用于判断更新 |
| 指定解析器 |
dig @1.1.1.1 example.com |
绕过本机 resolver |
| 反向解析 |
dig -x 1.1.1.1 |
依赖 PTR 记录 |
| 追踪委派 |
dig +trace example.com |
从根开始,绕开缓存 |
| 看 TTL |
看 ANSWER 第二列 |
TTL 归零后重新查询 |
| 看回答类型 |
看 flags: 与 status: |
aa 表示权威回答 |
| 查本机配置 |
cat /etc/resolv.conf |
关注 search 与 ndots |
易错点
- 错误:只查一次就下结论;正确:换递归服务器(
@8.8.8.8)和权威服务器交叉验证。
- 错误:把
ANSWER: 0 当成记录不存在;正确:结合 status: 判断是 NXDOMAIN 还是 SERVFAIL。
- 错误:改完记录立刻在本机验证;正确:等 TTL 过期,或直接查询权威 NS。
- 错误:忽略
/etc/resolv.conf 的 search 和 ndots;正确:短名字会追加搜索域,K8s 默认 ndots:5 会产生多余查询。
- 错误:认为 CNAME 可与 MX、NS 等记录共存;正确:CNAME 不能与其它数据共存(DNSSEC 记录除外),根域改用 A/ALIAS。
- 错误:用
ping 判断 DNS 是否正常;正确:ping 可能走 NSS 或缓存,直接用 dig 或 getent hosts。
- 错误:把 SERVFAIL 当成域名不存在;正确:SERVFAIL 多为上游或权威故障,NXDOMAIN 才是名字不存在。
- 错误:只查 A 记录;正确:服务可能只有 AAAA 或经 CNAME 指向,按需查多种类型。
- 错误:把
nslookup 的非权威回答当权威结果;正确:用 dig 看 flags 中是否有 aa。
相关命令
读完自测
- A 记录与 AAAA 记录的区别是什么?
- TTL 的作用是什么?
- SERVFAIL 与 NXDOMAIN 有什么区别?
答案
- A 记录映射 IPv4 地址,AAAA 记录映射 IPv6 地址。
- TTL 是记录在缓存中的有效秒数,决定修改后多久传播生效。
- NXDOMAIN 表示域名不存在,SERVFAIL 表示解析服务器处理失败。