日常排查域名解析问题,用 dig 命令看原始 DNS 应答是最直接、最干净的方式,它能告诉你解析链路里每一步的真实情况。
很多人上手 dig 时,只记得 dig baidu.com 然后看两眼 Answer 段,觉得够用了,dig 的输出信息量很大,要高效用它做域名诊断,关键得懂查询参数、结果分段含义,以及如何用 trace 模式追踪完整解析路径,这篇文章把 dig 的常用玩法拆开讲清楚,你照着敲命令,就能少走弯路。
dig命令详解:常用参数与输出格式解读
先说基本用法。dig 自带一套默认查询规则,直接输入域名就能拿到 A 记录,但日常诊断中,经常需要加参数控制输出。
核心参数速查
+short:只显示结果,适合脚本调用或快速确认 IP。dig baidu.com +short会直接列出 A 记录值。+noall +answer:只打印 Answer 段,去掉 Header、Question、Authority 等花哨信息,这是排查时最常用的组合,干净利落。+trace:从根服务器开始,逐级追踪到权威服务器,这能看清域名解析在哪一层出了问题。+tcp:强制用 TCP 协议查询,UDP 被丢包或截断时,这个参数能绕过部分网络限制。@dns服务器IP:指定查询的 DNS 服务器。dig @8.8.8.8 baidu.com就是直接问 Google 公共 DNS。
输出结果分段拆解
dig baidu.com 默认输出四段,排查时每段都有说法。
- Header 段:看
status字段。NOERROR表示正常;NXDOMAIN说明域名根本不存在;SERVFAIL说明上游服务器处理失败,通常是配置问题;REFUSED表示服务器拒绝查询。 - Question 段:确认你查的域名和记录类型有没有写错,比如查 MX 却打成 A 记录,这里会原样反映出来。
- Answer 段:这是核心结果,看 TTL 值能判断缓存时长,看记录类型能确认是 A、CNAME 还是 MX 等。
- Authority 段:显示权威服务器信息,通常用来确认最终解析源头。
- Additional 段:附带信息,比如权威服务器的 IP,用于加速下次查询。
实操建议:如果只想跟别人同步一个简单结论,用
dig baidu.com +short就够;要排查问题,就用+noall +answer配合+trace,别一上来就把默认输出全屏截图,信息太杂反而不好定位。
dig查询域名解析记录的类型对照
dig 不仅能查 A 记录,几乎能查所有 DNS 记录类型,排查邮箱问题要看 MX,验证站点所有权要看 TXT,调整线路要看 CNAME。
查询时用 -t 参数指定类型,dig baidu.com -t MX,把 -t 和 +noall +answer 搭配使用,输出会非常清爽。
常见记录类型选型对照表:
| 查询场景 | 记录类型 | 命令示例 |
|---|---|---|
| 域名指向哪个 IP | A / AAAA | dig example.com -t A |
| 邮件服务器在哪 | MX | dig example.com -t MX |
| 别名指向哪里 | CNAME | dig www.example.com -t CNAME |
| 域名是否被恶意指走 | NS | dig example.com -t NS |
| 验证域名所有权 | TXT | dig example.com -t TXT |
| SPF 邮件防伪 | TXT | dig example.com -t TXT |
场景示例:收到“邮箱发不出去”的告警,先查
dig 你的域名 -t MX +short,看返回的邮件服务器主机名是不是你设定的那个,如果返回了一串看不懂的地址,可能 MX 记录被改或者解析失效了。
用dig追踪DNS解析故障的完整操作流程
域名打不开,先别急着怪服务器,用 dig 按下面步骤层层排查,能快速缩小范围。
第一步:确认本地 DNS 解析是否正常
dig 你的域名 +noall +answer
如果这里返回正常 IP,说明你的本地 DNS 配置没问题,如果返回空或 NXDOMAIN,问题出在链路的上游。
第二步:直接问公共 DNS
dig @8.8.8.8 你的域名 +noall +answer dig @223.5.5.5 你的域名 +noall +answer
对比不同公共 DNS 的结果,能判断是不是你本地运营商 DNS 缓存了脏数据,比如本地解析返回一个陌生 IP,而 8.8.8.8 返回正常,那大概率是本地 DNS 被污染了。
第三步:用 trace 模式看完整解析链
dig 你的域名 +trace
这个命令会依次显示根服务器、顶级域服务器、权威服务器的响应,每一步都有响应时间,你能直观看到瓶颈在哪,业内专家指出,多数递归解析变慢的问题,都出在权威服务器这一跳上。
第四步:检查 TTL 与缓存行为
看 +noall +answer 输出里的 TTL 值,TTL 设置过短会增加解析压力,过长则影响域名迁移生效速度,如果刚改完解析,但本地还是旧 IP,直接用 dig @8.8.8.8 强制绕过本地缓存来验证。
常见错误码排查思路
NXDOMAIN:域名本身不存在,检查是不是拼写错,或者域名注册已过期。
SERVFAIL:权威服务器挂了或者配置出错,联系 DNS 服务商。
REFUSED:服务器拒绝了查询,可能是防火墙策略或 ACL 限制。
场景示例:网站突然无法访问,用
dig 域名 +trace发现解析到权威服务器后返回 REFUSED,此时登录域名管理后台,检查 NS 记录是否被误删,或者 DNSSEC 配置是否失配,DNS 根服务器和权威服务器之间如果有 DNSSEC 签名不匹配,业界通常用delv工具辅助验证,但 dig 的+dnssec参数也能看出部分端倪。
dig和nslookup区别,到底选哪个工具
很多老教程还在推荐 nslookup,但实际做诊断,dig 的信息密度和灵活性强太多,做一次 DNS 故障排查,dig 一步到位的输出,nslookup 得敲两三条命令才凑得齐。
对比总结:
| 维度 | dig | nslookup |
|---|---|---|
| 显示格式 | 结构化,适合脚本解析 | 输出较散,不易读 |
| trace 功能 | +trace 一键追踪 |
需 -debug 配合,效果一般 |
| 批量查询 | 支持并行参数 | 不支持,只能单条执行 |
| 适用场景 | 专业诊断、自动化监控 | 简单单次查询 |
行业共识认为,凡是要写进工单或截图给同事看的排查过程,用 dig 会显得专业且逻辑清晰,nslookup 更适合在老旧 Windows 服务器上用用,日常排查建议直接用 dig。
域名查询的高频场景与批量诊断思路
实际工作中,查询通常集中在几个典型场景,学会组合参数能省很多时间。
批量查询多个域名
脚本里循环调用 dig,配合 +short 和 +time=3 +tries=2 设置超时,避免单个域名卡住整个循环。
for domain in site1.com site2.com site3.com; do echo "$domain -> $(dig $domain +short +time=3 +tries=2)" done
验证 DNS 解析是否被运营商劫持
用 dig @8.8.8.8 和 dig @你的运营商DNS 分别查询对比,如果差异明显,且运营商 DNS 返回的 IP 不是你配置的,说明链路存在异常插曲,多数情况下,这种差异源于本地缓存了旧数据,可以稍等一段时间后重试。
检查 CNAME 链是否完整
直接用 dig www.example.com -t CNAME +noall +answer 看链路,如果返回的 CNAME 指向的域名本身又需要 CNAME 解析,需要继续查直到拿到 A 记录,确认链上没有断点。
Q&A
dig命令怎么查域名解析记录?
用 -t 参数指定类型,dig baidu.com -t MX 查邮件记录,dig baidu.com -t TXT 查验证文本,dig baidu.com -t NS 查域名服务器列表,建议加上 +noall +answer 只显示结果,避免无关信息干扰。
解析记录不生效,怎么确认是不是缓存问题?
先 dig 域名 @8.8.8.8 +short 查公共 DNS 的结果,再用 dig 域名 +short 查本地解析结果,两者不一致,基本就是本地缓存了旧数据,可以用 dig 域名 +trace 追踪权威服务器上的实时数据,确认修改其实已经生效。
没有管理员权限能安装 dig 吗?
多数 Linux 发行版自带 dig,通常位于 dnsutils 或 bind-utils 包中,没有 root 权限时,可以用本地编译的二进制,或者借助在线 DNS 查询工具临时应急,但诊断效果会打折扣。
日常做域名解析诊断,dig 的输出结果几乎可以作为第一手证据用,掌握了 +short、+noall +answer、+trace 和 -t 类型指定这四板斧,配合对 TTL、权威服务器、缓存机制的基本理解,大部分域名解析问题都能在几分钟内定位到具体环节,把 dig 的查询逻辑内化成习惯,DNS 故障对你来说就不再是黑盒。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/925195.html


评论列表(3条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是你的域名部分,给了我很多新的思路。感谢分享这么好的内容!
@快乐cyber707:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是你的域名部分,给了我很多新的思路。感谢分享这么好的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于你的域名的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!