首页/网络/协议速查/dig 常用查询与参数
DNS 与域名解析60 条

dig 常用查询与参数

排查 DNS 首选工具:+short 看结果、+noall +answer 看记录、@server 指定解析器、-t 指定类型、+tcp 强制 TCP。

协议速查网络更新于 2026-10-13

dig 是什么

dig 是排查 DNS 的首选命令行工具:它直接构造查询报文并把响应逐段展示出来,既能指定解析器,也能指定记录类型,还能强制走特定传输协议。相比只输出结果的简化命令,它把问题段、答案段与授权段都打印出来,因此既能解答「解析成什么」,也能解答「是谁回答的、为什么是这个答案」。排查解析异常时,先看清楚是哪一段给出了结果,往往比反复刷新解析器更有效。

基本信息

定位命令行 DNS 查询工具,常见于 Unix 系系统
默认行为向系统配置的解析器发起查询,并声明希望递归
关键能力指定解析器、指定记录类型、强制传输协议、迭代查询
输出包含问题段、答案段、授权段与统计信息
注意不读取本地记录文件,与系统解析链路结果可能不同

典型使用场景

  • 确认某个域名当前解析到什么地址,以及缓存时间是多少
  • 指定公共解析器查询,排除本地解析器的缓存干扰
  • 直接向权威服务器提问,验证配置是否已经生效
  • 逐个类型检查邮件、文本、授权类记录,定位缺失的记录
  • 跟踪完整委派链,判断问题出在哪一级

高频用法

高频用法
dig +short example.com A   # 只输出结果,适合写脚本
dig @223.5.5.5 example.com MX +noall +answer   # 指定解析器,只看答案段
dig -t TXT _dmarc.example.com +short   # 按类型查询,常用于邮件相关校验
dig +tcp example.com   # 强制使用连接式传输,排查响应被截断的情况
dig +norecurse @ns1.example.com example.com SOA   # 直接问权威本身,不要求递归
dig +trace example.com   # 从根开始逐级迭代,看清委派链

常用参数

参数作用
只输出结果脚本友好,但看不到缓存时间与回答者
只要答案段去掉问题段与统计,输出更干净
请求安全扩展一并查看签名相关信息与验证标记
调整缓冲大小控制单次响应能承载的报文体积
超时与重试控制等待时长与尝试次数,弱网排查常用
跳过递归直接向指定服务器提问,验证真实配置

排查要点

  • 结果里没有答案段,说明该名字没有对应类型的记录,而不是查询失败
  • 答案段很短且带别名,说明查询跟随了别名,需要再看一次目标域名
  • 带授权段但没有答案,说明这个服务器不是该区域的权威,它在指路
  • 响应被截断时改用连接式传输重试,避免拿到不完整结果
dig 不读取本地记录文件,也不走系统解析链路,因此它与系统命令的结果不一致是正常现象:系统命令会优先使用本地记录,dig 只看 DNS 里的真实记录。
迭代查询会直接向根与各级授权服务器发问,部分网络会拦截这类流量,结果为空并不代表域名有问题。迭代结果只反映你这条链路的视角,不能替代身边解析器的真实行为。

四个排查习惯

  • 先看答案段有没有内容,再讨论是不是缓存问题,能省掉大量无效猜测
  • 怀疑缓存时指定另一个解析器做对比,快速区分是本地影响还是全局问题
  • 验证配置是否生效就直接问权威服务器,不要反复刷新本地缓存等待
  • 批量查询加上超时与重试参数,避免脚本在弱网环境下长时间挂住

易错点

  • 把「答案段为空」当成解析服务故障,实际只是该类型记录没有配置
  • 只看最终结果就判断配置已生效,忽略了各级缓存仍在返回旧值
  • 迭代查询在受限网络里失败,被误判为域名解析异常
  • 未加超时与重试参数做批量查询,弱网下脚本长时间挂住

数据来源与参考

  • man 1 dig(BIND 9)
  • RFC 1035

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌