dig 命令简介
dig 用于查询 DNS 名称服务器,获取关于域名或 IP 地址的 DNS 记录信息,它可以用来查询各种类型的 DNS 记录,如 A、AAAA、MX、NS、TXT、CNAME 等,并可以显示查询的详细过程,包括从根服务器到权威服务器的完整解析路径。

基本语法
dig 命令的基本语法如下:
dig @<DNS服务器> <域名> [查询类型] [查询选项]
@<DNS服务器>: 可选,指定要查询的 DNS 服务器的 IP 地址或域名,如果省略,dig会使用系统在/etc/resolv.conf文件中配置的默认 DNS 服务器。<域名>: 必需,你想要查询的域名,www.google.com。[查询类型]: 可选,指定要查询的 DNS 记录类型,默认是A记录(IPv4 地址),其他常见类型包括AAAA(IPv6),MX(邮件交换),NS(名称服务器),TXT(文本),CNAME(别名),SOA(授权记录) 等。[查询选项]: 可选,用于控制dig的行为,-x(反向查询),-t(指定查询类型),-p(指定端口) 等。
常用示例
示例 1:查询 A 记录(默认查询)
这是最简单的用法,查询 www.google.com 的 IPv4 地址。
dig www.google.com
输出解读:
HEADER: 显示请求和响应的基本信息。QUESTION SECTION: 显示你查询的问题。ANSWER SECTION: 显示服务器返回的答案,这里是www.google.com的 A 记录。AUTHORITY SECTION: 显示该域名的权威名称服务器。ADDITIONAL SECTION: 显示一些额外的辅助信息,比如权威服务器的 IP 地址。QUERY TIME: 查询耗时。SERVER: 使用的 DNS 服务器。WHEN: 查询时间。MSG SIZE: 请求和响应消息的大小。
示例 2:查询特定类型的记录
使用 -t 选项或直接在域名后指定记录类型来查询 MX 邮件记录。

# 查询 google.com 的 MX 记录 dig google.com MX # 或者使用 -t 选项 dig -t MX google.com
示例 3:查询 NS 记录
查询一个域名的权威名称服务器。
dig example.com NS
示例 4:查询 TXT 记录
常用于验证域名所有权、SPF 记录、DKIM 记录等。
dig google.com TXT
示例 5:反向查询(IP 到域名)
使用 -x 选项进行反向 DNS 查询,将 IP 地址解析为域名。
# 查询 8.8.8.8 对应的域名 dig -x 8.8.8.8
示例 6:指定查询的 DNS 服务器
使用 符号后面跟着 DNS 服务器的 IP 地址来指定查询目标,这对于测试特定服务器的响应非常有用。

# 使用 Google 的公共 DNS 服务器查询 @8.8.8.8 www.google.com # 使用 Cloudflare 的公共 DNS 服务器查询 @1.1.1.1 www.google.com
示例 7:显示更简洁的输出
默认输出非常详细,如果你只想看答案部分,可以使用 +short 选项。
dig www.google.com +short
输出可能如下:
250.196.68
142.250.196.80
142.250.196.72
...
示例 8:跟踪 DNS 解析过程
dig 的一个强大功能是显示完整的解析路径,默认情况下,它会显示从根服务器开始,一直到最终权威服务器的查询过程,你不需要做任何特殊设置,默认输出就包含了这部分信息(ANSWER SECTION 之上)。
如果你想强制显示这个跟踪过程,或者更清晰地查看,可以使用 +trace 选项。
dig google.com +trace
这个命令会首先查询根服务器(),然后根据根服务器的响应查询顶级域服务器(.com),再根据 .com 服务器的响应查询 google.com 的权威服务器,最后获取最终的记录。
示例 9:查询域名的 SOA 记录
SOA (Start of Authority) 记录包含了关于域名的管理信息,如主名称服务器、管理员邮箱、序列号等。
dig example.com SOA
示例 10:显示所有记录
使用 any 查询类型可以尝试从服务器获取所有它能返回的记录类型。
dig google.com ANY
注意: 由于安全和隐私原因,许多 DNS 服务器会拒绝 ANY 查询或返回一个有限的响应。
常用选项总结
| 选项 | 描述 | 示例 |
|---|---|---|
+short |
以简洁格式显示,只返回答案部分。 | dig google.com +short |
+trace |
跟踪 DNS 解析的完整路径,从根服务器开始。 | dig google.com +trace |
+noall |
禁止显示所有部分,通常与 +[section] 结合使用。 |
dig google.com +noall +answer |
+[section] |
只显示指定的部分。+answer (答案), +authority (权威), +additional (附加)。 |
dig google.com +noall +authority |
+time=[秒数] |
设置查询超时时间(默认 5 秒)。 | dig google.com +time=2 |
+tries=[次数] |
设置查询重试次数(默认 3 次)。 | dig google.com +tries=1 |
-x |
执行反向 DNS 查询。 | dig -x 8.8.8.8 |
-t <类型> |
指定查询的记录类型。 | dig -t MX google.com |
-p <端口> |
指定 DNS 服务器使用的端口号(默认 53)。 | dig @localhost -p 5353 google.com |
-4 |
强制使用 IPv4 进行查询。 | dig -4 google.com |
-6 |
强制使用 IPv6 进行查询。 | dig -6 google.com |
dig vs. nslookup
虽然 nslookup 也是一个常用的 DNS 查询工具,但 dig 通常更受青睐,原因如下:
| 特性 | dig |
nslookup |
|---|---|---|
| 输出格式 | 结构化、清晰、易于脚本解析。 | 两种模式:交互式和非交互式,输出格式不统一。 |
| 功能 | 功能更强大,选项更丰富(如 +trace, +short)。 |
功能相对基础,高级功能较少。 |
| 默认行为 | 默认显示完整的、详细的解析过程。 | 默认只显示最终答案,需要额外操作才能看到解析路径。 |
| 社区 | 在系统管理员和开发者中更流行,文档和社区支持更好。 | 是一个较老的工具,逐渐被 dig 和 host 取代。 |
dig 是一个功能极其强大的 DNS 诊断工具,掌握 dig 命令对于网络管理员、开发人员以及任何需要排查 DNS 问题的人来说都至关重要,从简单的 A 记录查询到复杂的 +trace 跟踪,dig 都能提供清晰、准确的信息,建议熟练掌握其基本用法和常用选项,这将极大提高你解决 DNS 相关问题的效率。
