Linux 中的 Dig 命令(DNS 查找)

2023-10-15

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

The dig命令,允许您查询有关各种 DNS 记录的信息,包括主机地址、邮件交换和名称服务器。由于其灵活性和易用性,它是系统管理员在解决 DNS 问题时最常用的工具。

本教程解释了如何使用dig通过实际示例和最常见的详细解释来了解实用性dig选项。

安装中dig #

检查是否dig命令在您的系统类型上可用:

dig -v

输出应如下所示:

DiG 9.11.3-1ubuntu1.1-Ubuntu

If dig如果您的系统上不存在,则上面的命令将打印“dig:未找到命令”。这dig可以使用发行版的包管理器安装该工具。

Install dig在 Ubuntu 和 Debian 上#

sudo apt update && sudo apt install dnsutils

Install dig在 CentOS 和 Fedora 上#

sudo yum install bind-utils

Install dig在 Arch Linux 上#

sudo pacman -S bind-tools

了解dig Output #

以最简单的形式,当用于查询单个主机(域)而无需任何其他选项时,dig命令非常冗长。

在下面的示例中,我们将执行linux.org domain:

dig linux.org

输出应如下所示:

让我们逐节解释一下输出dig命令:

  1. 输出的第一行打印已安装的dig版本、查询的域名。第二行显示全局选项(默认情况下只有cmd)。

    ; <<>> DiG 9.13.3 <<>> linux.org
    ;; global options: +cmd

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

  2. 下一部分包括有关从请求的机构(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选项,这也会禁用其他一些部分的标题。

  3. “OPT”伪节仅在较新版本中显示dig公用事业。您可以阅读有关 DNS 扩展机制 (EDNS) 的更多信息here .

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

    要从输出中排除此部分,请使用+noedns option.

  4. 在“问题”部分dig显示查询(问题)。默认情况下,dig请求 A 记录。

    ;; QUESTION SECTION:
    ;linux.org.			IN	A

    您可以使用以下命令禁用此部分+noquestion option.

  5. “答案”部分为我们提供了问题的答案。正如我们已经提到的,默认情况下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

    通常,您不想关闭答案,但可以使用以下命令从输出中删除此部分+noanswer option.

  6. “AUTHORITY”部分告诉我们哪些服务器有权回答有关所查询域的 DNS 查询。

    ;; AUTHORITY SECTION:
    linux.org.		86379	IN	NS	lia.ns.cloudflare.com.
    linux.org.		86379	IN	NS	mark.ns.cloudflare.com.

    您可以使用以下命令禁用这部分输出+noauthority option.

  7. “ADDITIONAL”部分为我们提供了有关权威部分中显示的权威 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

    The +noadditional选项禁用回复的附加部分。

  8. 最后一节的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 option.

仅打印答案#

一般来说,您只想得到一个简短的答案dig query.

1. 得到简短的答案#

要获得您查询的简短答案,请使用+short option:

dig linux.org +short
104.18.59.123
104.18.58.123

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

2. 获得详细答案#

要获得更详细的答案,请使用关闭所有结果+noall选项,然后仅打开答案部分+answer option.

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

查询特定名称服务器#

默认情况下,如果未指定名称服务器,dig使用中列出的服务器/etc/resolv.conf file.

要指定将执行查询的名称服务器,请使用@(at) 符号后跟名称服务器 IP 地址或主机名。

例如,要查询 Google 名称服务器 (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(名称服务器)。

1、查询A记录#

要获取域名的所有地址的列表,请使用a option:

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

如您所知,如果未指定 DNS 记录类型,dig将请求 A 记录。也可以不指定查询A记录a option.

2. 查询CNAME记录#

要查找别名域名,请使用cname option:

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

3、查询TXT记录#

Use the 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"

4. 查询MX记录#

要获取特定域的所有邮件服务器的列表,请使用mx option:

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.

5、查询NS记录#

要查找我们特定域的权威名称服务器,请使用ns option:

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.

6. 查询所有记录#

Use the 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 查找#

要查询hostname与特定 IP 地址相关联,使用-x option.

例如,要执行反向查找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 file.

域.txt
lxer.com
linuxtoday.com
tuxmachines.org
dig -f domains.txt +short
108.166.170.171
70.42.23.121
204.68.122.43

.digrc 文件#

The dig可以通过在中设置每个用户选项来控制命令的行为${HOME}/.digrc file.

If the .digrc文件存在于用户的主目录中,其中指定的选项将在命令行参数之前应用。

例如,如果您只想显示答案部分,请打开您的文本编辑器并创建以下内容~/.digrc file:

~/.digrc
+nocmd +noall +answer

结论#

dig是一个用于查询 DNS 信息和排除 DNS 相关问题的命令行工具。

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 中的 Dig 命令(DNS 查找) 的相关文章

随机推荐

  • 如何计算 MySQL 数据库大小

    MySQL 数据库的大小是需要监控的一个重要方面 因为它会影响数据的性能 备份和恢复过程 在本文中 我们将介绍计算 MySQL 数据库大小的方法 并提供 SQL 查询和解释 MySQL 数据库大小计算 有几种不同的方法可以计算 MySQL
  • 如何在 Ubuntu 22.04 上安装 VirtualBox 7.0

    您知道可以在 Linux 计算机上运行虚拟机吗 这是真的 借助 VirtualBox 等虚拟化软件 您可以为任何操作系统 甚至是像 Windows 或 OS X 这样不寻常的操作系统 设置单独的环境 而不会给您的主操作系统带来风险 您会发现
  • 如何在 Linux 中搜索 X 天/小时内创建的文件

    本教程将帮助您查找 X 天内创建或修改的文件 这里X表示任意数 使用 find 命令 您还可以搜索 X 分钟内创建或修改的内容 1 搜索30天内创建 修改的文件 使用此命令可以搜索 var backup 目录中 30 天内创建或修改的所有文
  • 用于备份 Windows 事件日志和清理的 PowerShell 脚本

    PowerShell 是一个功能强大的命令行工具 允许系统管理员自动执行许多日常任务 包括管理 Windows 事件日志 在此脚本中 我们将创建一个 PowerShell 脚本 将所有事件日志备份到指定位置 然后清除日志以释放磁盘空间并提高
  • 如何在 Ubuntu 18.04 和 16.04 上配置 NFS 共享

    网络文件系统 NFS 是一个分布式文件系统协议 它允许客户端计算机上的用户以类似于访问本地存储的方式通过网络访问文件 本文将帮助您在 Ubuntu 系统上安装和配置 NFS 并导出目录并将其挂载到客户端系统上 网络详情 我们在同一网络 19
  • 让 Shell 访问正在运行的 Docker 容器:实用指南

    Docker 是容器化事实上的标准 提供了一种打包和分发应用程序的有效方法 作为开发人员或系统管理员 有时您可能需要获得对正在运行的 Docker 容器的 shell 访问权限 这可以用于调试目的 应用程序管理或其他各种任务 本指南提供了有
  • 如何在 Git 存储库中创建分支

    Git 是一个强大的版本控制系统 被软件开发人员广泛使用 Git 的关键功能之一是能够在单个存储库中创建和管理多个分支 在本文中 我们将分步讲解创建 Git 分支的过程 第 1 步 了解 Git 分支 在我们深入创建 Git 分支之前 了解
  • 如何在 Bash Shell 脚本中使用函数

    什么是功能 函数也可以称为子例程 过程是用于特定任务的代码块 函数还有一个属性 称为可重用性 本教程将帮助您了解如何在 shell 脚本中创建和使用函数 在 Shell 脚本中创建第一个函数 在 shell 脚本中创建第一个函数 显示输出
  • 如何在 Git 中列出远程分支

    Git 是一种流行的版本控制系统 开发人员使用它来跟踪对其代码所做的更改 分支是 Git 的一个重要方面 因为它们允许开发人员并行处理多个功能或修复错误 而不会影响主代码库 在 Git 中 您可以创建两种类型的分支 本地分支和远程分支 本地
  • 如何在 MacOS 上安装 VirtualBox

    如何在 macOS 上安装 VirtualBox 在 macOS 系统上安装 VirtualBox 以及扩展包的分步教程 VirtualBox 是一款流行的跨平台虚拟机管理器 可让您在 Mac 上创建虚拟机 VM VM可用于同时运行不同的操
  • 如何在 Ubuntu 18.04 上安装 Anaconda

    Anaconda 是最流行的 Python 数据科学和机器学习平台 用于大规模数据处理 预测分析和科学计算 Anaconda 发行版附带了 1 000 多个数据包 conda命令行工具和名为 Anaconda Navigator 的桌面图形
  • 如何检查Python版本

    Python 是世界上最流行的编程语言之一 它用于开发网站 编写脚本 机器学习 分析数据等 本文介绍如何使用命令行检查操作系统上安装的 Python 版本 这在安装需要特定版本 Python 的应用程序时非常有用 我们还将向您展示如何以编程
  • 如何在 Ubuntu 18.04 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 Ubuntu 时 不存在交换分区 唯一的
  • Linux 中的终止命令

    Linux是一个伟大而先进的操作系统 但它并不完美 有时 某些应用程序可能会开始表现不稳定并变得无响应或开始消耗大量系统资源 无响应的应用程序无法重新启动 因为原始应用程序进程永远不会完全关闭 唯一的解决方案是重新启动系统或终止应用程序进程
  • 如何更改 Linux 中的 Swappiness 值

    交换空间是 RAM 内存已满时使用的硬盘的一部分 交换空间可以是专用交换分区或交换文件 当 Linux 系统耗尽物理内存时 非活动页面将从 RAM 移至交换空间 Swappiness 是一个 Linux 内核属性 它设置将页面从物理内存换出
  • 如何在 Python 中查找列表的长度

    列表是Python中最常用的数据类型之一 用于存储相同类型的项目的集合 本文介绍如何查找列表的长度 len 功能 Python有一个内置函数len 返回给定对象的长度 该对象可以是一个list 元组 字符串 字典等 的语法len 函数如下
  • Tmux 入门

    本指南将介绍 Tmux 的安装和基本用法 以帮助您入门和运行 什么是 tmux Tmux 是终端多路复用器的替代品GNU 屏幕 换句话说 这意味着您可以启动 Tmux 会话 然后在该会话中打开多个窗口 每个窗口占据整个屏幕 并且可以分割成矩
  • 如何在 Python 中向列表添加元素(追加、扩展和插入)

    在 Python 中使用列表时 您经常需要向列表中添加新元素 Python 列表数据类型具有三种添加元素的方法 append 将单个元素追加到列表中 extend 将可迭代的元素追加到列表中 insert 在列表的给定位置插入单个项目 所有
  • 如何添加 Git 远程

    通常 在使用 Git 时 您将仅使用一个名为 origin 的远程服务器 并针对不同的功能和环境使用不同的分支 Origin 是克隆存储库时自动创建的远程名称 并指向克隆的存储库 然而 当与一群人协作处理一个项目时 您可能会发现使用多个 G
  • Linux 中的 Dig 命令(DNS 查找)

    Dig Domain Information Groper 是一个强大的命令行工具 用于查询 DNS 名称服务器 The dig命令 允许您查询有关各种 DNS 记录的信息 包括主机地址 邮件交换和名称服务器 由于其灵活性和易用性 它是系统