dig +trace
Es wird so getan, als wäre es ein Nameserver, und der Namespace-Baum wird mithilfe von iterativen Abfragen, beginnend am Stamm des Baums, abgearbeitet, wobei Verweise auf dem Weg verfolgt werden.
Als erstes wird der normale DNS-Server nach NS-Einträgen für "." Gefragt.
Nachdem es eine Antwort erhalten hat, die die aktuelle Liste der Stammnamenserver darstellt, wählt es einen aus und fragt dann nach dem A-Datensatz für diesen Namen, wenn er beim ersten Mal nicht im Abschnitt für zusätzliche Datensätze abgerufen wurde eine IP-Adresse, an die die nächste Abfrage gesendet werden soll. Nehmen wir an, es wählt f.root-servers.net mit der IP-Adresse 192.5.5.241 aus.
An dieser Stelle verwenden wir dig +trace www.google.co.uk.
als Befehl einen Domänennamen, für den der Auflösungspfad nachverfolgt werden soll.
Die nächste Abfrage hinter den Kulissen lautet:
$ 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
Wow, jetzt wissen wir, dass es Nameserver für gibt uk
und das ist das einzige, was der Root-Server kennt. Dies ist eine Überweisung , da wir keine Rekursion angefordert haben ( +norecurse
deaktiviert).
Gut, wir spülen und wiederholen. Diesmal wählen wir einen der uk
Nameserver aus und stellen ihm die gleiche Frage .
$ 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
Genial, jetzt haben wir herausgefunden, dass der uk
Top-Level-Nameserver weiß, dass es eine Zone gibt, die aufgerufen wird, google.co.uk
und uns gebeten, diesen Nameservern unsere Frage zu stellen. Dies ist eine weitere Überweisung.
Spülen, wiederholen.
Dieses Mal haben wir jedoch keine A-Datensätze im Abschnitt "Zusätzliche Datensätze" der Antwort erhalten. Wählen Sie daher einen aus, z. B. "ns2.google.com", und suchen Sie die Adresse. Wir starten eine Abfrage neu (wieder im Stammverzeichnis) und jagen den Baum ab, um die IP-Adresse für ns2.google.com zu ermitteln. Ich werde diesen Teil der Kürze halber überspringen, aber wir erfahren, dass die IP dafür 216.239.34.10 ist.
Unsere nächste Frage lautet also:
$ 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
Und wir sind fertig! (endlich) Woher wissen wir, dass wir fertig sind? Wir haben eine Antwort auf unsere Anfrage erhalten, bei der es sich um die A-Einträge für www.google.co.uk handelt. Sie können auch feststellen, dass es sich nicht mehr um eine Überweisung handelt. Das aa
Bit ist in der letzten Antwort gesetzt, was bedeutet, dass dies die maßgebliche Antwort für Ihre Anfrage ist.
Das passiert also bei jedem Schritt auf Ihrem Weg dig +trace
.
Beachten Sie, dass bei einer DNSSEC-fähigen Version von dig, die Sie +dnssec
dem Befehl hinzufügen , möglicherweise mehrere Datensätze angezeigt werden. Was diese zusätzlichen Aufzeichnungen sind, bleibt als Übung für den Leser übrig ... aber es wird erklärt, wie es dig +sigchase
funktioniert.