dig
是一个命令行DNS查询实用程序,允许您诊断域名解析问题。如果您没有域名,建议您先去这里注册一个域名,将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。
dig
是通常与Bind DNS服务器打包在一起的DNS实用程序集合的一部分。您可以通过为Linux发行版发出适当的命令来安装这些实用程序。
在CentOS服务器上:
yum install bind-utils
在Debian / Ubuntu服务器上:
apt-get install dnsutils
考虑以下基本dig
输出:
$ dig example.com
; <<>> DiG 9.6.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11982
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7
;; Query time: 54 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 14: 2010
;; MSG SIZE rcvd: 57
查询返回NOERROR
的成功结果,dig
能够检索名称为example.com
的A记录,该记录解析为IP地址107.92.2.7
。 dig
包括许多关于查询本身的数据点,包括使用的DNS解析器(192.168.1.1
),完成查询所需的时间以及查询响应的大小。
要查询不同类型的DNS记录,以下两个命令都将生成相同的输出:
$ dig example.com mx
$ dig mx example.com
; <<>> DiG 9.6.1 <<>> mx example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52563
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN MX
;; ANSWER SECTION:
example.com. 86400 IN MX 10 example.com.
;; Query time: 53 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 15:14:05 2010
;; MSG SIZE rcvd: 57
如果您尝试查询不存在的域,例如nonextant.example.com
,您将看到类似于以下内容的结果:
$ dig nonextant.example.com
; <<>> DiG 9.6.1 <<>> nonextant.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 53119
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;nonextant.example.com. IN A
;; AUTHORITY SECTION:
example.com. 10800 IN SOA ns1.linode.com. username.example.com. 2010051349 14400 14400 1209600 86400
;; Query time: 91 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 15:19:11 2010
;; MSG SIZE rcvd: 100
在此示例中,查询返回状态NXDOMAIN
以及描述每个权威DNS区域中的全局值的SOA
或权限开始记录。 您可能偶尔也会看到包含多个A记录的记录。 在这些情况下,多个主机能够响应单个名称。 请参阅以下示例:
$ dig example.com
; <<>> DiG 9.6.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11982
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7
example.com. 86400 IN A 107.92.2.9
example.com. 86400 IN A 107.92.2.13
;; Query time: 54 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Aug 24 14: 2010
;; MSG SIZE rcvd: 57
使用+trace
选项,dig
将提供允许您遵循查询所采用的每个连续分层步骤的输出:
$ dig +trace www.example.com
; <<>> DiG 9.6.1 <<>> +trace www.example.com
;; global options: +cmd
. 305393 IN NS m.root-servers.net.
. 305393 IN NS e.root-servers.net.
. 305393 IN NS f.root-servers.net.
. 305393 IN NS l.root-servers.net.
. 305393 IN NS k.root-servers.net.
. 305393 IN NS c.root-servers.net.
. 305393 IN NS i.root-servers.net.
. 305393 IN NS j.root-servers.net.
. 305393 IN NS g.root-servers.net.
. 305393 IN NS h.root-servers.net.
. 305393 IN NS a.root-servers.net.
. 305393 IN NS b.root-servers.net.
. 305393 IN NS d.root-servers.net.
;; Received 512 bytes from 192.168.1.1#53(192.168.1.1) in 19 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 504 bytes from 202.12.27.33#53(m.root-servers.net) in 109 ms
example.com. 172800 IN NS ns1.linode.com.
example.com. 172800 IN NS ns2.linode.com.
example.com. 172800 IN NS ns3.linode.com.
;; Received 150 bytes from 192.52.178.30#53(k.gtld-servers.net) in 106 ms
www.example.com. 86400 IN A 107.92.2.7
www.example.com. 86400 IN NS ns3.linode.com.
www.example.com. 86400 IN NS ns4.linode.com.
www.example.com. 86400 IN NS ns5.linode.com.
www.example.com. 86400 IN NS ns1.linode.com.
www.example.com. 86400 IN NS ns2.linode.com.
;; Received 234 bytes from 65.19.178.10#53(ns2.linode.com) in 96 ms
此示例跟踪域www.example.com
的DNS查询。 这最终解析为IP地址107.92.2.7
。 DNS查询从具有根级别的域.
的末尾开始,并从右向左继续,直到DNS服务器能够提供权威A记录。
DNS跟踪可帮助您确定DNS授权是否已正确委派以及DNS 粘合记录是否导致解析不正确。DNS跟踪还提供有关完成查询所需的时间以及提供中间记录的特定服务器的信息。
任何DNS服务器都可以发布任何域的记录。但是,在正常使用中,只会查询已授权给它们的权限的DNS服务器。您可以使用dig
查询任意DNS服务器以获取它们可能未被委派权限的记录,如以下示例所示:
$ dig @ns1.linode.com example.com
; <<>> DiG 9.7.1-P2 <<>> @ns1.linode.com example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 86400 IN A 107.92.2.7
;; AUTHORITY SECTION:
example.com. 86400 IN NS ns3.linode.com.
example.com. 86400 IN NS ns2.linode.com.
example.com. 86400 IN NS ns1.linode.com.
example.com. 86400 IN NS ns5.linode.com.
example.com. 86400 IN NS ns4.linode.com.
;; ADDITIONAL SECTION:
ns1.linode.com. 86400 IN A 69.93.127.10
ns2.linode.com. 86400 IN A 65.19.178.10
ns3.linode.com. 86400 IN A 75.127.96.10
ns4.linode.com. 86400 IN A 207.192.70.10
ns5.linode.com. 86400 IN A 109.74.194.10
;; Query time: 55 msec
;; SERVER: 69.93.127.10#53(69.93.127.10)
;; WHEN: Wed Aug 25 11:30:20 2010
;; MSG SIZE rcvd: 234
指定要查询的服务器的名称,作为格式为@[server]
的dig
命令的参数,其中[server]
是IP DNS服务器的名称或地址。
通过将该记录类型(例如,AAAA,MX,TXT或SRV)添加到dig
命令来指定不同类型的DNS记录。请考虑以下SRV记录查询示例:
$ dig srv _jabber._tcp.example.com
; <<>> DiG 9.7.1-P2 <<>> srv _jabber._tcp.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33643
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;_jabber._tcp.example.com. IN SRV
;; ANSWER SECTION:
_jabber._tcp.example.com. 300 IN SRV 0 0 5269 hostname.example.com
;; Query time: 53 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed Aug 25 12:40:13 2010
;; MSG SIZE rcvd: 90
dig命令后使用+short
修饰符缩写dig
的输出:
$ dig example.com +short
207.192.72.27
您可以将+short
修改器与其他dig命令组合以生成在脚本中可能更有用的输出,如下所示:
$ dig mx example.com +short
10 mail.example.com.
$ dig +trace +short example.com
NS a.root-servers.net. from server 192.168.1.1 in 18 ms.
NS b.root-servers.net. from server 192.168.1.1 in 18 ms.
NS d.root-servers.net. from server 192.168.1.1 in 18 ms.
NS m.root-servers.net. from server 192.168.1.1 in 18 ms.
NS e.root-servers.net. from server 192.168.1.1 in 18 ms.
NS f.root-servers.net. from server 192.168.1.1 in 18 ms.
NS l.root-servers.net. from server 192.168.1.1 in 18 ms.
NS k.root-servers.net. from server 192.168.1.1 in 18 ms.
NS c.root-servers.net. from server 192.168.1.1 in 18 ms.
NS i.root-servers.net. from server 192.168.1.1 in 18 ms.
NS j.root-servers.net. from server 192.168.1.1 in 18 ms.
NS g.root-servers.net. from server 192.168.1.1 in 18 ms.
NS h.root-servers.net. from server 192.168.1.1 in 18 ms.
A 107.92.2.7 from server ns2.linode.com in 94 ms.
$ dig soa +short example.com
ns1.linode.com. username.example.com. 2010051349 14400 14400 1209600 86400
$ dig @ns2.linode.com ns +short example.com
ns5.linode.com.
ns1.linode.com.
ns2.linode.com.
ns3.linode.com.
ns4.linode.com.
参考文献:《Use dig to Perform Manual DNS Queries》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。