dig + trace ทำงานอย่างไร


19

เมื่อฉันดูหน้า man สำหรับการขุดฉันได้รับสิ่งต่อไปนี้:

+[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.

ดังนั้นวิธีนี้ใช้งานได้จริงในทางปฏิบัติ? อะไรคือซีรี่ส์digคำสั่งที่เทียบเท่า(โดยไม่มี + trace) ที่เทียบเท่ากับการใช้งาน?

คำตอบ:


37

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ทำงานอย่างไร


หนึ่งข้อสงสัย: ในคำขอไปที่ @ 192.5.5.241 คำตอบในส่วนเพิ่มเติมพวกเขาเรียกว่าบันทึกกาวหรือไม่?
JoséTomás Tocino

ใช่เพราะชื่อของระเบียน A มีอยู่ภายในหรือใต้โซนระเบียน NS ในการอ้างอิงส่วนผู้มีอำนาจดังนั้นพวกเขามีความจำเป็นเพื่อดำเนินการตามกระบวนการแก้ปัญหา
พันล้าน

1

ให้บอกว่าคุณเงยหน้าขึ้นมอง

www.domain.co.uk

DNS คือการสืบทอดเริ่มต้นด้วยรูทเซิร์ฟเวอร์ที่รู้ว่าเซิร์ฟเวอร์ใดมีสิทธิ์ใช้งาน TLDs (ส่วนสุดท้ายของชื่อโดเมน) ดังนั้นความยุติธรรมกับ

dig subdomain.domain.co.uk

ทีละขั้นตอนจะเป็น:

dig SOA @g.root-servers.net uk

(เช่นค้นหาหนึ่งในเซิร์ฟเวอร์รากเพื่อค้นหาผู้ที่มีสิทธิ์. .uk)

สิ่งนี้ตอบสนองกับเซิร์ฟเวอร์ของสหราชอาณาจักรที่มีสิทธิ์ดังนั้นเราจึงขอให้ผู้ที่มี co.uk

dig SOA @ns6.nic.uk co.uk

และเราได้รับการบอกว่า SOA (สิทธิ) อยู่ที่เซิร์ฟเวอร์เดียวกัน

ดังนั้นให้สอบถาม ns1.nic.uk เพื่อดูว่าใครมี domain.co.uk

dig SOA @ns1.nic.uk domain.co.uk

สิ่งนี้จะกลับมาและบอกว่าอำนาจสำหรับโดเมนอยู่ที่ dns.dns1.de (รวมถึงการสำรองข้อมูล);

ดังนั้นตอนนี้เราสามารถขอบันทึก A:

dig  A @dns.dns2.de www.domain.co.uk

;; QUESTION SECTION:
;www.domain.co.uk.              IN      A

;; ANSWER SECTION:
www.domain.co.uk.       86400   IN      CNAME   domain.co.uk.
domain.co.uk.           86400   IN      A       95.130.17.36

ฉันจะระบุหัวข้อของการมอบหมายได้อย่างไร สมมติว่าสิทธิอำนาจสำหรับ domain.co.uk คือ dns.dns1.de แต่ members.domain.co.uk ได้รับมอบสิทธิ์ให้ dns.dns2.com และฉันค้นหา joe.members.domain.co.uk ฉันจะรู้ได้อย่างไรว่าเมื่อใดที่ "ปลอดภัย" ที่จะก้าวออกจาก SOA merry-go-round และค้นหาบันทึกอื่น ๆ
Doktor J

กระบวนการจริงขอให้Aบันทึกทั้งหมด ไม่มีการสลับไปใช้การSOAสืบค้นที่มหัศจรรย์ (ไม่สามารถทำได้เนื่องจากพร็อกซีการแก้ไขจะไม่รู้ว่าจะเปลี่ยนกลับเมื่อใด) ไม่มีการแก้ไขชื่อโดเมนในคำถามอย่างน่าอัศจรรย์ มันคือwww.domain.co.uk.ทั้งหมดที่ผ่านมา นี้เป็นสิ่งสำคัญที่ต้องจำไว้เพราะหมายถึงว่าเซิร์ฟเวอร์ใด ๆ ของเนื้อหาสอบถามสามารถให้คำตอบที่สมบูรณ์
JdeBP

@ DoktorJ ใช่นี่คือความผิดพลาดของฉัน JdeBP ถูกต้อง ฉันพยายามหาจุดที่มี SOA แต่มันก็พันกันเข้าไปในคำตอบ คำตอบอื่น ๆ มีความแม่นยำมากขึ้น
พอล

@ พอลขอบคุณสำหรับการติดตาม; ฉันตั้งค่าสถานะคำตอบอื่น ๆ เป็นคำตอบที่ถูกต้องเพื่อช่วยเหลือคนอื่น ๆ ที่อาจมาท้ายเรื่องนี้ (ไม่มีความผิดต่อคุณ!) :)
Doktor J

@doktorj ไม่ได้ทั้งหมดที่เป็นสิ่งที่ควรจะเป็น :)
พอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.