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 选项可以分别隐藏输出中的注释行和查询时的问题部分。
下图展示了这些选项的使用效果:

5. 查询域名的名称服务器
继续,你可以通过dig命令查询NS记录,方式与查询MX记录相同。操作方法如下:
dig NS example.com
以下是该命令在我们的系统中产生的输出:

6. 使用dig命令获取域名的IP地址
如果只想让dig显示服务器的IP地址,使用 +short 选项。例如:
dig example.com +short

如果想一次查询多个网站/服务器,可以将域名列表保存到一个文件中,然后通过 -f 选项将该文件名作为输入传递给dig命令。
-f file 批处理模式:dig从给定文件中读取要处理的查找请求列表。 文件中的每一行应以与在命令行界面向dig提交查询相同的格式组织。
示例如下:
