dig +trace
hoạt động bằng cách giả vờ đó là một máy chủ tên và làm việc với cây không gian tên bằng cách sử dụng các truy vấn lặp lại bắt đầu từ gốc của cây, theo các tham chiếu trên đường đi.
Điều đầu tiên nó làm là yêu cầu máy chủ DNS hệ thống bình thường cho các bản ghi NS cho "."
Sau khi nhận được phản hồi, đây sẽ là danh sách máy chủ tên gốc hiện tại, nó sẽ chọn một máy chủ và sau đó yêu cầu bản ghi A cho tên đó nếu nó không nhận được nó trong phần bản ghi bổ sung lần đầu tiên để nó có một địa chỉ IP để gửi truy vấn tiếp theo. Giả sử nó chọn f.root-servers.net có địa chỉ IP là 192.5.5.241.
Tại thời điểm này, hãy sử dụng dig +trace www.google.co.uk.
làm lệnh của chúng tôi với một tên miền mà chúng tôi muốn theo dõi đường dẫn giải quyết.
Truy vấn hậu trường tiếp theo sẽ là:
$ 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
Ồ, vậy bây giờ chúng tôi biết rằng có máy chủ tên uk
và đó là điều duy nhất mà máy chủ gốc biết. Đây là một giới thiệu , bởi vì chúng tôi đã không yêu cầu đệ quy ( +norecurse
tắt nó đi).
Tuyệt vời, chúng tôi rửa sạch và lặp lại. Lần này chúng tôi chọn một trong những uk
máy chủ tên và hỏi nó cùng một câu hỏi .
$ 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
Thật tuyệt vời, bây giờ chúng tôi đã phát hiện ra rằng uk
máy chủ tên cấp cao nhất biết có một khu vực được gọi google.co.uk
và bảo chúng tôi đi hỏi những người đặt tên cho câu hỏi của chúng tôi. Đây là một giới thiệu khác.
Rửa sạch, lặp lại.
Tuy nhiên, lần này, chúng tôi đã không nhận được các bản ghi A trong phần hồ sơ bổ sung của phản hồi, vì vậy chúng tôi chọn một bản ghi, nói ns2.google.com và chúng tôi phải đi tìm địa chỉ của nó. Chúng tôi khởi động lại một truy vấn (ở gốc một lần nữa) và đuổi theo cây để tìm địa chỉ IP cho ns2.google.com. Tôi sẽ bỏ qua phần đó cho ngắn gọn, nhưng chúng tôi biết rằng IP cho nó là 216.239.34.10.
Vì vậy, truy vấn tiếp theo của chúng tôi là:
$ 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
Và chúng ta đã hoàn thành! (cuối cùng) Làm thế nào để chúng ta biết chúng ta đã hoàn thành? Chúng tôi đã có câu trả lời cho truy vấn của mình, đó là hồ sơ A cho www.google.co.uk. Bạn cũng có thể nói vì đó không phải là giới thiệu nữa, aa
bit được đặt trong phản hồi cuối cùng có nghĩa đây là câu trả lời có thẩm quyền cho truy vấn của bạn.
Vì vậy, đó là những gì xảy ra mỗi bước trên đường đi khi bạn sử dụng dig +trace
.
Lưu ý rằng nếu bạn có phiên bản đào nhận biết DNSSEC và bạn thêm +dnssec
vào lệnh, bạn có thể thấy một loạt các bản ghi. Những gì các bản ghi thêm đó được để lại như một bài tập cho người đọc ... nhưng đi vào cách thức dig +sigchase
hoạt động.