dig +trace
ทำงานโดยการแกล้งทำเป็นเซิร์ฟเวอร์ชื่อและใช้แผนผังเนมสเปซโดยใช้คำสั่งวนซ้ำเริ่มต้นที่รูทของทรีตามการอ้างอิงตามวิธี
สิ่งแรกที่ต้องทำคือถามเซิร์ฟเวอร์ DNS ระบบปกติสำหรับระเบียน NS สำหรับ "."
หลังจากได้รับการตอบกลับซึ่งจะเป็นรายชื่อเซิร์ฟเวอร์รูทปัจจุบันมันจะเลือกหนึ่งรายการจากนั้นขอบันทึก A สำหรับชื่อนั้นหากไม่ได้รับในส่วนระเบียนเพิ่มเติมในครั้งแรกดังนั้นจึงได้รับ ที่อยู่ IP เพื่อส่งข้อความค้นหาถัดไป สมมติว่ามันเลือก f.root-servers.net ซึ่งมีที่อยู่ IP คือ 192.5.5.241
ณ จุดนี้ลองใช้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
ว้าวดังนั้นตอนนี้เรารู้แล้วว่ามีเนมเซิร์ฟเวอร์สำหรับ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
เยี่ยมยอดตอนนี้เราพบแล้วว่าuk
เซิร์ฟเวอร์ชื่อระดับสูงรู้ว่ามีโซนที่ถูกเรียกgoogle.co.uk
และบอกให้เราไปถามเซิร์ฟเวอร์เหล่านั้นกับคำถามของเรา นี่คือการอ้างอิงอื่น
ล้างซ้ำ
อย่างไรก็ตามเวลานี้เราไม่ได้รับระเบียน A ในส่วนระเบียนเพิ่มเติมของการตอบสนองดังนั้นเราจึงเลือกรายการหนึ่งพูด ns2.google.com และเราต้องไปหาที่อยู่ของมัน เราเริ่มการสืบค้นใหม่ (ที่รูทอีกครั้ง) และไล่ลงต้นไม้เพื่อค้นหาที่อยู่ IP สำหรับ ns2.google.com ฉันจะข้ามส่วนนั้นไปเพื่อความกะทัดรัด แต่เราเรียนรู้ว่า 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
และเราทำเสร็จแล้ว! (ในที่สุด) เราจะรู้ได้อย่างไรว่าเราทำเสร็จแล้ว? เราได้รับคำตอบสำหรับคำถามของเราซึ่งเป็นบันทึก A สำหรับ www.google.co.uk คุณสามารถบอกได้เพราะมันไม่ใช่การอ้างอิงอีกต่อไปaa
บิตถูกตั้งค่าในการตอบกลับล่าสุดหมายความว่านี่เป็นคำตอบที่เชื่อถือได้สำหรับการสืบค้นของคุณ
dig +trace
ดังนั้นว่าสิ่งที่เกิดขึ้นในแต่ละขั้นตอนไปพร้อมกันเมื่อคุณใช้
โปรดทราบว่าถ้าคุณมีรุ่นขุด DNSSEC ทราบและคุณเพิ่ม+dnssec
คำสั่งคุณอาจเห็นระเบียนเพิ่มเติม สิ่งที่บันทึกพิเศษเหล่านั้นถูกทิ้งไว้เป็นแบบฝึกหัดสำหรับผู้อ่าน ... แต่เข้าไปdig +sigchase
ทำงานอย่างไร