DNS查询的利器! linux的dig命令基本用法详解
dig(Domain Information Groper)是一款功能强大的 Linux 命令行实用程序,通过查询名称服务器并输出结果来执行 DNS 查询。
dig 命令可以查询各种类型 DNS 记录信息,包括:主机名称记录(A、AAAA)、邮件交换记录(MX)和别名记录(CNAME)等等。由于其灵活性和易用性,它是系统管理员解决 DNS 问题时最常用的工具。
在本文中,将通过实际示例和 dig 命令常用参数来详细说明如何使用 dig 实用程序。
Windows 也可以使用 dig 命令,安装方法请自行 Google。

在 Linux 中安装 dig 命令(可选)
dig 是 DNS 实用程序包的一部分,通常与 BIND 名称服务器一起安装。大多数现代 Linux 系统都自带 dig 命令。要验证它是否安装,可以在「终端」中执行以下命令:
dig -v

查看 dig 版本
如果您的 Linux 系统默认没有安装 dig ,可能会提示dig: command not found。请使用以下命令安装:
Ubuntu 和 Debian 安装 dig 命令
sudo apt update && sudo apt install dnsutils
CentOS 和 Fedora 安装 dig 命令
sudo yum install bind-utils
Arch Linux 安装 dig 命令
sudo pacman -S bind-tools
dig 命令语法
dig 命令的使用方法如下:
dig [server] [name] [type]
- [server]查询指向的主机名或 IP 地址
- [name]要查询服务器的 DNS(域名服务器)
- [type]要检索的 DNS 记录类型。默认情况下(或如果留空),dig 查询 A 记录。
了解 dig 命令输出
当不带参数使用 dig 查询单个主机(域名)时,它的输出非常详细,例如查询系统极客www.sysgeek.cn域名:
dig www.sysgeek.cn
输出结果长这样:

dig 命令输出
最重要的部分是ANSWER部分:
- 第一列列出了被查询的服务器名称
- 第二列是 TTL(存活时间),在此之后记录将被刷新
- 第三列显示查询的类别 – 在本例中,IN代表互联网
- 第四列显示查询的类型 – 在本例中,CNAME代表 CNAME(别名)记录,A代表 A(地址)记录
- 最后一列显示与域名关联的别名和 IP 地址(结果)

ANSWER 部分
可以使用+noanswer参数禁用此部分输出。
下面让我们分部分来介绍并解释一下 dig 命令的输出:
1、第一行显示 dig 命令的版本,以及查询的域名;第二行显示全局选项(默认情况下,仅有 cmd)。

dig 版本及查询域名
如果不希望在输出中包括这些行,请使用+nocmd参数。 (此参数必须是 dig 命令后的第一个参数。)
2、HEADER部分显示从被请求机构(DNS 服务器)收到响应的详细技术信息。标题显示由 dig 执行操作的「操作码」和「操作状态」的「标头」,上述示例中的「操作状态」是NOERROR,这意味着被请求的 DNS 服务器可以没有任何阻碍地提供查询。
Flags是回答格式的参考。

HEADER 部分
可以用+comments参数隐藏本部分输出,使用此参数时还会禁用一些其它部分输出的标题。
3、OPT PSEUDOSECTION显示高级数据,仅在较新版本的 dig 工具中显示,您可以阅读更多关于 DNS(EDNS)的扩展机制。
- EDNSDNS 的扩展机制
- Flags未指定标志时为空
- UDPUDP 数据包大小

OPT PSEUDOSECTION 部分
要隐藏此部分输出可以使用+noedns参数。
4、QUESTION部分显示发送的查询数据:
- 第一列是查询的域名
- 第二列是查询的类型(IN 表示互联网)
- 第三列指定了记录类型(如果未指定则默查询 A 记录)

QUESTION 部分
可以使用+noquestion参数禁用此部分输出。
5、最后的STATISTICS统计信息部分显示关于查询的元数据:
- Query time响应花费的时间
- SERVER响应 DNS 服务器的 IP 地址和端口
- WHEN命令运行的时间戳
- MSG SIZE rcvd从 DNS 服务器收到的回复大小

STATISTICS 统计信息
可以使用+nostats参数禁用此部分输出。
指定 DNS 服务器
默认情况下,如果未指定名称服务器,dig 命令会使用/etc/resolv.conf文件中列出的服务器进行查询。
要指定 DNS 服务器进行查询,可以使用@后跟 DNS 服务器 IP 地址的方式来手动指定 DNS 服务器。
例如,要使用 Google DNS 的8.8.8.8或 CloudFlare DNS 的1.1.1.1查询www.sysgeek.cn域名,可以使用如下 命令:
dig www.sysgeek.cn @8.8.8.8

手动指定 DNS 服务器
仅输出响应结果
在绝大多数情况下,我们只使用 dig 查询相应的 DNS 记录,而不需要太多复杂的、不相关的响应和输出。此时就可以使用以下两种方式。
输出简短结果
如果只想获取 DNS 查询的简短响应,可以使用+short参数,例如:
dig www.sysgeek.cn +short

输出简短结果
输出仅包括查询www.sysgeek.cn域名响应的 CNAME 记录和最终的 A 记录。
输出详细响应
要获取 DNS 查询更详细的响应结果,可以先使用+noall参数关闭所有结果,再使用+answer参数打开结果部分。
dig www.sysgeek.cn +noall +answer

使用 dig 命令输出详细响应结果
使用 dig 命令查询特定记录类型
与 Windows 下的 nslookup 命令类似,dig 命令也可以查询指定的 DNS 记录类型。下面系统极客就为大家介绍,如果查询常见的 DNS 记录类型,例如:A(IP 地址)、CNAME(别名记录)、TXT(文本记录)、MX(邮件交换记录)和 NS(名称服务器)。
使用 dig 命令查询 A 记录
要获取域名的所有 IP 地址列表,请使用a参数:
dig +nocmd www.sysgeek.cn a +noall +answer

使用 dig 命令查询 A 记录
如前所述,如果没有指定 DNS 记录类型,dig 也将请求 A 记录。 您也可以在不指定a参数的情况下查询「A 记录」。
使用 dig 命令查询 CNAME 记录
要查询「别名记录」,请使用cname参数:
dig +nocmd www.sysgeek.cn cname +noall +answer

使用 dig 命令查询 CNAME 记录
使用 dig 命令查询 TXT 记录
可以使用txt参数检索特定域的所有「TXT 记录」:
dig +nocmd sysgeek.cn txt +noall +answer

使用 dig 命令查询 TXT 记录
使用 dig 命令查询 MX 记录
要获取特定域的所有邮件交换记录,请使用mx参数:
dig +nocmd sysgeek.cn mx +noall +answer

使用 dig 命令查询 MX 记录
使用 dig 命令查询 NS 记录
要查找特定域的权威名称服务器,请使用ns参数:
dig +nocmd sysgeek.cn ns +noall +answer

使用 dig 命令查询 NS 记录
使用 dig 命令进行 PTR 反向 DNS 查询
要查询与特定 IP 地址关联的主机名,请使用-x参数。例如,要在208.118.235.148上执行反向查询,可以执行以下命令:
dig -x 208.118.235.148 +noall +answer

使用 dig 命令进行反向 DNS 查询
从输出中可以看出,IP 地址208.118.235.148与主机名ip-208-118-235-148.twdx.net.相关联。
Trace 参数
+trace参数可以列出查询经过的不同 DNS 服务器,直到最终目的地。可以使用此参数来确定流量中断的 IP 地址:
dig sysgeek.cn +trace

使用 dig 命令进行 trace 跟踪
dig 命令批量 DNS 查询
如果要对大量域名进行 DNS 查询,可以将其全部写入到一个文本文件中(一行一个),然后使用-f参数,再跟止文件名即可,例如:
dig -f domains.txt +short
.digrc 文件
我们还可通过不同用户的${HOME}/.digrc文件来控制 dig 命令的行为,如果.digrc文件存在于用户的主目录中,则 dig 可以读取其中的参数,而无需用户在执行命令时手动添加。例如,直接在~/.digrc文件中写入+nocmd +noall +answer参数。
推荐阅读:DNS 缓存刷新方法汇总
相关文章

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总
Linux系统提供了多种重启命令,常用的包括shutdown -r、reboot、init 6等,不同命令适用于不同场景,本文将详细介绍这些命令的使用方法、注意事项以及推荐优先级,帮助用户2025-06-23
如何快速定位到查找的文件? Linux中快速定位文件或命令汇总
在 Linux 中查找文件可以使用多种命令,以下是 最常用的文件查找方法,覆盖不同场景,详细请看下文介绍2025-05-21
linux系统中想要看看可执行文件的具体位置,该怎么查看呢?我们可以使用多个命令查看,详细请看下文介绍2025-05-21
如何查看已安装的Linux内核? 命令行查看所有已安装Linux内核的技巧
Linux系统安装多个内核版本,想要看看电脑到底安装了多少个版本,该怎么查看呢?下面我们就来看看详细教程2024-12-13
Linux的systemctl怎么用? systemctl命令一键搞定Linux服务管理的技巧
今天我们来看看如何使用systemctl命令来管理Linux系统中的服务,包括启动、停止、重启、配置加载、开机启动设置以及查看服务状态2024-10-21
然 Ubuntu 提供了优秀的图形化软件管理工具,我们绝大多数时间并不需要使用命令行来管理 Snap 软件包,但命令行拥有更强的功能和灵活性,学会如何使用可以帮你更好地掌控系2024-10-18
linux服务器重启命令哪个好用? Linux服务器重启命令汇总
在 Linux 系统中,最严谨的重启命令是 shutdown -r now,该命令直接将系统重启,而不进行任何清理或准备工作,确保系统彻底重启,但也有很多其他命令,详细如下文介绍2024-10-17
教你如何在Linux中使用apt命令? Linux APT命令实战教程
apt是一个软件包管理工具,apt命令相当强大,要是在Ubuntu和Debian系统中使用,可以用来对软件进行安装等操作,需要超级管理员(root)权限进行操作2024-09-29- FDISK是一个用于硬盘分区的工具,特别是在较早的操作系统版本中,如Windows 98和早期的Linux系统中,FDISK是进行硬盘分区的主要工具,这里就为大家分享一下linux系统中使用2024-08-29

如何在linux中创建新用户? 在Linux中创建新用户命令的使用方法
在Linux系统管理中,用户管理是最基础且重要的一环,创建新用户不仅关乎系统安全,还涉及到资源分配、权限控制等多个方面,下面我们就来分享三种创建新用户的技巧2024-04-17









最新评论