‘domain information groper’ 的缩写 Dig 命令是 Linux 中的网络命令行工具。 管理员使用 Dig 来执行域名查找和故障排除。 它因其受欢迎程度、易用性和灵活性而广受欢迎。 dig 是 BIND 域名服务器软件套件的一部分。
安装
如果你的 Linux 系统上没有 dig,你可以很容易地安装它。
$ yum install bind-utils #CentOS $ apt-get install dnsutils #Debian/Ubuntu
简单的挖掘命令
如果您在任何网站上执行简单的 dig 命令,就像我们在 linuxfordevices.com 上执行的那样
$ dig linuxfordevices.com
它给你一个庞大而复杂的输出。 让我们了解输出的含义:
- ;; 之后的任何内容应作为评论阅读。 第一行告诉我们正在使用的 dig 版本。 在这种情况下 9.16.1
- 问题部分告诉我们我们要查询什么。 “IN”代表互联网,“A”代表地址。
- 答案部分是输出的主要部分。 它为我们的查找提供了互联网地址 45.79.77.230
- 最后一部分代表我们执行的查找的一些统计信息。
减小输出尺寸
$ dig 命令中作为输出提供的许多信息并没有那么有用。 我们可以通过使用 +short 和 $ dig 命令来避免所有这些。
$ dig linuxfordevices.com +short
此命令仅显示查找中主机的 IP 地址。 默认的 dig 命令以详细的方式生成输出。 有时一个域可以有多个 IP 地址。
查询邮件记录
默认情况下 dig 只输出“A”记录。 我们可以通过将 MX 与 dig 命令一起使用来更改此设置。 它将产生邮件交换记录。
‘A’ 和 ‘MX’ 不是唯一的记录类型。 有几种类型的记录,如“TTL”、“SOA”、“NS”。 稍后我们将看到一起查询所有记录的命令。
$ dig linuxfordevices.com mx
这将生成负责代表服务器接收邮件的邮件服务器列表。 换句话说,它将列出 SMTP 服务器。 SMTP 代表简单邮件传输协议。
我们可以看到,现在记录类型显示的是“MX”而不是“A”,它代表“Mail Exchange”。 我们可以使用 +short 来获得压缩输出,而不是生成所有额外信息。
$ dig linuxfordevices.com mx +short
查询名称服务器
您可以查询对该特定域具有权威性的服务器的名称。 一个域可以有多个名称服务器,可以指示域的主服务器和备份服务器。
$ dig linuxfordevices.com ns
对于我们的网站,我们可以看到有两个名称服务器。
跟踪 DNS 路径
此命令可让您以分层方式跟踪查询所采用的路径。 它将显示用于解析查找的所有根服务器的列表。
$ dig +trace linuxfordevices.com
要以更简洁的方式获取输出,请使用 +short
$ dig +short +trace linuxfordevices.com
这显示了查询在到达最终地址之前所经过的路径。 在这种情况下为 45.79.77.230。
自定义挖掘输出
+noall 标志通常与 dig 命令一起使用,以清除默认情况下打开的所有显示标志。 与 +noall 标志一起,+answer 标志可用于仅显示答案部分。
$ dig linuxfordevices.com +noall +answer
正如我们所看到的,只有查询的答案部分是可见的。 +question 标志可用于显示查询的问题部分。
$ dig linuxfordevices.com +noall +answer +question
第一行是问题部分,第二行是回答部分。 将此与上面简单的 dig 命令的输出进行比较。
+stat 标志可用于打开输出的统计部分。
$ dig linuxfordevices.com +noall +answer +stats
其他可以使用的标志是 +comments、+cmd、+authority 等。
反向 DNS 查找
可以通过提供 IP 地址来执行反向 DNS 查找。 输出给出了域名和其他信息。
$ dig -x [ip-address]
IP 地址 45.79.77.230 属于 linuxfordevices.com,我们使用它执行了反向 DNS 查找。 我们可以使用 +short 以简洁的方式获得输出
$ dig -x [ip-address] +short
从文件查询
可以从文件中批量执行 DNS 查询。 有时,在一个文件中列出所有域以进行查询可以节省大量时间和人工。 为此,我们必须首先创建一个包含一些域名的文件。 Linux cat 命令可用于此目的。
$ cat > example.txt linuxfordevices.com google.com yahoo.com
可用于对文件运行 DNS 查询的命令是:
$ dig -f example.txt
输出过于庞大,如果我们的文件中有太多域,将难以处理。 为了以简洁的方式获得输出,我们将只获得答案部分。
$ dig -f example.txt +noall +answer
查询所有DNS记录类型
到目前为止,我们只看到了几种记录类型。 它们是“A”、“MX”、“NS”。 我们已经能够通过明确指定类型来单独查询它们。 使用带有 dig 命令的 ANY 关键字,我们可以在单个查询中查询所有类型的记录。
$ dig linuxfordevices.com ANY
要以简洁的方式生成输出:
$ dig linuxfordevices.com ANY +noall +answer
这个命令就像我们之前看到的,只会生成查询的答案部分。
需要注意的一件重要事情是,这些并不是 DNS 下的唯一记录。 dig 命令下还有其他记录类型,如 TTL、SOA。 我们可以通过提及记录类型和 dig 命令来明确查询这些。
TTL 代表生存时间,用于指定执行自动刷新之前的时间。
$ dig linuxfordevices.com TTL
SOA 代表授权开始,包含管理信息。
$ dig linuxfordevices.com SOA
结论
Linux 中的 dig 命令对于获取有关服务器的信息和执行 DNS 查找非常有用。 您可以在手册页上阅读有关 dig 命令的更多信息。