dig
dig
命令参数大全
dig
(Domain Information Groper) 是一个强大的命令行工具,用于查询 DNS 域名服务器。它提供了高度的灵活性和详细的输出,是网络管理员和开发者诊断 DNS 问题的首选工具。
1. 基本语法
1 | dig [@server] [name] [type] [options] |
- **
@server
(可选)**:指定要查询的 DNS 服务器的 IP 地址或主机名。- 示例:
@8.8.8.8
(Google Public DNS),@1.1.1.1
(Cloudflare DNS)
- 示例:
- **
name
(必选)**:要查询的域名。- 示例:
example.com
,www.google.com
- 示例:
- **
type
(可选)**:要查询的 DNS 记录类型。如果不指定,默认查询A
记录。- 示例:
A
,AAAA
,MX
,NS
,CNAME
,TXT
,SRV
,SOA
,PTR
,ANY
- 示例:
- **
options
(可选)**:控制dig
命令行为的各种选项,通常以+
开头。
2. 常用记录类型 (type
)
这些参数用于指定你希望 dig
查询的 DNS 记录类型。
- **
A
**:查询域名的 IPv4 地址记录。1
dig example.com A
- **
AAAA
**:查询域名的 IPv6 地址记录。1
dig example.com AAAA
- **
MX
**:查询邮件交换记录,用于指定负责接收邮件的服务器。1
dig example.com MX
- **
NS
**:查询域名服务器记录,用于指定负责该域名的权威 DNS 服务器。1
dig example.com NS
- **
CNAME
**:查询规范名称记录,用于将一个域名指向另一个域名(别名)。1
dig www.example.com CNAME
- **
TXT
**:查询文本记录,用于存储任意文本信息,常用于 SPF、DKIM、DMARC 等邮件验证和域名所有权验证。1
dig example.com TXT
- **
SRV
**:查询服务记录,用于指定特定服务的主机和端口。1
dig _sip._tcp.example.com SRV
- **
SOA
**:查询起始授权机构记录,包含域名的基本管理信息。1
dig example.com SOA
- **
PTR
**:查询指针记录,用于反向 DNS 查询(将 IP 地址解析为域名)。1
dig -x 192.0.2.1
- **
ANY
**:尝试查询所有可用的记录类型。并非所有 DNS 服务器都支持或完整返回。1
dig example.com ANY
- **
AXFR
**:区域传送,用于获取整个 DNS 区域的所有记录。通常只允许授权的次级 DNS 服务器进行,且需要 TCP 连接。1
dig @ns1.example.com example.com AXFR
3. 控制输出的选项 (+options
)
这些选项用于控制 dig
命令的输出格式和详细程度。
- **
+short
**:只显示查询结果中最核心的信息(通常是 IP 地址)。非常适合脚本自动化。1
dig +short example.com
- **
+noall
**:禁用所有默认输出部分。通常与+answer
等选项结合使用。1
dig +noall +answer example.com
- **
+answer
**:显示应答部分。 - **
+question
**:显示问题部分。 - **
+authority
**:显示授权部分。 - **
+additional
**:显示附加部分。 - **
+stats
**:显示统计信息(查询时间、服务器等)。 - **
+nocomments
**:不显示注释行。 - **
+noquestion
**:不显示问题部分。 - **
+noauthority
**:不显示授权部分。 - **
+noadditional
**:不显示附加部分。 - **
+nostats
**:不显示统计信息。 - **
+nocmd
**:不显示dig
命令本身的信息(如版本号)。 - **
+multiline
**:以多行格式显示 SOA 和 RRSIG 记录,更易读。1
dig +multiline example.com SOA
4. 控制查询行为的选项 (+options
)
这些选项用于控制 dig
命令执行 DNS 查询的方式。
- **
+trace
**:启用追踪模式。dig
会从根服务器开始,一步步追踪到最终的权威服务器,显示完整的 DNS 解析路径。这对于诊断委派错误或了解解析过程非常有用。1
dig +trace example.com
- **
+norecurse
**:禁用递归查询。dig
只会向指定的服务器发送一次查询,如果该服务器没有缓存结果,它不会继续向上游查询。通常用于直接测试权威 DNS 服务器。1
dig +norecurse @ns1.example.com www.example.com
- **
+vc
或+tcp
**:强制使用 TCP 协议进行查询。默认情况下,dig
使用 UDP。当 DNS 响应过大(超过 UDP 限制)时,DNS 会自动回退到 TCP。区域传送 (AXFR
) 必须使用 TCP。1
dig +tcp example.com
- **
+ignore
**:忽略截断错误。如果 DNS 响应因过大而被截断,dig
默认会重试 TCP。此选项会强制dig
不重试。 - **
+domain=<domain>
**:设置一个默认的搜索域。如果查询的域名不是完全限定域名 (FQDN),会自动附加此域。1
dig +domain=example.com www
- **
+search
**:启用搜索列表查找。如果查询的域名不是 FQDN,dig
会尝试在/etc/resolv.conf
中定义的搜索列表中查找。 - **
+noadflag
**:不设置 AD (Authentic Data) 标志。 - **
+cdflag
**:设置 CD (Checking Disabled) 标志,表示不要求 DNSSEC 验证。 - **
+dnssec
**:请求 DNSSEC 相关记录 (RRSIG, DNSKEY)。这只是请求这些记录,不代表dig
客户端会执行完整的 DNSSEC 验证。1
dig +dnssec example.com A
- **
+sigchase
**:追踪 DNSSEC 签名链,验证 DNSSEC 签名。这需要安装并配置 DNSSEC 验证工具。 - **
+edns=<version>
**:指定 EDNS (Extension Mechanisms for DNS) 版本。 - **
+bufsize=<bytes>
**:设置 EDNS0 UDP 缓冲区大小。1
dig +bufsize=1200 example.com
- **
+timeout=<seconds>
**:设置查询超时时间。1
dig +timeout=2 example.com
- **
+retries=<number>
**:设置重试次数。1
dig +retries=1 example.com
5. 其他常用选项
- **
-x <IP address>
(反向查询)**:执行反向 DNS 查询,将 IP 地址解析为域名 (PTR 记录)。1
dig -x 192.0.2.1
- **
-f <file>
(从文件读取查询)**:从文件中读取查询列表,每行一个查询。1
dig -f queries.txt
- **
-p <port>
(指定端口)**:指定查询的 DNS 服务器端口,默认是 53。1
dig -p 5353 @localhost example.com
- **
-4
**:强制使用 IPv4。 - **
-6
**:强制使用 IPv6。 - **
-k <keyfile>
**:使用 TSIG (Transaction Signature) 密钥文件进行认证。 - **
-y <keyname:secret>
**:使用 TSIG 密钥字符串进行认证。 - **
-h
**:显示帮助信息。 - **
-v
**:显示dig
版本信息。
6. 组合使用示例
- 快速获取一个域名的 IPv4 和 IPv6 地址:
1
dig +short example.com A example.com AAAA
- 追踪域名解析过程并只显示应答部分:
1
dig +trace +noall +answer example.com
- 查询指定服务器的 MX 记录,并只显示短格式结果:
1
dig @8.8.8.8 example.com MX +short
- 反向查询 IP 地址,并只显示短格式结果:
1
dig -x 192.0.2.1 +short
dig
是一个功能极其强大的工具,它的输出虽然详细,但理解其结构后,能够帮助你深入了解 DNS 解析的每一个环节。对于网络工程师和系统管理员来说,熟练掌握 dig
是非常重要的技能。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 满杯是幸福 空杯是自由!
评论