DNS查询的利器! linux的dig命令基本用法详解

2025-08-07 21:50

本文主要是介绍DNS查询的利器! linux的dig命令基本用法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序...

dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输出结果来执行 DNS 查询。

dig 命令可以查询各种类型 DNS 记录信息,包括:主机名称记录(A、AAAA)、邮件交换记录(MX)和别名记录(CNAME)等等。由于其灵活性和易用性,它是系统管理员解决 DNS 问题时最常用的工具。

在本文中,将通过实际示例和 dig 命令常用参数来详细说明如何使用 dig 实用程序。

Windows 也可以使用 dig 命令,安装方法请自行 Google。

DNS查询的利器! linux的dig命令基本用法详解

在 Linux 中安装 dig 命令(可选)

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

dig -v

DNS查询的利器! linux的dig命令基本用法详解

查看 dig 版本

如果您的 Linux 系统默认没有安装 dig ,可能会提示dig: command not found。请使用以下命令安装:

UbuntuDebian 安装 dig 命令

sudo apt update && sudo apt install dnsutils

CentosFedora 安装 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

输出结果长这样:

DNS查询的利器! linux的dig命令基本用法详解

dig 命令输出

最重要的部分是ANSWER部分:

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

DNS查询的利器! linux的dig命令基本用法详解

ANSWER 部分

可以使用+noanswer参数禁用此部分输出。

下面China编程让我们分部分来介绍并解释一下 dig 命令的输出:

1、第一行显示 dig 命令的版本,以及查询的域名;第二行显示全局选项(默认情况下,仅有 cmd)。

DNS查询的利器! linux的dig命令基本用法详解

dig 版本及查询域名

如果不希望在输出中包括这些行,请使用+nocmd参数。 (此参数必须是 dig 命令后的第一个参数。)

2、HEADER部分显示从被请求机构(DNS 服务器)收到响应的详细技术信息。标题显示由 dig 执行操作的「操作码」和「操作状态」的「标头」,上述示例中的「操作状态」是NOERROR,这意味着被请求的 DNS 服务器可以没有任何阻碍地提供查询。

Flags是回答格式的参考。

DNS查询的利器! linux的dig命令基本用法详解

HEADER 部分

可以用+comments参数隐藏本部分输出,使用此参数时还会禁用一些其它部分输出的标题。

3、OPT PSEChina编程UDOSECTION显示高级数据,仅在较新版本的 dig 工具中显示,您可以阅读更多关于 DNS(EDNS)的扩展机制。

  • EDNSDNS 的扩展机制
  • Flags未指定标志时为空
  • UDPUDP 数据包大小

DNS查询的利器! linux的dig命令基本用法详解

OPT PSEUDOSECTION 部分

要隐藏此部分输出可以使用+noedns参数。

4、QUESTION部分显示发送的查询数据:

  • 第一列是查询的域名
  • 第二列是查询的类型(IN 表示互联网)
  • 第三列指定了记录类型(如果未指定则默查询 A 记录)

DNS查询的利器! linux的dig命令基本用法详解

QUESTION 部分

可以使用+noquestion参数禁用此部分输出。

5、最后的STATISTICS统计信息部分显示关于查询的元数据:

  • Query time响应花费的时间
  • SERVER响应 DNS 服务器的 IP 地址和端口
  • WHEN命令运行的时间戳
  • MSG SIZE rcvd从 DNS 服务器收到的回复大小

DNS查询的利器! linux的dig命令基本用法详解

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查询的利器! linux的dig命令基本用法详解

手动指定 DNS 服务器

仅输出响应结果

在绝大多数情况下,我们只使用 dig 查询相应的 DNS 记录,而不需要太多复杂的、不相关的响应和输出。此时就可以使用以下两种方式。

输出简短结果

如果只想获取 DNS 查询的简短响应,可以使用+short参数,例如:

dig www.sysgeek.cn +short

DNS查询的利器! linux的dig命令基本用法详解

输出简短结果

输出仅包括查询www.sysgeek.cn域名响应javascript的 CNAME 记录和最终的 A 记录。

输出详细响应

要获取 DNS 查询更详细的响应结果,可以先使用+noall参数关闭所有结果,再使用+answer参数打开结果部分。

dig www.sysgeek.cn +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 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

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令查询 A 记录

如前所述,如果没有指定 DNS 记录类型,dig 也将请求 A 记录。 您也可以在不指定a参数的情况下查询「A 记录」。

使用 dig 命令查询 CNAME 记录

要查询「别名记录」,请使用cname参数:

dig +nocmd www.sysgeek.cn cname +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令查询 CNAME 记录

使用 dig 命令查询 TXT 记录

可以使用txt参数检索特定域的所有「TXT 记录」:

dig +nocmd sysgeek.cn txt +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令查询 TXT 记录

使用 dig 命令查询 MX 记录

要获取特定域的所有邮件交换记录,请使用mx参数:

dig +nocmd sysgeek.cn mx +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令查询 MX 记录

使用 dig 命令查询 NS 记录

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

dig +nocmd sysgeek.cn ns +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令查询 NS 记录

使用 dig 命令进行 PTR 反向 DNS 查询

要查询与特定 IP 地址关联的主机名,请使用-x参数。例如,要在208.118.235.148上执行反向查询,可以执行以下命令:

dig -x 208.118.235.148 +noall +answer

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令进行反向 DNS 查询

从输出中可以看出,IP 地址208.118.235.148与主机名ip-208-118-235-148.twdx.net.相关联。

Trace 参数

+trace参数可以列出查询经过的不同 DNS 服务器,直到最终目的地。可以使用此参数来确定流量中断的 IP 地址:

dig sysgeek.cn +trace

DNS查询的利器! linux的dig命令基本用法详解

使用 dig 命令进行 trace 跟踪

dig 命令批量 DNS 查询

如果要对大量域名进行 Dhttp://www.chinasem.cnNS 查询,可以将其全部写入到一个文本文件中(一行一个),然后使用-f参数,再跟止文件名即可,例如:

dig -f domains.txt +short

.digrc 文件

我们还可通过不同用户的${HOME}/.digrc文件来控制 dig 命令的行为,如果.digrc文件存在于用户的主目录中,则 dig 可以读取其中的参数,而无需用户在执行命令时手动添加。例如,直接在~/.digrc文件中写入+nocmd +noall +answer参数。

推荐阅读:DNS 缓存刷新方法汇总

这篇关于DNS查询的利器! linux的dig命令基本用法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155623

相关文章

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

MySQL连表查询之笛卡尔积查询的详细过程讲解

《MySQL连表查询之笛卡尔积查询的详细过程讲解》在使用MySQL或任何关系型数据库进行多表查询时,如果连接条件设置不当,就可能发生所谓的笛卡尔积现象,:本文主要介绍MySQL连表查询之笛卡尔积查... 目录一、笛卡尔积的数学本质二、mysql中的实现机制1. 显式语法2. 隐式语法3. 执行原理(以Nes

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析