Wenn man eine Domäne im Internet abfragt, wird die IP auf folgende Arten bestimmt:
Rekursive Namensauflösung
Der angefragte konfigurierte Nameserver kümmert sich komplett um das Auflösen und Cachen der DNS-Anfragen. Der Nameserver fragt selber iterativ andere Nameserver nach der Adresse, bis er die Antwort oder das Scheitern an den Client zurück sendet. Der Resolver ist der Teil des Clients, die die Kommunikation mit dem Nameserver übernimmt.
Iterative Namensauflösung
Bei der iterativen Variante kümmert sich nicht der angefragte Nameserver um das Auflösen der Anfrage, sondern schickt im Falle, dass er die IP-Adresse nicht kennt in der Antwort einfach ein paar Adressen von ihm bekannten Nameservern mit, die sich damit auskennen. Dieses geht der Resolver dann durch (iterativ), er verfeinert die Anfragen, bis er schließlich den heißen Tipp von einem Nameserver bekommt, welcher den richtigen Nameserver weiß, der die gesuchte IP-Adresse kennt.
Beispiel für eine Namensauflösung mit dig
dig www.abc.it +trace ; <<>> DiG 9.8.1-P1 <<>> www.abc.it +trace ;; global options: +cmd . 5 IN NS d.root-servers.net. . 5 IN NS m.root-servers.net. . 5 IN NS e.root-servers.net. . 5 IN NS b.root-servers.net. . 5 IN NS l.root-servers.net. . 5 IN NS j.root-servers.net. . 5 IN NS g.root-servers.net. . 5 IN NS c.root-servers.net. . 5 IN NS i.root-servers.net. . 5 IN NS h.root-servers.net. . 5 IN NS f.root-servers.net. . 5 IN NS a.root-servers.net. . 5 IN NS k.root-servers.net. ;; Received 228 bytes from 127.0.0.1#53(127.0.0.1) in 4390 ms it. 172800 IN NS a.dns.it. it. 172800 IN NS m.dns.it. it. 172800 IN NS r.dns.it. it. 172800 IN NS c.dns.it. it. 172800 IN NS dns.nic.it. it. 172800 IN NS nameserver.cnr.it. it. 172800 IN NS s.dns.it. ;; Received 443 bytes from 192.58.128.30#53(192.58.128.30) in 339 ms abc.it. 10800 IN NS ns1.register.it. abc.it. 10800 IN NS ns2.register.it. ;; Received 105 bytes from 194.0.16.215#53(194.0.16.215) in 171 ms www.abc.it. 600 IN CNAME abc.it. . 518400 IN NS a.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS l.root-servers.net. . 518400 IN NS m.root-servers.net. ;; Received 259 bytes from 195.110.124.140#53(195.110.124.140) in 149 ms
Im ersten Schritt werden alle Root DNS Nameserver angefragt nach der Top-LevelDomain (TLD) .it.
. 5 IN NS d.root-servers.net. . 5 IN NS m.root-servers.net. . 5 IN NS e.root-servers.net. . 5 IN NS b.root-servers.net. . 5 IN NS l.root-servers.net. . 5 IN NS j.root-servers.net. ...
Diese antworten iterativ mit verschiedenen Servern und leiten somit den Ast .it des Domänen Baumes weiter:
it. 172800 IN NS a.dns.it. it. 172800 IN NS m.dns.it. it. 172800 IN NS r.dns.it. it. 172800 IN NS c.dns.it.
Am Ende steht der Nameserver, der die IP-Adresse kennt und unserem Resolver mitteilt. Vielen Dank für deine Hilfe, ns2.register.it.!
abc.it. 10800 IN NS ns2.register.it.
Nicht verwirren lassen, beim trace Parameter steht die gefundene IP Adresse nicht in der Ausgabe, diese erfährt man nur mit dem normalen Aufruf von dig:
dig www.abc.it ... ;; ANSWER SECTION: www.abc.it. 5 IN CNAME abc.it. abc.it. 5 IN A 89.96.170.121 ...
Nun stellt sich die Frage, woher kennt mein PC den eigentlich, den Anfang der Kette in Form der Root-Nameserver? Dies ist nur möglich, indem eine Liste der 13 Server in der Dateien etc/bind/db.root vorhanden ist:
; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ; ; FORMERLY NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; FORMERLY C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; FORMERLY TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; FORMERLY NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; FORMERLY NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F ; ; FORMERLY NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; FORMERLY AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 ; ; FORMERLY NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FE::53 ; ; OPERATED BY VERISIGN, INC. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ; ; OPERATED BY RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1 ; ; OPERATED BY ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 ; ; OPERATED BY WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 ; End of File
DNS – Grundlagen mit dig – Teil1
DNS – Namensauflösung mit Nameservern – Teil2