用于 DNS 查找的 Linux DIG 命令示例

举报
Tiamo_T 发表于 2022/06/04 09:11:34 2022/06/04
【摘要】 Dig 代表域信息探索器。 使用 dig 命令,您可以查询 DNS 名称服务器以执行与 DNS 查找相关的任务。本文解释了如何使用 dig 命令的 10 个示例。

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.
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。