Dig 命令使用详解

June 27, 2022

这篇文章详细介绍了如何使用 dig 命令来查询 DNS 信息。首先,它解释了如何使用 dig 命令查询单个主机的信息,然后介绍了如何从指定的 DNS 服务器上进行查询,最后,文章还讲解了如何使用 dig 的 -x 选项来反向解析 IP 地址对应的域名。文章中还包含了一些实际的命令示例和结果输出,帮助读者更好地理解和使用 dig 命令。

Linux下解析域名除了使用nslookup之外,开可以使用dig命令来解析域名。

dig命令可以得到更多的域名信息。dig 命令主要用来从 DNS 域名服务器查询主机地址信息。dig的全称是 (domain information groper)。它是一个用来灵活探测DNS的工具。它会打印出>DNS name server的回应。

查询单个域名的DNS信息

dig 命令最典型的用法就是查询单个主机的信息。

linuxidc@linuxidc:~$ dig www.linuxidc.com [+trace]

; < <>> DiG 9.11.3-1Ubuntu1.5-Ubuntu < <>> www.linuxidc.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 17774
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.linuxidc.com.  IN A

;; ANSWER SECTION:
www.linuxidc.com. 5 IN A 122.228.238.15
www.linuxidc.com. 5 IN A 106.42.25.203

;; Query time: 10 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 10:55:35 CST 2019
;; MSG SIZE  rcvd: 77

Linux下解析域名命令-dig 命令使用详解Linux下解析域名命令-dig 命令使用详解

输出说明

第一部分显示 dig 命令的版本和输入的参数。 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。 第三部分中的 “QUESTION SECTION” 显示我们要查询的域名。 第四部分的 “ANSWER SECTION” 是查询到的结果。 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。

默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。

从指定的 DNS 服务器上查询

由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号:

linuxidc@linuxidc:~$ dig @8.8.8.8 m.linuxidc.com

; < <>> DiG 9.11.3-1ubuntu1.5-Ubuntu < <>> @8.8.8.8 m.linuxidc.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 38966
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.linuxidc.com.   IN A

;; ANSWER SECTION:
m.linuxidc.com.  199 IN A 122.228.238.71
m.linuxidc.com.  199 IN A 113.107.238.155

;; Query time: 120 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 03 11:21:48 CST 2019
;; MSG SIZE  rcvd: 75

从上图可以看到本次查询的 DNS 服务器为 8.8.8.8

如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:

Linux下解析域名命令-dig 命令使用详解Linux下解析域名命令-dig 命令使用详解

linuxidc@linuxidc:~$ dig m.linuxidc.com

上面查询的 DNS 服务器就变成了:

Linux下解析域名命令-dig 命令使用详解Linux下解析域名命令-dig 命令使用详解

反向查询

在前面的查询中我们指定了查询服务器为 8.8.8.8,这是谁家的 DNS 服务器?其实我们可以使用 dig 的 -x 选项来反向解析 IP 地址对应的域名:

linuxidc@linuxidc:~$ dig -x 8.8.8.8 +short
google-public-dns-a.google.com.
Linux

IARNO

服务端开发

Core 文件分析

Gomonkey测试框架