dig 代表 Domain Information Groper,是一个用于收集域名服务器信息的命令行网络工具。 dig 命令是另一个强大的工具,类似于nslookup用于诊断 dns 相关问题。
我们可以使用 dig 命令查询各种 dns 服务器来获取地址记录、CNAME、TXT、邮件交换记录等记录……我还发现了一个有用的网站showmydns.net从全球多个地点搜索 DNS 记录。
本指南向您介绍如何使用 Linuxdig
带有实际示例的命令行实用程序。
Linux 中的 dig 命令
在大多数 Unix/Linux 操作系统的默认存储库中都可以使用 dig 实用程序。在基于 Debian 的系统上,可以使用 dig 命令dnsutils
包裹。基于 Redhat 的系统 dig 命令可在bind-utils
rpm 包。
Syntax:
基本且常用的 dig 命令语法如下所示:
dig [@server] name [type]
挖掘版本:
将 -v 选项与 dig 命令一起使用可显示系统上的 dig 版本。
dig -v
DiG 9.11.3-1ubuntu1.13-Ubuntu
Dig 命令行选项和示例
以下是常用的命令行选项和 dig 命令的示例。
1. 基本挖掘命令
基本的 dig 命令接受域名作为命令行参数并打印地址记录。
dig tecadmin.net
Output:
; <<>> DiG 9.11.3-1ubuntu1.13-Ubuntu <<>> tecadmin.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22998
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;tecadmin.net. IN A
;; ANSWER SECTION:
tecadmin.net. 257 IN A 172.67.134.5
tecadmin.net. 257 IN A 104.28.16.96
tecadmin.net. 257 IN A 104.28.17.96
;; Query time: 35 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Dec 24 11:36:06 IST 2020
;; MSG SIZE rcvd: 89
结果中答案部分:包含您所请求的主要信息。您可以忽略输出的其他部分,其中包含有关您所做查询的其他详细信息。
2. 查询特定DNS服务器
默认 dig 命令查询系统上配置的 dns 服务器。例如,Linux 系统在 /etc/resolv.conf 中保留默认的 DNS 条目。
您可以通过将 DNS 服务器作为命令行参数传递来覆盖要查询的默认 DNS。 DNS IP 必须以 @ 符号开头。
dig @8.8.8.8 tecadmin.net
3. 打印简答
Use +short
以简短形式打印结果的命令行选项。这对于 shell 脚本和其他自动化任务基本上很有用。
dig tecadmin.net +short
Output:
172.67.134.5
104.28.16.96
104.28.17.96
4. 打印详细但具体的结果
Use +noall
with +answer
打印详细但具体的信息。这将仅打印答案部分,其中包括更多详细信息。
dig tecadmin.net +noall +answer
Output:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> tecadmin.net +noall +answer
;; global options: +cmd
tecadmin.net. 51 IN A 172.67.134.5
tecadmin.net. 51 IN A 104.28.17.96
tecadmin.net. 51 IN A 104.28.16.96
您还可以指定+nocmd
dig 命令后的选项仅打印更具体的答案部分。
dig +nocmd tecadmin.net +noall +answer
Output:
tecadmin.net. 284 IN A 104.28.16.96
tecadmin.net. 284 IN A 104.28.17.96
tecadmin.net. 284 IN A 172.67.134.5
如何使用 dig 命令搜索特定记录
接下来,使用 dig 命令查询具体的 DNS 记录。
-
Query Address (A) Record - A DNS Address (A) records is used to bind a domain name to an IP address. In simple worlds, when a user access a website, this records tells system the IP address of server hosting that website.
dig +nocmd tecadmin.net A +noall +answer
Output:
tecadmin.net. 129 IN A 104.28.16.96
tecadmin.net. 129 IN A 104.28.17.96
tecadmin.net. 129 IN A 172.67.134.5
-
Query NS Record - Use the NS option to get a list of authoritative DNS servers for a domain name.
dig +nocmd tecadmin.net NS +noall +answer
Output:
tecadmin.net. 21599 IN NS alec.ns.cloudflare.com.
tecadmin.net. 21599 IN NS athena.ns.cloudflare.com.
-
Query MX Record - A MX record (mail exchanger) is used to specify the mail server responsible for accepting email messages on behalf of a domain name.
dig +nocmd tecadmin.net MX +noall +answer
Output:
tecadmin.net. 299 IN MX 0 dc-75c7d428c907.tecadmin.net.
-
Query TXT Record - A TXT record is multi purpose record used for associating arbitary text information with a domain name. Generally, we use this record for domain ownership verification, email security records like SPF, DKIM, and DMARC etc.
dig +nocmd tecadmin.net TXT +noall +answer
Output:
tecadmin.net. 299 IN TXT "google-site-verification="
tecadmin.net. 299 IN TXT "v=spf1 include:spf.mandrillapp.com ?all"
-
查询所有记录
您还可以使用选项ALL
获取某个域的所有 dns 记录。
dig +nocmd tecadmin.net ALL +noall +answer
将选项设置为默认值
在上面的教程中,您使用了多个命令行选项来自定义结果,例如+nocmd, +noall, +answer
等等。但是你每次都必须在命令行上写选项。
您还可以在主目录中创建一个 .digrc 文件,以便在每次进行 dig 查询时自动应用。
cat ~/.digrc
+nocmd +noall +answer
下次运行 dig 时将默认使用上面指定的选项。
dig tecadmin.net
Output:
tecadmin.net. 104 IN A 104.28.16.96
tecadmin.net. 104 IN A 172.67.134.5
tecadmin.net. 104 IN A 104.28.17.96
结论
在本教程中,您通过各种选项和示例了解了 dig 命令的用法。您还可以尝试网络应用程序,例如showmydns.net查询全球多个地点的 DNS 记录。这对于在添加或更新 dns 记录时检查 dns 传播很有用。