当我查看 dig 的手册页时,我得到以下信息:
+[no]trace
Toggle tracing of the delegation path from the root name servers for the name
being looked up. Tracing is disabled by default. When tracing is enabled, dig
makes iterative queries to resolve the name being looked up. It will follow
referrals from the root servers, showing the answer from each server that was
used to resolve the lookup.
Run Code Online (Sandbox Code Playgroud)
那么这在实践中是如何工作的呢?dig
在功能上等效的等效命令系列(没有 +trace)是什么?
mil*_*lli 43
dig +trace
它的工作原理是假装它是一个名称服务器,并使用从树的根部开始的迭代查询沿着命名空间树向下工作,并在此过程中遵循引用。
它做的第一件事是向普通系统 DNS 服务器询问“.”的 NS 记录。
在它得到响应后,它将是根名称服务器的当前列表,它会选择一个,然后如果第一次没有在附加记录部分得到它,那么它会要求该名称的 A 记录,所以它得到了将下一个查询发送到的 IP 地址。假设它选择了 IP 地址为 192.5.5.241 的 f.root-servers.net。
在这一点上,让我们使用dig +trace www.google.co.uk.
我们想要跟踪解析路径的域名作为我们的命令。
下一个幕后查询将是这样的:
$ dig +norecurse @192.5.5.241 www.google.co.uk
; <<>> DiG 9.9.4 <<>> +norecurse @192.5.5.241 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8962
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 11, ADDITIONAL: 15
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk. IN A
;; AUTHORITY SECTION:
uk. 172800 IN NS ns5.nic.uk.
uk. 172800 IN NS ns6.nic.uk.
uk. 172800 IN NS ns4.nic.uk.
uk. 172800 IN NS nsc.nic.uk.
uk. 172800 IN NS ns2.nic.uk.
uk. 172800 IN NS ns3.nic.uk.
uk. 172800 IN NS nsd.nic.uk.
uk. 172800 IN NS nsa.nic.uk.
uk. 172800 IN NS ns7.nic.uk.
uk. 172800 IN NS nsb.nic.uk.
uk. 172800 IN NS ns1.nic.uk.
;; ADDITIONAL SECTION:
ns1.nic.uk. 172800 IN A 195.66.240.130
ns2.nic.uk. 172800 IN A 217.79.164.131
ns3.nic.uk. 172800 IN A 213.219.13.131
ns4.nic.uk. 172800 IN A 194.83.244.131
ns5.nic.uk. 172800 IN A 213.246.167.131
ns6.nic.uk. 172800 IN A 213.248.254.130
ns7.nic.uk. 172800 IN A 212.121.40.130
nsa.nic.uk. 172800 IN A 156.154.100.3
nsb.nic.uk. 172800 IN A 156.154.101.3
nsc.nic.uk. 172800 IN A 156.154.102.3
nsd.nic.uk. 172800 IN A 156.154.103.3
ns1.nic.uk. 172800 IN AAAA 2a01:40:1001:35::2
ns4.nic.uk. 172800 IN AAAA 2001:630:181:35::83
nsa.nic.uk. 172800 IN AAAA 2001:502:ad09::3
;; Query time: 45 msec
;; SERVER: 192.5.5.241#53(192.5.5.241)
;; WHEN: Tue Feb 11 19:19:14 MST 2014
;; MSG SIZE rcvd: 507
Run Code Online (Sandbox Code Playgroud)
哇,现在我们知道有名称服务器uk
,这是根服务器唯一知道的事情。 这是一个推荐,因为我们没有要求递归(+norecurse
将其关闭)。
太好了,我们冲洗并重复。这次我们选择其中一个uk
域名服务器并问它同样的问题。
$ dig +norecurse @195.66.240.130 www.google.co.uk
; <<>> DiG 9.9.4 <<>> +norecurse @195.66.240.130 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 618
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.google.co.uk. IN A
;; AUTHORITY SECTION:
google.co.uk. 172800 IN NS ns1.google.com.
google.co.uk. 172800 IN NS ns3.google.com.
google.co.uk. 172800 IN NS ns2.google.com.
google.co.uk. 172800 IN NS ns4.google.com.
;; Query time: 354 msec
;; SERVER: 195.66.240.130#53(195.66.240.130)
;; WHEN: Tue Feb 11 19:22:47 MST 2014
;; MSG SIZE rcvd: 127
Run Code Online (Sandbox Code Playgroud)
太棒了,现在我们发现uk
顶级域名服务器知道有一个名为的区域,google.co.uk
并告诉我们去向这些域名服务器询问我们的问题。这是另一个参考。
冲洗,重复。
然而,这一次,我们在响应的附加记录部分没有得到 A 记录,所以我们选择了一个,比如 ns2.google.com,我们必须去寻找它的地址。我们重新启动查询(再次在根目录下)并沿着树向下查找 ns2.google.com 的 IP 地址。为简洁起见,我将跳过该部分,但我们了解到它的 IP 是 216.239.34.10。
所以我们的下一个查询是:
$ dig +norecurse @216.239.34.10 www.google.co.uk
; <<>> DiG 9.9.4 <<>> +norecurse @216.239.34.10 www.google.co.uk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33404
;; flags: qr aa; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.co.uk. IN A
;; ANSWER SECTION:
www.google.co.uk. 300 IN A 74.125.225.216
www.google.co.uk. 300 IN A 74.125.225.223
www.google.co.uk. 300 IN A 74.125.225.215
;; Query time: 207 msec
;; SERVER: 216.239.34.10#53(216.239.34.10)
;; WHEN: Tue Feb 11 19:26:43 MST 2014
;; MSG SIZE rcvd: 82
Run Code Online (Sandbox Code Playgroud)
我们完成了!(最后)我们怎么知道我们已经完成了?我们得到了查询的答案,即 www.google.co.uk 的 A 记录。您还可以判断,因为它不再是推荐,该aa
位设置在最后一个响应中,这意味着这是您查询的权威答案。
这就是您使用dig +trace
.
请注意,如果您有 DNSSEC 感知版本的 dig 并添加+dnssec
到命令中,您可能会看到更多记录。这些额外的记录是什么留给读者作为练习......但进入如何dig +sigchase
工作。
归档时间: |
|
查看次数: |
54911 次 |
最近记录: |