Dig 命令(Domain Information Groper)是最流行的 DNS 测试工具之一。您可以用它来在Linux上排查DNS问题。
"dig"命令是一个用于查询DNS(Domain Name System)信息的工具。它通常在命令行中使用,可以用来获取域名相关的各种信息,比如IP地址、域名服务器记录等。
当在命令行中输入dig命令以及一个域名时,它会向指定的DNS服务器发送一个DNS查询请求,并返回相关的信息。这些信息可能包括域名的IP地址,或者其他与该域名相关的记录,比如MX记录(邮件服务器记录)、CNAME记录(规范名称记录)等。
在执行dig命令时,你可以提供不同的参数来指定要查询的信息类型,比如A记录(IPv4地址)、AAAA记录(IPv6地址)、MX记录(邮件服务器记录)等。此外,你还可以指定要查询的特定DNS服务器、设置超时时间、查询特定的记录类型等。
在Ubuntu上安装dig,可以使用如下命令:
sudo apt-get install dnsutils
安装过程:
mirror@Ubuntu22:~$ sudo apt-get install dnsutils
[sudo] password for mirror:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
dnsutils
0 upgraded, 1 newly installed, 0 to remove and 110 not upgraded.
Need to get 3928 B of archives.
After this operation, 59.4 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 dnsutils all 1:9.18.18-0ubuntu0.22.04.1 [3928 B]
Fetched 3928 B in 1s (6093 B/s)
Selecting previously unselected package dnsutils.
(Reading database ... 24205 files and directories currently installed.)
Preparing to unpack .../dnsutils_1%3a9.18.18-0ubuntu0.22.04.1_all.deb ...
Unpacking dnsutils (1:9.18.18-0ubuntu0.22.04.1) ...
Setting up dnsutils (1:9.18.18-0ubuntu0.22.04.1) ...
mirror@Ubuntu22:~$
范例:dig www.baidu.com
mirror@Ubuntu22:~$ dig www.baidu.com
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2424
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1146 IN CNAME www.a.shifen.com.
www.a.shifen.com. 38 IN A 153.3.238.102
www.a.shifen.com. 38 IN A 153.3.238.110
;; Query time: 40 msec
;; SERVER: 114.114.114.114#53(114.114.114.114) (UDP)
;; WHEN: Mon Nov 27 15:13:05 CST 2023
;; MSG SIZE rcvd: 101
mirror@Ubuntu22:~$
范例:dig www.baidu.com +short
mirror@Ubuntu22:~$ dig www.baidu.com +short
www.a.shifen.com.
153.3.238.102
153.3.238.110
mirror@Ubuntu22:~$
只显示 IP 地址,而不显示任何其他信息。快速且易于使用的,基本上只有 A 记录。
3. dig domain.com MX
范例:dig google.com MX
测试了百度和163,都没有MX记录,最后找到用Google可以看到有MX记录。
mirror@Ubuntu22:~$ dig google.com MX
; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> google.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8524
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN MX
;; ANSWER SECTION:
google.com. 35 IN MX 10 smtp.google.com.
;; Query time: 40 msec
;; SERVER: 114.114.114.114#53(114.114.114.114) (UDP)
;; WHEN: Mon Nov 27 15:19:26 CST 2023
;; MSG SIZE rcvd: 60
mirror@Ubuntu22:~$
可以查询不同类型的记录,例如邮件交换器记录。MX 记录显示负责接受电子邮件的邮件服务器。您可以查看所有服务器是否都正常工作以及响应是否太慢。
更多用法参考:Linux dig指令的十三种用法
推荐一些对 DNS 诊断有用的工具: