Dig + trace aslında nasıl çalışır?


19

Kazmak için man sayfasına baktığımda aşağıdakileri alıyorum:

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

Peki bu pratikte nasıl çalışıyor? digİşlevsel olarak eşdeğer olacak eşdeğer komut dizisi (+ izsiz) ne olurdu?

Yanıtlar:


37

dig +trace bir ad sunucusu gibi davranarak çalışır ve yol boyunca yönlendirmeleri izleyerek ağacın kökünden başlayan yinelemeli sorguları kullanarak ad alanı ağacında çalışır.

Yaptığı ilk şey normal sistem DNS sunucusundan NS kayıtlarını "."

Geçerli kök adı sunucuları listesi olacak bir yanıt aldıktan sonra, bir tane seçecek ve daha sonra ilk kez ek kayıtlar bölümünde almadıysa, bu ad için A kaydı isteyecektir. sonraki sorgunun gönderileceği IP adresi. IP adresi 192.5.5.241 olan f.root-servers.net adresini seçtiğini varsayalım.

Bu noktada, dig +trace www.google.co.uk.çözüm yolunu izlemek istediğimiz bir alan adıyla komutumuz olarak kullanalım .

Sahne arkasındaki bir sonraki sorgu şudur:

$ 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

Vay canına, şimdi ad sunucuları olduğunu biliyoruz ukve kök sunucunun bildiği tek şey bu. Bu bir yönlendirmedir , çünkü özyineleme istemedik ( +norecursekapatır).

Harika, durulayıp tekrarlıyoruz. Bu sefer ukisim sunucularından birini seçip aynı soruyu soruyoruz .

$ 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

Harika, şimdi uküst düzey ad sunucusunun bir bölge olduğunu bildiğini google.co.ukve bu isim sunucularına soruyu sormamızı söylediğini öğrendik. Bu başka bir tavsiye.

Durulayın, tekrarlayın.

Ancak bu sefer yanıtın ek kayıtlar bölümünde A kaydı almadık, bu yüzden birini seçiyoruz, diyelim ki ns2.google.com, ve adresini bulmalıyız. Biz yeniden ns2.google.com için IP adresini bulmak için ağacın aşağı (yine kökünde) sorgu ve kovalamaca. Kısmen kısalık için atlayacağım, ancak bunun için IP'nin 216.239.34.10 olduğunu öğreniyoruz.

Yani bir sonraki sorgumuz:

$ 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

Ve işimiz bitti! (son olarak) Tamamlandığımızı nereden biliyoruz? Www.google.co.uk için A kayıtları olan sorgumuz için bir yanıt aldık. Ayrıca artık bir referans olmadığından, aabitin son yanıtta ayarlandığı anlamına gelir, bu da sorgunuz için yetkili cevaptır .

Yani kullandığınız her adımda olan budur dig +trace.

DNSSEC uyumlu bir dig sürümünüz varsa +dnssecve komuta eklerseniz , daha fazla kayıt görebilirsiniz. Bu ekstra kayıtların ne olduğu okuyucu için bir alıştırma olarak bırakılır ... ama nasıl dig +sigchaseçalıştığına girer .


Bir şüphe: @ 192.5.5.241 talebinde, EK BÖLÜM'deki cevaplar, bunlar tutkal kayıtları mıdır?
José Tomás Tocino

Evet, A kayıtlarının adı Yetki bölümündeki NS kayıtlarının başvurduğu bölge içinde veya altında bulunduğundan, çözüm sürecine devam etmek için gereklidir.
milli

1

Diyelim ki bakıyorsun

www.domain.co.uk

DNS, TLD'ler (etki alanı adının son kısmı) için hangi sunucuların yetkili olduğunu bilen kök sunucularla başlayan bir heirarchy'dir. Yani eşdeğer

dig subdomain.domain.co.uk

Adım adım şöyle olur:

dig SOA @g.root-servers.net uk

(örneğin, .uk için kimin yetkili olduğunu bulmak için kök sunuculardan birini sorgulayın)

Bu, bir dizi yetkili uk sunucusuyla yanıt verir, bu yüzden onlara kimin co.uk olduğunu sorduk

dig SOA @ns6.nic.uk co.uk

Ve bize SOA'nın (otoritenin) aynı sunucularda olduğu söylendi

.Co.uk1.nic.uk sorgusunu kimin domain.co.uk'de olduğunu görelim

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

Bu geri dönüyor ve etki alanı yetkisinin dns.dns1.de (artı yedeklemeler) olduğunu söylüyor;

Şimdi A kaydını isteyebiliriz:

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

Delegasyon konusunu nasıl ele alabilirim? Domain.co.uk için yetkinin dns.dns1.de olduğunu varsayalım, ama members.domain.co.uk dns.dns2.com'a delege edilmiştir ve joe.members.domain.co.uk adresini arıyorum. SOA atlıkarıncaya adım atmanın ve diğer kayıtları sorgulamanın "güvenli" olduğunu nasıl bilebilirim?
Doktor J

Asıl işlem Akayıt boyunca ister . SOASorgulara sihirli bir geçiş yok . (Çözülemeyen bir proxy ne zaman geri dönüleceğini bilemeyeceği için olamazdı.) Soruda da etki alanı adında sihirli bir değişiklik yok. Bu var www.domain.co.uk.aracılığıyla tüm yol. Bunu hatırlamak önemlidir, çünkü bu sorgulanan herhangi bir içerik sunucusunun tam cevabı verebileceği anlamına gelir .
JdeBP

@DoktorJ Evet, bu benim hatam JdeBP haklı. Ben SOA ile bir noktaya amek çalışıyordum, ama cevap karıştı. Diğer cevap daha doğru.
Paul

@ Takip için teşekkürler Paul; Diğer cevabı, buraya gelebilecek herkese yardım etmek için doğru cevap olarak işaretledim (size suç yok!) :)
Doktor J

@doktorj Hiç de değil, olması gerektiği gibi :)
Paul
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.