4

Linux dig命令 DNS查询

 1 year ago
source link: https://www.myfreax.com/ru-he-zai-linuxshi-yong-dnscha-xun-gong-ju-dig/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
dns

Linux dig命令 DNS查询

在本教程中我们将说明如何在Linux使用DNS查询工具dig。包括在Linux发行版安装dig。了解dig的输出,仅输出应答,详细的应答ANSWER信息

Updated At 2 Dec 2022 8 min read
By myfreax
Linux dig命令 DNS查询

Linux dig命令 DNS查询

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

使用dig命令,您可以查询各种DNS记录的信息,包括主机地址,邮件交换和域名服务器。

它是系统管理员中用于排除DNS问题的最常用工具,它具很高的灵活性和易用性。

在本教程中我们将说明如何在Linux使用dig命令查询DNS。包括在Linux发行版安装dig。了解dig的输出,仅输出应答,详细的应答ANSWER信息。

指定域名服务器查询,了解DNS的记录类型,查询CNAME记录,查询TXT记录,批量查询,反向DNS查找,查询所有记录,查询NS记录,查询MX记录,配置dig。

安装 dig命令

你可以运行命令dig -v检查dig版本来验证您的系统是否已安装dig。如果你的系统已经安装dig命令,dig -v命令将会打印版本号DiG 9.11.3-1ubuntu1.1-Ubuntu

如果您的Linux系统还有没有安装dig命令,dig -v命令将会打印dig: command not found,则可以使用发行版的软件包管理器来安装它。

如果你的计算机运行的是基于Debian的Linux发行版,比如Ubuntu,Linux mint。请运行命令sudo apt install dnsutils安装dig。

如果你的计算机运行的是基于RedHat的Linux发行版,比如CentOS,Fedora等发行版,请运行命令sudo yum install bind-utils安装dig。

如果你是Arch用户可以运行命令sudo pacman -S bind-tools安装dig。

sudo apt install dnsutils

sudo yum install bind-utils

sudo pacman -S bind-tools

了解dig输出

使用dig命令的最简单的方式,不指定任何选项运行dig命令。dig命令打印非常详细的输出。例如命令dig linux.org将会查询linux.org域的信息。

dig linux.org
; <<>> DiG 9.10.3-P4-Ubuntu <<>> linux.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57452
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

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

;; ANSWER SECTION:
linux.org.		300	IN	A	104.27.167.219
linux.org.		300	IN	A	104.27.166.219

;; Query time: 256 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 19 11:12:41 CST 2019
;; MSG SIZE  rcvd: 59

输出的第一行打印已安装的dig版本号以及运行的DNS查询。第二行显示全局选项,默认是cmd。

如果您不希望第二行包含在输出中,可以使用+nocmd选项。此选项必须是dig命令后的第一个参数。

Got Answer应答包括从请求授权后来自DNS服务器应答的详细信息。此部分的第一行是标题,包括操作码(由dig执行的操作)和操作的状态。

状态NOERROR意味着所请求的都已授权查询并且没有任何问题。可以使用+nocomments选项删除应答的输出。

OPT PSEUDOSECTION此部分仅在较新dig版本显示。您可以在此处阅读DNS扩展机制EDNS的更多信息。如果您不希望此部分包含在输出中,请使用+noedns选项。

QUESTION显示dig命令要查询的记录类型。默认是A记录,您可以使用+noquestion选项禁用此部分的输出。

ANSWER章节为我们提供了一个应答。正如我们提到的,默认情况下dig会请求A记录。这里域linux.org指向IP地址104.18.59.123

如果你想关闭ANSWER输出,可以使用+noanswer选项从输出中删除此部分。

AUTHORITY SECTION告诉我们哪些服务器是应答有询域的DNS的AUTHORITY。您可以使用+noauthority选项禁用输出的此部分。

ADDITIONAL SECTION为我们提供了有关AUTHORITY DNS服务器的IP地址的信息。

Query time这是dig输出的最后一部分,其中包含查询的统计信息。您可以使用+nostats选项禁用此信息。

仅输出应答ANSWER

在大多数情况下,您只想快速查询ANSWER SECTION,要获得查询的简短应答ANSWER。

请使用dig命令的+short选项,例如命令dig linux.org +short仅打印A记录的IP地址。

104.18.59.123
104.18.58.123

详细的应答ANSWER

想要更详细的ANSWER应答信息,请使用dig命令的+noall选项关闭所有结果,然后仅使用+answer选项,展开ANSWER的详细信息。

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

指定域名服务器查询

默认情况下,如果未指定DNS服务器,dig将使用/etc/resolv.conf文件中列出的域名服务器。

要指定查询的DNS服务器,请使用@符号,后跟域名服务器IP地址或主机名运行dig命令。

例如命令dig linux.org @8.8.8.8使用Google DNS服务器8.8.8.8查询linux.org域名信息。

dig linux.org @8.8.8.8

DNS 记录类型

Dig命令允许您通过将记录类型附加到查询末尾来运行指定DNS记录类型的查询。在下一节中,我们将向您展示如何搜索最常见的记录。

例如A记录(IP地址),CNAME(别名),TXT(文本记录),MX记录(邮件交换)和NS(域名服务器记录)。

查询A记录

获取域名的所有A记录地址,请使用dig命令的a选项。如果未指定DNS记录类型,dig将请求A记录。

您也可以在不指定a选项查询A记录,运行命令dig +nocmd google.com a +noall +answer

dig +nocmd google.com a +noall +answer
google.com.		300	IN	A	172.217.27.46

查询CNAME别名记录

要查找指定域名的别名记录,请使用dig命令的cname选项。

命令dig +nocmd mail.google.com cname +noall +answer将会查询mail.google.com的别名记录。

dig +nocmd mail.google.com cname +noall +answer

查询TXT记录

使用dig命令的txt选项可检索指定域名的所有TXT记录。

dig +nocmd google.com txt +noall +answer

查询MX记录

获取指定域名所有邮件服务器列表,请使用dig命令的mx选项。

dig +nocmd google.com mx +noall +answer

查询NS记录

要查找指定域的名称服务器,请使用dig命令的ns选项。

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.

查询所有记录

使用any选项可获取指定域名的所有DNS记录。

dig +nocmd google.com any +noall +answer

反向DNS查找

要查询与指定IP地址关联的主机名或者域名,可以使用dig命令的-x选项,执行反向DNS解释。

例如命令dig -x 208.118.235.148 +noall +answer执行反向DNS解释,查找ip地址208.118.235.148的域名。

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

dig -x 208.118.235.148 +noall +answer
; <<>> 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.

如果要使用dig命令查询大量的域名,可以将它们添加到文件中,每行一个域名,然后使用dig的-f选项指定文件名。

例如命令dig -f domains.txt +short查询domains.txt文件的所有域名。

dig -f domains.txt +short
google.com
myfreax.com
linux.org
domains.txt

配置 dig

可以在${HOME}/.digrc文件为每个用户设置选项来控制dig命令的行为。

如果.digrc文件指定的选项与用户在命令行指定选项冲突,则优先使用命令行指定的选项。

例如,如果只想打印应答部分,请使用你喜欢的文本编辑器编辑文件,在本教程中我们将使用vim编辑文件~/.digrc

vim ~/.digrc
+nocmd +noall +answer
~/.digrc

至此您应该能够解决大多数与DNS相关的问题,如果您喜欢我们的内容,欢迎转发。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK