Linux DNS 查询完全指南:从 dig 入门到精通

📅 2026/8/3 9:17:38
Linux DNS 查询完全指南:从 dig 入门到精通
Linux DNS 查询完全指南从dig入门到精通掌握 Linux 下最强大的 DNS 排查工具成为网络排障专家前言为什么需要了解 DNS 查询DNS域名系统是互联网的“电话簿”它将人类易记的域名如www.example.com转换为机器可读的 IP 地址如93.184.216.34。当网站无法访问、解析缓慢或怀疑被劫持时一个高效的 DNS 查询工具就是你的“照妖镜”。在 Linux 生态中digDomain Information Groper毫无疑问是 DNS 查询领域的“瑞士军刀”——功能最全、细节最丰富、输出最可控。本文将带你从零开始全面掌握dig的使用同时简要介绍其他辅助工具。一、环境准备安装dig1.1 检查是否已安装whichdig# 或dig-v1.2 各发行版安装命令发行版命令Ubuntu / Debiansudo apt install dnsutils -yCentOS / RHEL / Fedorasudo yum install bind-utils -y或sudo dnf install bind-utils -yAlpine Linuxapk add bind-toolsArch Linuxsudo pacman -S bind-tools二、dig命令核心语法dig[DNS服务器][域名][记录类型][选项参数]参数部分说明示例DNS服务器指定查询的目标 DNS 服务器默认使用/etc/resolv.conf8.8.8.8域名要查询的目标域名www.baidu.com记录类型DNS 资源记录类型默认 AA、AAAA、MX、CNAME、NS、TXT、SOA选项参数控制输出格式与行为trace、short、json三、最常用的 DNS 记录类型全解析类型全称作用说明查询示例AAddress返回域名对应的 IPv4 地址dig example.com AAAAAIPv6 Address返回域名对应的 IPv6 地址dig example.com AAAACNAMECanonical Name返回域名的别名指向另一个规范域名dig www.example.com CNAMEMXMail Exchange返回邮件服务器地址及优先级数值越小优先级越高dig example.com MXNSName Server返回该域名的权威名称服务器dig example.com NSTXTText返回文本记录常用于 SPF、DKIM、域名验证等dig example.com TXTSOAStart of Authority返回区域权威信息主 DNS、管理员邮箱、刷新时间等dig example.com SOAPTRPointer反向解析根据 IP 查询对应的域名dig -x 8.8.8.8SRVService返回特定服务的服务器位置常用于 SIP、LDAPdig _sip._tcp.example.com SRVCAACertification Authority返回允许为域名签发证书的 CA 列表dig example.com CAAANYAll Types返回所有类型的记录⚠️ 现代 DNS 多已禁用dig example.com ANY四、dig输出结果详解逐段解读执行dig baidu.com后输出通常包含以下 6 个部分4.1 Header头信息; DiG 9.16.1-Ubuntu baidu.com ;; global options: cmd显示使用的dig版本、查询的目标域名。global options: cmd表示当前启用的全局选项。4.2 OPT PSEUDOSECTIONEDNS 扩展段;; Got answer: ;; -HEADER- opcode: QUERY, status: NOERROR, id: 12345 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232status: NOERROR查询成功其他状态NXDOMAIN 域名不存在SERVFAIL 服务器故障。flagsqr查询响应、rd期望递归、ra服务器支持递归。udp: 1232支持的最大 UDP 数据包大小。4.3 QUESTION SECTION问题段;; QUESTION SECTION: ;baidu.com. IN A这里显示你问了什么查询baidu.com的 A 记录。4.4 ANSWER SECTION应答段⭐ 核心;; ANSWER SECTION: baidu.com. 210 IN A 110.242.68.66 baidu.com. 210 IN A 110.242.68.4210TTLTime To Live单位秒表示这条记录在本地缓存的有效时长。INInternet 类固定。A记录类型。IP 地址最终的解析结果。4.5 AUTHORITY SECTION权威段;; AUTHORITY SECTION: baidu.com. 64810 IN NS ns4.baidu.com. baidu.com. 64810 IN NS ns7.baidu.com.显示该域名由哪些权威 DNS 服务器负责管理。4.6 ADDITIONAL SECTION附加段;; ADDITIONAL SECTION: ns4.baidu.com. 64810 IN A 112.80.248.73 ns7.baidu.com. 64810 IN A 180.76.76.76提供权威 NS 服务器对应的 IP 地址帮助减少额外查询。4.7 Footer统计段;; Query time: 23 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Aug 02 10:30:00 CST 2026 ;; MSG SIZE rcvd: 112Query time查询耗时毫秒反映 DNS 服务器的响应速度。SERVER实际响应的 DNS 服务器地址。MSG SIZE响应数据包大小。五、核心参数详解按使用频率排序5.1short—— 输出精简结果只返回最终的 IP 地址适合脚本处理和快速查看$digbaidu.com short110.242.68.66110.242.68.45.2trace—— 完整追踪解析路径 模拟 DNS 递归解析全过程从根服务器 → 顶级域服务器 → 权威服务器直至拿到最终答案。这是排查 DNS 链路的“终极武器”digwww.jd.com trace输出示例解读. 518400 IN NS a.root-servers.net. # 第一步根服务器 . 518400 IN NS b.root-servers.net. ;; Received 525 bytes from 192.168.1.1#53 in 2 ms com. 172800 IN NS a.gtld-servers.net. # 第二步.com 顶级域 com. 172800 IN NS b.gtld-servers.net. ;; Received 1174 bytes from 198.41.0.4#53 in 180 ms jd.com. 86400 IN NS ns1.jd.com. # 第三步jd.com 权威 DNS jd.com. 86400 IN NS ns2.jd.com. ;; Received 113 bytes from 192.48.79.30#53 in 86 ms www.jd.com. 30 IN A 123.125.114.144 # 最终答案 ;; Received 63 bytes from 123.125.114.144#53 in 25 ms5.3noall answer—— 只显示应答部分过滤掉杂乱的辅助信息只看最终解析结果digbaidu.com noall answer# 输出只包含 ANSWER SECTION5.4stats—— 显示统计信息显示查询耗时、服务器响应时间等digbaidu.com stats5.5json—— JSON 格式输出便于程序解析需要较新版本的digdigbaidu.com json5.6tcp—— 强制使用 TCP 协议默认使用 UDP某些场景如 DNSSEC 或大响应包需要 TCPdigbaidu.com tcp5.7-x—— 反向查询IP → 域名根据 IP 地址反查对应的域名dig-x8.8.8.8# 输出dns.google.5.8-f—— 批量查询从一个文件中读取多个域名一次性查询echobaidu.comdomains.txtechogoogle.comdomains.txtdig-fdomains.txt5.9dnssec—— DNSSEC 验证查询并验证 DNSSEC 签名digsigfail.verteiltesysteme.net dnssec# 会显示签名验证失败信息digsigok.verteiltesysteme.net dnssec# 会显示签名验证成功信息六、实战场景示例场景1排查本地 DNS 是否有问题# 对比本地 DNS 和公共 DNS 的结果digbaidu.com# 使用本地 /etc/resolv.conf 中的 DNSdig8.8.8.8 baidu.com# 使用 Google DNSdig1.1.1.1 baidu.com# 使用 Cloudflare DNS# 如果结果不同说明本地 DNS 可能被污染或缓存异常场景2检查 DNS 解析是否被劫持# 用 trace 追踪完整路径看是否被中间节点篡改digwww.google.com trace# 如果权威服务器返回的结果与最终答案不符说明存在劫持场景3检查新添加的域名解析是否生效# 直接查询权威 DNS 服务器跳过本地缓存digns1.yourdomain.com yourdomain.com A# 如果权威服务器返回新记录说明已生效场景4测量 DNS 查询延迟digbaidu.com stats|grepQuery time# 输出;; Query time: 23 msec场景5批量检查多个域名的 IPfordomaininbaidu.com sina.com163.com;doecho-n$domain: digshort$domaindone场景6CDN 节点归属查询反向解析dig-x123.125.114.144# 输出spider.123.125.114.144 → 百度蜘蛛的 IP场景7检查邮件服务器配置# 查询 MX 记录dig163.com MX short# 输出10 163mx01.mxmail.netease.com.# 查询 SPF 记录TXT 类型的一部分dig163.com TXT short|grepspf场景8域名迁移验证# 迁移前备份所有记录digexample.com ANYdns_backup.txt# 迁移后对比 NS 记录digexample.com NS short七、高级技巧~/.digrc配置文件在用户目录下创建.digrc文件设置默认参数每次执行dig时自动生效echonoall answer stats~/.digrc之后每次执行dig baidu.com都会自动应用noall answer stats只显示答案和统计信息省去手动敲参。八、dig查询结果状态码速查表状态码含义常见原因NOERROR查询成功正常响应NXDOMAIN域名不存在域名拼写错误或未注册SERVFAIL服务器故障DNS 服务器配置错误或上游不可达REFUSED拒绝查询服务器策略拒绝如 ACL 限制FORMERR格式错误查询报文格式有误NOTIMP未实现服务器不支持该查询类型九、其他 DNS 查询工具简要介绍除了digLinux 下还有其他常用 DNS 查询工具各有侧重。9.1nslookup—— 交互式查询工具系统自带支持交互式和非交互式两种模式。# 非交互式直接查询nslookupbaidu.com# 指定 DNS 服务器nslookupbaidu.com8.8.8.8# 查询 MX 记录nslookup-typeMX163.com# 交互式模式输入 exit 退出nslookupsettypeMX163.comexit适用场景快速查询、交互式调试。9.2host—— 精简版查询工具系统自带输出简洁适合快速查看。# 基础查询hostbaidu.com# 指定类型host-tMX163.com# 反向查询host8.8.8.8# 查询所有记录host-abaidu.com适用场景快速确认域名是否有解析。9.3whois—— 域名注册信息查询查询域名的注册人、注册商、创建时间、过期时间等。# 安装Ubuntu/Debiansudoaptinstallwhois-y# 查询域名信息whois baidu.com适用场景查询域名归属、过期时间、联系信息。9.4dnsrecon—— 安全审计工具 专用于 DNS 枚举和信息收集的安全工具可进行区域传输、子域名爆破等。# 安装sudoaptinstalldnsrecon-y# 基础枚举dnsrecon-dbaidu.com# 字典爆破子域名dnsrecon-dbaidu.com-D/usr/share/wordlists/subdomains.txt适用场景安全测试、子域名发现、DNS 配置审计。9.5 在线 DNS 查询工具无需安装浏览器即可使用适合临时查询。工具名称特点站长工具 DNS 查询国内访问快支持多地解析对比DNSPod 公共 DNS 诊断腾讯出品诊断工具完善MXToolbox国际知名支持 DNS、邮件、黑名单等全方位检测Google Admin ToolboxGoogle 官方工具包含 Dig、DNS 检查等适用场景临时查询、跨地域解析对比、非 Linux 环境。9.6 各工具对比总结工具详细程度适用场景系统自带dig⭐⭐⭐⭐⭐专业深度排查、链路追踪❌需安装nslookup⭐⭐⭐日常快速查询、交互调试✅host⭐⭐快速确认有无解析✅whois⭐⭐查询域名注册信息❌需安装dnsrecon⭐⭐⭐⭐安全测试、子域名枚举❌需安装在线工具⭐⭐临时查询、跨地域对比无需安装十、常见报错与解决方法报错信息原因解决方法;; connection timed out; no servers could be reachedDNS 服务器不可达检查网络连接或换用8.8.8.8;; Got answer: SERVFAILDNS 服务器无法解析该域名可能域名不存在或服务器配置错误;; Got answer: NXDOMAIN域名不存在检查域名是否拼写错误;; Got answer: REFUSED服务器拒绝查询换用公共 DNS如 8.8.8.8dig: command not found未安装 dig参照第一章安装dnsutils总结dig是 Linux 下 DNS 排障的“第一利器”其核心优势在于输出可控通过short、noall answer等参数精准控制输出。链路追踪trace是诊断解析链问题的核心武器。批量处理-f支持批量查询配合脚本实现自动化。协议支持支持 UDP/TCP、EDNS、DNSSEC 等高级特性。配合nslookup快速查询、whois注册信息和在线工具跨地域对比你可以应对日常工作中 99% 的 DNS 排查场景。如果本文对你有帮助欢迎点赞、收藏、转发