如何在Linux下使用DNS查询工具Dig

linux

Dig,全称Domain Information Groper。是一个功能强大的命令行工具,用于查询DNS域名服务器。

使用dig命令,您可以查询各种DNS记录的信息,包括主机地址,邮件交换和域名服务器。它是系统管理员中用于排除DNS问题的最常用工具,它具很高的灵活性和易用性。

在本教程中我们将说明如何在Linux下使用DNS查询工具dig。包括在Linux发行版安装dig。了解dig的输出,仅输出应答,详细的应答ANSWER信息,指定域名服务器查询,了解DNS的 记录类型,查询CNAME记录,查询TXT记录,批量查询,反向DNS查找,查询所有记录,查询NS记录,查询MX记录,配置dig。

安装Dig

可以通过检查dig的版本来验证您的系统类型是否存在dig命令,你将执行以下命令:

dig -v

输出应该如下所示:

DiG 9.11.3-1ubuntu1.1-Ubuntu

如果您的系统上没有dig命令,则上面的命令将会打印出来的是dig: command not found您可以使用发行版的软件包管理器来安装它。

在Ubuntu和Debian上安装dig

sudo apt install dnsutils

在CentOS和Fedora上安装dig

sudo yum install bind-utils

linux-dig">在Arch Linux上安装dig

sudo pacman -S bind-tools

了解dig输出

在用于查询单个域而没有任何其他参数的最简单形式中,dig命令输出非常详细。在以下示例中,我们将执行查询以检索linux.org域的信息。

dig linux.org

输出应该如下所示:

; <<>> DiG 9.10.3-P4-Ubuntu <<>> linux.org

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57452

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;linux.org. IN A

;; ANSWER SECTION:

linux.org. 300 IN A 104.27.167.219

linux.org. 300 IN A 104.27.166.219

;; Query time: 256 msec

;; SERVER: 127.0.0.1#53(127.0.0.1)

;; WHEN: Fri Jul 19 11:12:41 CST 2019

;; MSG SIZE rcvd: 59

让我们逐节介绍并解释dig命令的输出。输出的第一行打印已安装的dig版本以及调用的查询。第二行显示全局选项(默认情况下仅为cmd)。

; <<>> DiG 9.13.3 <<>> linux.org

;; global options: +cmd

如果您不希望这些行包含在输出中,可以使用+nocmd选项。此选项必须是dig命令后的第一个参数。

Answer应答包括从请求授权后来自DNS服务器应答的技术详细信息。此部分的第一行是标题,包括操作码(由dig执行的操作)和操作的状态。在这种情况下,状态NOERROR意味着所请求的都已授权查询而没有任何问题。

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37159

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5

可以使用+nocomments选项删除此部分输出。使用此选项时,它还会禁用其他一些信息与标题。

OPT PSEUDOSECTION-此部分仅在较新版本上显示。您可以在此处阅读有关DNS扩展机制EDNS的更多信息。

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

如果您不希望此部分包含在输出中,请使用该+noedns选项。这是dig显示我们的查询QUESTION的部分。默认情况下,dig会请求A记录

;; QUESTION SECTION:

;linux.org. IN A

您可以使用该+noquestion选项禁用此部分。

ANSWER章节为我们提供了一个答案。正如我们提到的,默认情况下dig会请求A记录。这里域linux.org指向104.18.59.123IP地址。

;; ANSWER SECTION:

linux.org. 300 IN A 104.18.59.123

linux.org. 300 IN A 104.18.58.123

如果你想关闭ANSWER输出,可以使用+noanswer选项从输出中删除此部分。

AUTHORITY SECTION告诉我们哪些服务器是回答有询域的DNS的AUTHORITY。

;; AUTHORITY SECTION:

linux.org. 86379 IN NS lia.ns.cloudflare.com.

linux.org. 86379 IN NS mark.ns.cloudflare.com.

您可以使用+noauthority选项禁用输出的此部分。

ADDITIONAL SECTION:为我们提供了有关AUTHORITY DNS服务器的IP地址的信息。

;; ADDITIONAL SECTION:

lia.ns.cloudflare.com. 84354 IN A 173.245.58.185

lia.ns.cloudflare.com. 170762 IN AAAA 2400:cb00:2049:1::adf5:3ab9

mark.ns.cloudflare.com. 170734 IN A 173.245.59.130

mark.ns.cloudflare.com. 170734 IN AAAA 2400:cb00:2049:1::adf5:3b82

Query time这是dig输出的最后一部分,其中包含查询的统计信息。

;; Query time: 58 msec

;; SERVER: 192.168.1.1#53(192.168.1.1)

;; WHEN: Fri Oct 12 11:46:46 CEST 2018

;; MSG SIZE rcvd: 212

您可以使用该+nostats选项禁用此信息。

仅输出应答

在大多数情况下,您只想快速查询ANSWER SECTION,要获得查询的简短应答ANSWER,请使用以下+short选项:

dig linux.org +short
104.18.59.123

104.18.58.123

输出将仅包括A记录的IP地址。

得到详细的应答ANSWER

有关更详细的ANSWER应答信息,请使用+noall选项关闭所有结果,然后仅使用+answer选项打开ANSWER部分。

dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer

;; global options: +cmd

linux.org. 67 IN A 104.18.58.123

linux.org. 67 IN A 104.18.59.123

指定域名服务器查询

默认情况下,如果未指定DNS服务器,dig将使用/etc/resolv.conf文件中列出的域名服务器。要指定执行查询的DNS服务器,请使用@at符号,后跟名称服务器IP地址或主机名。

例如,使用Google DNS服务器(8.8.8.8)来查询linux.org 以获取相关信息:

dig linux.org @8.8.8.8
; <<>> DiG 9.13.3 <<>> linux.org @8.8.8.8

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39110

;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 512

;; QUESTION SECTION:

;linux.org. IN A

;; ANSWER SECTION:

linux.org. 299 IN A 104.18.58.123

linux.org. 299 IN A 104.18.59.123

;; Query time: 54 msec

;; SERVER: 8.8.8.8#53(8.8.8.8)

;; WHEN: Fri Oct 12 14:28:01 CEST 2018

;; MSG SIZE rcvd: 70

记录类型

Dig允许您通过将记录类型附加到查询末尾来执行任何有效的DNS查询。在下一节中,我们将向您展示如何搜索最常见的记录,例如A记录(IP地址),CNAME(别名),TXT(文本记录),MX(邮件记录)和NS(域名服务器记录

仅返回查询记录

获取域名的所有地址列表,请使用以下a选项:

dig +nocmd google.com a +noall +answer
google.com.		128	IN	A	216.58.206.206

如果未指定DNS记录类型,dig将请求A记录。您也可以在不指定a选项的情况下查询A记录

查询CNAME记录

要查找域名的别名,请使用以下cname选项:

dig +nocmd mail.google.com cname +noall +answer
mail.google.com.	553482	IN	CNAME	googlemail.l.google.com.

查询TXT记录

使用txt选项可检索特定域的所有TXT记录:

dig +nocmd google.com txt +noall +answer
google.com.		300	IN	TXT	"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"

google.com. 300 IN TXT "v=spf1 include:_spf.google.com ~all"

google.com. 300 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"

查询MX记录

获取特定域的所有邮件服务器列表,请使用以下mx选项:

dig +nocmd google.com mx +noall +answer
google.com.		494	IN	MX	30 alt2.aspmx.l.google.com.

google.com. 494 IN MX 10 aspmx.l.google.com.

google.com. 494 IN MX 40 alt3.aspmx.l.google.com.

google.com. 494 IN MX 50 alt4.aspmx.l.google.com.

google.com. 494 IN MX 20 alt1.aspmx.l.google.com.

查询NS记录

要查找特定域的名称服务器,请使用以下ns选项:

dig +nocmd google.com ns +noall +answer
google.com.		84527	IN	NS	ns1.google.com.

google.com. 84527 IN NS ns2.google.com.

google.com. 84527 IN NS ns4.google.com.

google.com. 84527 IN NS ns3.google.com.

查询所有记录

使用any选项可获取特定域的所有DNS记录的列表:

dig +nocmd google.com any +noall +answer
google.com.		299	IN	A	216.58.212.14

google.com. 299 IN AAAA 2a00:1450:4017:804::200e

google.com. 21599 IN NS ns2.google.com.

google.com. 21599 IN NS ns1.google.com.

google.com. 599 IN MX 30 alt2.aspmx.l.google.com.

google.com. 21599 IN NS ns4.google.com.

google.com. 599 IN MX 50 alt4.aspmx.l.google.com.

google.com. 599 IN MX 20 alt1.aspmx.l.google.com.

google.com. 299 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"

google.com. 21599 IN CAA 0 issue "pki.goog"

google.com. 599 IN MX 40 alt3.aspmx.l.google.com.

google.com. 3599 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"

google.com. 21599 IN NS ns3.google.com.

google.com. 599 IN MX 10 aspmx.l.google.com.

google.com. 3599 IN TXT "v=spf1 include:_spf.google.com ~all"

google.com. 59 IN SOA ns1.google.com. dns-admin.google.com. 216967258 900 900 1800 60

反向DNS查找

要查询与特定IP地址关联的主机名,请使用-x选项。例如,要执行反向查找ip地址208.118.235.148域名

dig -x 208.118.235.148 +noall +answer

从下面的输出中可以看出,IP地址208.118.235.148与主机名wildebeest.gnu.org相关联。

; <<>> DiG 9.13.3 <<>> -x 208.118.235.148 +noall +answer

;; global options: +cmd

148.235.118.208.in-addr.arpa. 245 IN PTR wildebeest.gnu.org.

批量查询

如果要查询大量的域名,可以将它们添加到文件中,每行一个域名,然后使用-f选项后跟文件名。在以下示例中,我们将查询domains.txt文件中列出的域。

google.com

myfreax.com

linux.org

domains.txt
dig -f domains.txt +short
108.166.170.171

70.42.23.121

204.68.122.43

配置dig

可以通过在${HOME}/.digrc文件中设置每个用户选项来控制dig命令的行为。如果.digrc文件存在于用户的家目录中,则在命令行参数之前应用其中指定的选项。

例如,如果只想打印应答部分,请打开文本编辑器并创建以下~/.digrc文件:

+nocmd +noall +answer
〜/.digrc

结论

至此您应该能够解决大多数与DNS相关的问题,如果您喜欢我们的内容,欢迎转发。

以上是 如何在Linux下使用DNS查询工具Dig 的全部内容, 来源链接: utcz.com/z/506937.html

回到顶部