用于 DNS 查找的 Linux DIG 命令示例
Dig 代表域信息探索器。
使用 dig 命令,您可以查询 DNS 名称服务器以执行与 DNS 查找相关的任务。本文解释了如何使用 dig 命令的 10 个示例。
1. 简单的 dig 命令用法(了解 dig 输出)
当您将域名传递给 dig 命令时,默认情况下它会显示 A 记录(被查询的站点的 IP 地址),如下所示。
在本例中,它在 dig 命令输出的“ANSWER SECTION”中显示 redhat.com 的 A 记录。
$ dig redhat.com
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62863
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3
;; QUESTION SECTION:
;redhat.com. IN A
;; ANSWER SECTION:
redhat.com. 37 IN A 209.132.183.81
;; AUTHORITY SECTION:
redhat.com. 73 IN NS ns4.redhat.com.
redhat.com. 73 IN NS ns3.redhat.com.
redhat.com. 73 IN NS ns2.redhat.com.
redhat.com. 73 IN NS ns1.redhat.com.
;; ADDITIONAL SECTION:
ns1.redhat.com. 73 IN A 209.132.186.218
ns2.redhat.com. 73 IN A 209.132.183.2
ns3.redhat.com. 73 IN A 209.132.176.100
;; Query time: 13 msec
;; SERVER: 209.144.50.138#53(209.144.50.138)
;; WHEN: Thu Jan 12 10:09:49 2012
;; MSG SIZE rcvd: 164
dig 命令输出包含以下部分:
- 标头:显示 dig 命令版本号、dig 命令使用的全局选项以及一些额外的标头信息。
- 问题部分:这将显示它向 DNS 提出的问题。即这是您的输入。由于我们说的是 'dig redhat.com',而 dig 命令使用的默认类型是 A 记录,因此在本节中表示我们要求的是 redhat.com 网站的 A 记录
- 答案部分:这将显示它从 DNS 收到的答案。即这是你的输出。这显示了redhat.com的A记录
- AUTHORITY SECTION:显示有权响应此查询的 DNS 名称服务器。基本上这会显示 redhat.com 的可用名称服务器
- 附加部分:这将显示在授权部分中列出的名称服务器的 IP 地址。
- 底部的 Stats 部分显示了一些 dig 命令统计信息,包括执行此查询所花费的时间
2. 仅显示 Dig 命令输出的 ANSWER SECTION
在大多数情况下,您只需要查看 dig 命令的“ANSWER SECTION”。因此,我们可以关闭所有其他部分,如下所示。
- +nocomments – 关闭注释行
- +noauthority - 关闭权限部分
- +noadditional – 关闭附加部分
- +nostats – 关闭统计部分
- +noanswer - 关闭答案部分(当然,你不会想要关闭答案部分)
以下 dig 命令仅显示 ANSWER SECTION。
$ dig redhat.com +nocomments +noquestion +noauthority +noadditional +nostats
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com +nocomments +noquestion +noauthority +noadditional +nostats
;; global options: +cmd
redhat.com. 9 IN A 209.132.183.81
我们可以使用 +noall 禁用所有部分(这也会关闭答案部分),而不是一一禁用所有我们不想要的部分,并添加仅显示答案部分的 +answer。
上面的命令也可以写成如下所示的简写形式,只显示ANSWER SECTION。
$ dig redhat.com +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com +noall +answer
;; global options: +cmd
redhat.com. 60 IN A 209.132.183.81
3. 使用 dig -t MX 查询 MX 记录
要查询 MX 记录,请将 MX 作为参数传递给 dig 命令,如下所示。
$ dig redhat.com MX +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com MX +noall +answer
;; global options: +cmd
redhat.com. 513 IN MX 5 mx1.redhat.com.
redhat.com. 513 IN MX 10 mx2.redhat.com.
您还可以使用选项 -t 传递查询类型(例如:MX),如下所示。
$ dig -t MX redhat.com +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t MX redhat.com +noall +answer
;; global options: +cmd
redhat.com. 489 IN MX 10 mx2.redhat.com.
redhat.com. 489 IN MX 5 mx1.redhat.com.
4. 使用 dig -t NS 查询 NS 记录
要查询 NS 记录,请使用 NS 类型,如下所示。
$ dig redhat.com NS +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com NS +noall +answer
;; global options: +cmd
redhat.com. 558 IN NS ns2.redhat.com.
redhat.com. 558 IN NS ns1.redhat.com.
redhat.com. 558 IN NS ns3.redhat.com.
redhat.com. 558 IN NS ns4.redhat.com.
您还可以使用选项 -t 传递查询类型(例如:NS),如下所示。
$ dig -t NS redhat.com +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t NS redhat.com +noall +answer
;; global options: +cmd
redhat.com. 543 IN NS ns4.redhat.com.
redhat.com. 543 IN NS ns1.redhat.com.
redhat.com. 543 IN NS ns3.redhat.com.
redhat.com. 543 IN NS ns2.redhat.com.
5. 使用 dig -t ANY 查看所有 DNS 记录类型
要查看所有记录类型(A、MX、NS 等),请使用 ANY 作为记录类型,如下所示。
$ dig redhat.com ANY +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com ANY +noall +answer
;; global options: +cmd
redhat.com. 430 IN MX 5 mx1.redhat.com.
redhat.com. 430 IN MX 10 mx2.redhat.com.
redhat.com. 521 IN NS ns3.redhat.com.
redhat.com. 521 IN NS ns1.redhat.com.
redhat.com. 521 IN NS ns4.redhat.com.
redhat.com. 521 IN NS ns2.redhat.com.
(或)使用 -t ANY
$ dig -t ANY redhat.com +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -t ANY redhat.com +noall +answer
;; global options: +cmd
redhat.com. 367 IN MX 10 mx2.redhat.com.
redhat.com. 367 IN MX 5 mx1.redhat.com.
redhat.com. 458 IN NS ns4.redhat.com.
redhat.com. 458 IN NS ns1.redhat.com.
redhat.com. 458 IN NS ns2.redhat.com.
redhat.com. 458 IN NS ns3.redhat.com.
6. 使用 dig +short 查看 Short 输出
要仅查看网站的 IP 地址(即 A 记录),请使用如下所示的短格式选项。
$ dig redhat.com +short
209.132.183.81
您还可以使用 +short 选项指定要查看的记录类型。
$ dig redhat.com ns +short
ns2.redhat.com。
ns3.redhat.com。
ns1.redhat.com。
ns4.redhat.com。
7. 使用 dig -x 进行 DNS 反向查找
使用 dig -x 使用 ip 地址执行 DNS 反向查找,如下所示
例如,如果您只有一个外部 IP 地址并想知道属于它的网站,请执行以下操作。
$ dig -x 209.132.183.81 +short
www.redhat.com.
要查看 DNS 反向查找的完整详细信息,请删除 +short 选项。
$ dig -x 209.132.183.81
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> -x 209.132.183.81
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62435
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3
;; QUESTION SECTION:
;81.183.132.209.in-addr.arpa. IN PTR
;; ANSWER SECTION:
81.183.132.209.in-addr.arpa. 600 IN PTR www.redhat.com.
;; AUTHORITY SECTION:
183.132.209.in-addr.arpa. 248 IN NS ns2.redhat.com.
183.132.209.in-addr.arpa. 248 IN NS ns1.redhat.com.
183.132.209.in-addr.arpa. 248 IN NS ns3.redhat.com.
183.132.209.in-addr.arpa. 248 IN NS ns4.redhat.com.
;; ADDITIONAL SECTION:
ns1.redhat.com. 363 IN A 209.132.186.218
ns2.redhat.com. 363 IN A 209.132.183.2
ns3.redhat.com. 363 IN A 209.132.176.100
;; Query time: 35 msec
;; SERVER: 209.144.50.138#53(209.144.50.138)
;; WHEN: Thu Jan 12 10:15:00 2012
;; MSG SIZE rcvd: 193
8. 使用特定的 DNS 服务器 使用 dig @dnsserver
默认情况下,dig 使用 /etc/resolv.conf 文件中定义的 DNS 服务器。
如果您想使用不同的 DNS 服务器来执行查询,请在命令行中将其指定为 @dnsserver。
以下示例使用 ns1.redhat.com 作为 DNS 服务器来获取答案(而不是使用 /etc/resolv.conf 文件中的 DNS 服务器)。
$ dig @ns1.redhat.com redhat.com
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> @ns1.redhat.com redhat.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20963
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;redhat.com. IN A
;; ANSWER SECTION:
redhat.com. 60 IN A 209.132.183.81
;; AUTHORITY SECTION:
redhat.com. 600 IN NS ns1.redhat.com.
redhat.com. 600 IN NS ns4.redhat.com.
redhat.com. 600 IN NS ns3.redhat.com.
redhat.com. 600 IN NS ns2.redhat.com.
;; ADDITIONAL SECTION:
ns1.redhat.com. 600 IN A 209.132.186.218
ns2.redhat.com. 600 IN A 209.132.183.2
ns3.redhat.com. 600 IN A 209.132.176.100
ns4.redhat.com. 600 IN A 209.132.188.218
;; Query time: 160 msec
;; SERVER: 209.132.186.218#53(209.132.186.218)
;; WHEN: Thu Jan 12 10:22:11 2012
;; MSG SIZE rcvd: 180
9. 使用 dig -f(和命令行)进行批量 DNS 查询
使用数据文件查询多个网站:
您可以根据文件中的数据执行批量 DNS 查询。
首先,创建一个包含您要查询的网站的示例 names.txt 文件。
$ vi names.txt
redhat.com
centos.org
接下来,执行如下所示的 dig -f,它将对 names.txt 文件中列出的网站进行 DNS 查询并显示输出。
$ dig -f names.txt +noall +answer
redhat.com. 60 IN A 209.132.183.81
centos.org. 60 IN A 72.232.194.162
您还可以将记录类型与 -f 选项结合使用。以下示例显示位于 names.txt 文件中的多个网站的 MX 记录。
$ dig -f names.txt MX +noall +answer
redhat.com. 600 IN MX 10 mx2.redhat.com.
redhat.com. 600 IN MX 5 mx1.redhat.com.
centos.org. 3600 IN MX 10 mail.centos.org.
从 dig 命令行查询多个网站:
您还可以从 dig 命令行查询多个网站,如下所示。以下示例从命令行查询 redhat.com 的 MX 记录和 centos.org 的 NS 记录
$ dig redhat.com mx +noall +answer centos.org ns +noall +answer
; <<>> DiG 9.7.3-RedHat-9.7.3-2.el6 <<>> redhat.com mx +noall +answer centos.org ns +noall +answer
;; global options: +cmd
redhat.com. 332 IN MX 10 mx2.redhat.com.
redhat.com. 332 IN MX 5 mx1.redhat.com.
centos.org. 3778 IN NS ns3.centos.org.
centos.org. 3778 IN NS ns4.centos.org.
centos.org. 3778 IN NS ns1.centos.org.
10. 使用 $HOME/.digrc 文件存储默认 dig 选项
如果您总是试图只查看 dig 输出的 ANSWER 部分,那么您不必在每个 dig 命令中都输入“+noall +answer”。相反,将您的挖掘选项添加到 .digrc 文件中,如下所示。
$ cat $HOME/.digrc
+noall +answer
现在,无论何时执行 dig 命令,它都会默认使用 +noall 和 +answer 选项。现在 dig 命令行变得非常简单易读,无需您每次都键入这些选项。
$ dig redhat.com
redhat.com. 60 IN A 209.132.183.81
$ dig redhat.com MX
redhat.com. 52 IN MX 5 mx1.redhat.com.
redhat.com. 52 IN MX 10 mx2.redhat.com.
- 点赞
- 收藏
- 关注作者
评论(0)