DNS – Namensauflösung mit Nameservern – Teil2


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.

Dns-abfrage

Rekursive Namensauflösung

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

DNS – Bind9 Nameserver Konfiguration – Teil3