dig(DomainInformationGroper)是一款功能强悍的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:commandnotfound。请使用以下命令安装:

Ubuntu和Debian安装dig命令

sudo apt update && sudo apt install dnsutils

CentOS和Fedora安装dig命令

sudo yum install bind-utils

ArchLinux安装dig命令

sudo pacman -S bind-tools

dig命令句型

dig命令的使用方式如下:

命令用英语怎么说_命令用英文怎么说_linux命令怎么用

dig [server] [name] [type]

了解dig命令输出

当不带参数使用dig查询单个主机(域名)时,它的输出十分详尽,比如查询系统极客域名:

dig www.sysgeek.cn

输出结果长这样:

dig命令输出

最重要的部份是ANSWER部份:

ANSWER部份

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

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

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

dig版本及查询域名

倘若不希望在输出中包括那些行linux内存管理,请使用+nocmd参数。(此参数必须是dig命令后的第一个参数。)

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

Flags是回答格式的参考。

HEADER部份

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

3OPTPSEUDOSECTION显示中级数据,仅在较新版本的dig工具中显示,您可以阅读更多关于DNS(EDNS)的扩充机制。

OPTPSEUDOSECTION部份

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

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

QUESTION部份

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

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

STATISTICS统计信息

可以使用+nostats参数禁用此部份输出。

指定DNS服务器

默认情况下,假如未指定名称服务器,dig命令会使用/etc/resolv.conf文件中列举的服务器进行查询。

要指定DNS服务器进行查询,可以使用@后跟DNS服务器IP地址的形式来自动指定DNS服务器。

比如,要使用GoogleDNS的8.8.8.8或CloudFlareDNS的1.1.1.1查询域名,可以使用如下命令:

dig www.sysgeek.cn @8.8.8.8

自动指定DNS服务器

仅输出响应结果

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

输出简略结果

假如只想获取DNS查询的简略响应,可以使用+short参数linux命令怎么用,比如:

dig www.sysgeek.cn +short

输出简略结果

输出仅包括查询域名响应的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记录

命令用英文怎么说_命令用英语怎么说_linux命令怎么用

使用dig命令查询NS记录

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

dig +nocmd sysgeek.cn ns +noall +answer

使用dig命令查询NS记录

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

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

dig -x 208.118.235.148 +noall +answer

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

从输出中可以看出,IP地址208.118.235.148与主机名.相关联。

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参数。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复