‘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”代表地址。
- 答案部分是输出的主要部分。 它为我们的查找提供了 Internet 地址 45.79.77.230
- 最后一部分代表我们执行的查找的一些统计数据。
减小输出大小
在 $ dig 命令中作为输出提供的许多信息并不是那么有用。 我们可以通过使用 +short 和 $ dig 命令来避免所有这些。
$ dig linuxfordevices.com +short
此命令仅显示查找中主机的 IP 地址。 默认的 dig 命令以详细的方式生成输出。 有时一个域可以有多个 IP 地址。

查询邮件记录
默认情况下,dig 仅输出“A”记录。 我们可以通过使用带有 dig 命令的 MX 来改变这一点。 它将产生邮件交换记录。
‘A’ 和 ‘MX’ 不是唯一的记录类型。 有几种类型的记录,如“TTL”、“SOA”、“NS”。 稍后我们将看到一起查询所有记录的命令。
$ dig linuxfordevices.com mx
这将生成负责代表服务器接收邮件的邮件服务器列表。 换句话说,它将列出 SMTP 服务器。 SMTP 代表简单邮件传输协议。

我们可以看到,现在记录类型显示的不是“A”,而是代表“邮件交换”的“MX”。 我们可以使用 +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 代表 Start of Authority,包含管理信息。
$ dig linuxfordevices.com SOA
结论
Linux 中的 dig 命令对于获取有关服务器的信息和执行 DNS 查找非常有用。 您可以阅读更多关于 dig 命令的信息 手册页.