Linux dig 命令 (DNS 查询)

17 Mar 2025 | 6 分钟阅读

Linux dig 命令是 Domain Information Groper (域名信息探测器) 的缩写。该命令用于执行与 DNS 查询相关的任务,可以查询 DNS 名称服务器。它主要用于排除 DNS 相关的问题。它是一个灵活的实用工具,用于检查 DNS(域名服务器)。它用于执行 DNS 查询,并返回从名称服务器查询到的答案。通常,大多数 DNS 管理员都会使用它来排查 DNS 问题。它是一个简单易用的工具,并提供清晰的输出。它的功能比其他查询工具更强大。

dig 命令支持大量的命令行选项。此外,它还支持批处理模式,可用于从文件中访问查询请求。如果未指定 dig 命令查询特定的名称服务器,它将访问 "/etc/resolv.conf" 中的所有服务器。不带任何命令行选项的 dig 命令将对 "."(根域)执行 NS 查询。

语法

dig 命令的一般语法如下:

在上面的语法中,

server: 这是我们要查询的名称服务器的名称或 IP 地址。它可以是 Ipv4 或 Ipv6 地址。如果提供的服务器是一个主机名,它会在查询给定的名称服务器之前解析该名称。

如果我们不指定服务器,它将从 "/etc/resolv.conf" 中查找。如果在这里找到了名称服务器,它将查询该名称服务器。如果没有找到有效地址,它将把查询转发给本地主机。

name: 这确定了资源记录的名称。

Type: 指定所需的查询类型,例如 ANY、A、MX、SIG 等。类型参数必须有效。如果未指定类型参数,则默认值为 'A'。

选项

以下是 dig 命令的一些常用命令行选项:

-4: 仅用于 IPv4。

-6: 仅用于 IPv6。

-b address[#port]: 用于设置查询的源 IP 地址。

-c class: 用于设置查询类别。

-f file: 用于批处理模式。dig 命令访问指定文件中的查询请求进行处理。dig 会按文件中的组织顺序系统地处理每一行。

-i: '-i' 选项对于“反向 IPv6 查询”很有用。

-k keyfile: 用于使用指定文件生成的密钥标记 TSIG 查询。我们可以使用 "tsig-keygen" 来生成密钥文件。

-m: 用于启用内存使用情况调试。

-p port: 用于将查询转发到服务器上的非标准端口,而不是默认端口(即 53)。这是测试名称服务器的便捷工具。

-q name: 用于要查询的域名。这是一个区分名称和其他参数的便捷工具。

-t type: 用于指定要查询的资源记录类型。通常,这些记录是任何有效的查询类型。类型参数的默认值是 'A'。

-u: 用于显示查询时间(以微秒为单位)。

-v: 用于显示版本信息。

-x addr: 用于简化反向查询,将地址映射到名称。

-y [hmac:]keyname:secret: 用于使用给定的认证密钥标记 TSIG 查询。"keyname" 定义了密钥名称,"secret" 指的是 "base64 编码的共享密钥"。"hmac" 指定了密钥算法的名称。有效选项可以是 "hmac-md5, hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, 或 hmac-sha512"。

安装 dig 命令

dig 命令是 dnsutils 包的一部分,该包与 BIND 名称服务器一起安装。要安装 dig 工具,请执行以下命令:

对于 Debian 和 Ubuntu 系统,请执行以下命令:

对于 CentOS 7,请执行以下命令:

上面的命令将安装 dig 命令所需的包文件。要验证安装,请执行以下命令:

dig 命令示例

让我们看 dig 命令的以下示例:

  • 查询域名
  • 显示简短输出
  • 显示详细输出
  • 查询特定名称服务器
  • 追踪 DNS 路径
  • 反向 DNS 查询
  • 查询多个域名

查询域名

我们可以使用 dig 命令对域名进行 DNS 查询。dig 命令的默认行为将显示 A 记录类型。要查询域名,请按以下方式执行命令:

考虑以下命令:

上面的命令将查询给定的域名。考虑以下输出:

Linux Dig

从输出中,我们可以看到 dig 版本信息、关于查询的统计信息、其他技术细节,以及一个问题部分以及其他一些部分。

显示简短输出

上面 dig 命令的使用显示了关于指定域名的许多信息。但是,有时您可能只想要简短的信息。'+short' 选项用于显示较少的输出。它只会显示给定域名的 IP 地址。考虑以下命令:

上面的命令将显示 javatpoint.com 的 IP 地址。考虑以下输出:

Linux Dig

显示详细输出

如果您想了解关于任何域名的附加信息,请使用 '+answer' 选项执行 dig 命令。为防止命令显示所有部分,请在命令中指定 '+noall' 选项。考虑以下命令:

上面的命令将显示一些附加信息,如国家名称、IP 地址等。考虑以下输出:

Linux Dig

查询特定名称服务器

dig 命令的默认行为是对给定的域名执行 DNS 查询。我们可以通过在名称服务器的 IP 地址或主机名前加上 @ 符号来更改此行为。考虑以下命令:

上面的命令将使用给定的选项对名称服务器 (120.120.40.80) 执行 DNS 查询。考虑以下输出:

Linux Dig

追踪 DNS 路径

我们可以使用 dig 命令来追踪 DNS 路径。'+trace' 选项用于追踪 DNS 路径。它将从根开始查询名称服务器,并向下遍历后续的命名空间。要追踪 DNS 路径,请按以下方式执行命令:

考虑下面的输出

Linux Dig

反向 DNS 查询

反向 DNS 查询显示指定 IP 地址的域名和主机名。要执行反向 DNS 查询,请使用 '-x' 选项和一个 IP 地址执行命令。考虑以下命令:

上面的命令将对给定的 IP 地址执行反向 DNS 查询。考虑以下输出:

Linux Dig

查询多个域名

dig 命令允许我们执行批量查询。我们可以执行多个域名的 DNS 查询。为此,我们必须创建一个文件,其中包含新行中的多个域名。例如,执行 'javatpoint.com', 'google.com,' 和 'github.com' 的 DNS 查询。创建名为 'lookups.txt' 的文件,如下所示:

现在,通过执行以下命令来查询指定的域名:

上面的命令将显示 'lookups.txt' 中指定域名的 IP 地址。考虑以下输出:

Linux Dig
下一主题Linux nslookup