dig命令是Linux中的网络管理工具,全称"Domain Information Groper(域信息搜索工具)",用于查询DNS(域名系统)服务器。它允许用户检索关于域名的信息,如IP地址、邮件服务器(MX记录)以及其他DNS资源记录。dig主要用于排查DNS问题,可提供详细的输出,包括查询的响应时间以及提供信息的DNS服务器。与更基础的命令(如nslookup)相比,dig的灵活性和精准性使其成为网络管理员在诊断DNS问题、测试域名配置和执行DNS查询时的首选工具。

1. 使用dig命令解析域名

解析域名 example.com:

dig example.com

如果域名可以正常解析,结果将类似如下:

root@server1:~# dig howtoforge.com

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

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

;; ANSWER SECTION:
howtoforge.com. 299 IN A 104.24.0.68
howtoforge.com. 299 IN A 104.24.1.68

;; Query time: 233 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Aug 08 12:35:15 CEST 2024
;; MSG SIZE rcvd: 75

2. 使用dig查询本地DNS服务器

如果要检查本地Web服务器是否负责该域名,使用以下命令:

dig @localhost example.com

3. 使用dig查询邮件服务器名称

如果你想知道哪个邮件服务器负责处理 example.com 的邮件,可以使用以下命令:

dig MX example.com

结果将类似如下:

root@server1:~# dig MX howtoforge.com

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> MX howtoforge.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14115
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;howtoforge.com. IN MX

;; ANSWER SECTION:
howtoforge.com. 299 IN MX 10 mail.howtoforge.com.

;; Query time: 205 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Wed Aug 08 10:36:30 CEST 2024
;; MSG SIZE rcvd: 64

4. 查看dig命令的更多选项

要获取dig命令的所有可用选项,可以运行:

dig --help

更详细的说明可以在dig命令的man手册中找到:

man dig

以下是man手册中关于dig用法的说明摘录:

dig的典型调用方式如下:

dig @server name type

其中:

  server
     是要查询的名称服务器的名称或IP地址。可以是点分十进制格式的IPv4地址,
     也可以是冒号分隔格式的IPv6地址。当提供的server参数是主机名时,
     dig会在查询该名称服务器之前先解析该名称。

     如果没有提供server参数,dig会查阅/etc/resolv.conf;如果找到了地址,
     它会查询该地址处的名称服务器。如果使用了-4或-6选项,
     则只尝试相应传输协议的地址。如果没有找到可用地址,dig会将查询发送到本地主机。
     来自响应名称服务器的回复将被显示出来。

  name
     是要查找的资源记录的名称。

  type
     表示所需的查询类型——ANY、A、MX、SIG等。type可以是任何有效的查询类型。
     如果没有提供type参数,dig将执行A记录的查找。

如果需要,可以强制dig命令从输出中移除某些部分。例如,使用 +nocomments+noquestion 选项可以分别隐藏输出中的注释行和查询时的问题部分。

下图展示了这些选项的使用效果:

Linux dig命令使用教程:DNS域名解析完整指南

5. 查询域名的名称服务器

继续,你可以通过dig命令查询NS记录,方式与查询MX记录相同。操作方法如下:

dig NS example.com

以下是该命令在我们的系统中产生的输出:

Linux dig命令使用教程:DNS域名解析完整指南

6. 使用dig命令获取域名的IP地址

如果只想让dig显示服务器的IP地址,使用 +short 选项。例如:

dig example.com +short

Linux dig命令使用教程:DNS域名解析完整指南

如果想一次查询多个网站/服务器,可以将域名列表保存到一个文件中,然后通过 -f 选项将该文件名作为输入传递给dig命令。

-f file

批处理模式:dig从给定文件中读取要处理的查找请求列表。
文件中的每一行应以与在命令行界面向dig提交查询相同的格式组织。

示例如下:

Linux dig命令使用教程:DNS域名解析完整指南