5. Domain Name System

Das Domain Name System ist ein verteilter hierarchischer Verzeichnisdienst.

Die offizielle Wurzel bilden die autoritären Nameserver, die für die DNS Root Zone zuständig sind, allgemein bekannt auch als "Root Servers".

"hosts"-Datei

Bevor der Client einen Netzwerkdienst nutzt, fragt er seine lokale "Tabelle". Diese Datei gibt es in allen gängigen Betriebssystemen.Den Inhalt kann man sich wie folgt ausgeben lassen:

Debian GNU/Linux

$ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian.localdomain debian

# The following lines are desirable for IPv6 capable hosts
::1          localhost    ip6-localhost    ip6-loopback
ff02::1      ip6-allnodes
ff02::2      ip6-allrouters

Apple Macintosh OS X

$ cat /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

Microsoft Windows

PS C:\Users\user> type C:\Windows\System32\drivers\etc\hosts
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#    102.54.94.97    rhino.acme.com    # source server
#     38.25.63.10    x.acme.com        # x client host

# localhost name resolution is handled within DNS itself.
#       127.0.0.1    localhost
#             ::1    localhost

DNS-Cache

Ist auf dem Client ein lokaler DNS-Zwischenspeicher verfügbar (je nach Betriebssystem und Version unterschiedlich), so fragt der Client auch im zweiten Schritt noch keinen Netzwerkdienst. Sollte ein lokaler DNS-Cache vorhanden sein, so ist die Speicherzeit für erfolgreiche Abfragen leider nicht einheitlich!

Linux

Unter Linux Mint 18 "Sarah" werden DNS-Abfragen standardmäßig an localhost (127.0.1.1) gerichtet:

$ grep -F "nameserver" /etc/resolv.conf
nameserver 127.0.1.1

Diese DNS-Anfragen beantwortet ein Dienst namens "dnsmasq":

$ sudo ss -natup | grep -F "127.0.1.1:53"
udp UNCONN 0 0 127.0.1.1:53 *:* users:(("dnsmasq",pid=1036,fd=4))
tcp LISTEN 0 5 127.0.1.1:53 *:* users:(("dnsmasq",pid=1036,fd=5))

Das Netzwerk wird standardmäßig durch den Dienst "NetworkManager" konfiguriert.
Es fehlen somit Standardkonfigurationsdateien von dnsmasq (z. B.: /etc/dnsmasq.conf).
NetworkManager startet dnsmasq über ein Plugin (nm-dns-dnsmasq) und gibt hierbei die Konfiguration vor.
Das Linux Mint-Projekt hat den Aufruf von dnsmasq im Plugin individuell angepasst:

$ ps ax | grep -F "dnsmasq" | grep -v -F "grep"
1036 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d

Hieraus ergibt sich, dass der Zwischenspeicher deaktiviert ist ("--cache-size=0").

Weder hier noch in einer Datei im übergebenen Konfigurationsverzeichnis ("/etc/NetworkManager/dnsmasq.d") wird die Protokollierung der DNS-Abfragen aktiviert ("--log-queries").

Somit werden leider keine DNS-Abfragen sowie deren Antworten aufgezeichnet!

Apple Macintosh OS X

$ sudo killall -INFO mDNSResponder
$ sudo sed -n -e '/mDNSResponder.*BEGIN STATE LOG/,/mDNSResponder.*END STATE LOG/p' /var/log/system.log
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: ---- BEGIN STATE LOG ---- mDNSResponder mDNSResponder-576.30.4 (Jul 22 2015 00:26:56) OSXVers 14
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: Timenow 0xE30DA78F (-485644401)
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: ------------ Cache -------------
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: Slt Q TTL if U Type rdlen
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 0 20 -U- Addr 4 e5153.a.akamaiedge.net. Addr 2.16.207.69
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 5 328 -U- CNAME 37 gspe35-ssl.ls-apple.com.akadns.net. CNAME gspe35-ssl.ls.apple.com.edgekey.net.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 8 329 -U- CNAME 22 clients1.google.com. CNAME clients.l.google.com.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 9 30720 -U- CNAME 37 1-courier.push.apple.com. CNAME 1.courier-push-apple.com.akadns.net.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 25 4459 en0 + PTR 47 _sftp-ssh._tcp.local. PTR PHK\032Neumanns\032MacBook\032Pro._sftp-ssh._tcp.local.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 40 * 28 -U- - PTR 0 lb._dns-sd._udp.dvg.lan. PTR
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 44 1958 -U- CNAME 31 ocsp.apple.com. CNAME ocsp.pki-apple.com.akadns.net.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 48 751301 -U- TXT 9 sandbox.push.apple.com. TXT count=10
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 48 28 -U- Addr 4 crl.pki-apple.com.akadns.net. Addr 17.151.28.6
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 51 4428 -U- CNAME 33 sd.symcb.com. CNAME crl.ws.symantec.com.edgekey.net.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 53 28 -U- CNAME 38 1.courier-push-apple.com.akadns.net. CNAME mu-courier.push-apple.com.akadns.net.
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 56 3853 -U- - Addr 0 internalcheck.apple.com. Addr
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 56 3853 -U- SOA 67 apple.com. SOA gridmaster-ib.apple.com. hostmaster.apple.com. 2010093780 900 900 2016000 86500
Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: 58 330 -U- Addr 4 appleid.apple.com.akadns.net. Addr 17.151.2.13

[...]
[... Lots of lines with import/export removed...]
[...]

Oct 15 14:26:28 mbpwire.dvg.lan mDNSResponder[91]: ---- END STATE LOG ---- mDNSResponder mDNSResponder-576.30.4 (Jul 22 2015 00:26:56) OSXVers 14

Microsoft Windows

PS C:\Users\user> ipconfig /displaydns

Windows-IP-Konfiguration

[...]

www.msn.com
----------------------------------------
Eintragsname . . . . . : www.msn.com
Eintragstyp . . . . . : 5
GÅltigkeitsdauer . . . : 41
DatenlÑnge . . . . . . : 8
Abschnitt. . . . . . . : Antwort
CNAME-Eintrag . . . . : www-msn-com.a-0003.a-msedge.net


bedrock-prod-zlb.vips.scl3.mozilla.com
----------------------------------------
Eintragsname . . . . . : bedrock-prod-zlb.vips.scl3.mozilla.com
Eintragstyp . . . . . : 1
GÅltigkeitsdauer . . . : 25
DatenlÑnge . . . . . . : 4
Abschnitt. . . . . . . : Antwort
(Host-)A-Eintrag . . : 63.245.215.20


bedrock-prod-zlb.vips.scl3.mozilla.com
----------------------------------------
Eintragsname . . . . . : bedrock-prod-zlb.vips.scl3.mozilla.com
Eintragstyp . . . . . : 28
GÅltigkeitsdauer . . . : 13
DatenlÑnge . . . . . . : 16
Abschnitt. . . . . . . : Antwort
AAAA-Eintrag . . . . : 2620:101:8016:5::2:20

[...]
[... Lots of lines with import/export removed...]
[...]

In der Regel wird der Client danach einen DNS-Zwischenspeicher im eigenen Netzwerk bzw. dem des ISP anfragen (Auch diese können manipulierte Antworten zurückgeben.). Wir gehen im Folgenden aber davon aus, dass der Client die Root Server direkt kontaktiert.

DNS des Internets

Der Client fragt einen der Root Server nach der IP-Adresse zu einer Internet-Domain (z. B. "hilfe-center.1und1.de").

Da die Root Server jedoch nur wissen, welche Nameserver für die Auflösung der TLD ".de" zuständig sind, verweist der Root Server den Client an den entsprechenden Nameserver (in unserem Beispiel "a.nic.de").

Diese "Delegation" wird im sog. NS Resource Record gesteuert.

Linux/BSD/Unix

$ dig NS 1und1.de

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> NS 1und1.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29192
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;1und1.de. IN NS

;; ANSWER SECTION:
1und1.de. 494 IN NS ns-1and1.ui-dns.biz.
1und1.de. 494 IN NS ns-1and1.ui-dns.org.
1und1.de. 494 IN NS ns-1and1.ui-dns.com.
1und1.de. 494 IN NS ns-1and1.ui-dns.de.

;; Query time: 0 msec
;; SERVER: 10.1.1.11#53(10.1.1.11)
;; WHEN: Sun Oct 11 22:33:24 2015
;; MSG SIZE rcvd: 155

Microsoft Windows

PS C:\Users\user01> nslookup -q=NS 1und1.de
Server: fritz.box
Address: 192.168.178.1

Nicht autorisierende Antwort:
1und1.de nameserver = ns-1and1.ui-dns.org
1und1.de nameserver = ns-1and1.ui-dns.biz
1und1.de nameserver = ns-1and1.ui-dns.de
1und1.de nameserver = ns-1and1.ui-dns.com

Auch die Nameserver der Denic eG kennen die Antwort nicht selbst. Sie verweisen den Client ebenfalls an den für die Internet-Domain (z. B. "1und1") zuständigen Nameserver (in unserem Beispiel "ns-1and1.ui-dns.de") weiter.

Sind weitere Nameserver für weitere Subdomains zuständig, geht das Spiel so weiter, bis der letzte Nameserver schließlich die Antwort kennt.

Je nachdem, nach welchem Record (A für IPv4, AAAA für IPv6, CNAME für einen Alias oder MX für den E-Mail-Server) der Client gefragt hat, liefert der letzte Nameserver die gewünschte Antwort zurück.

Linux/BSD/Unix

$ dig MX 1und1.de

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> MX 1und1.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51077
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;1und1.de. IN MX

;; ANSWER SECTION:
1und1.de. 289 IN MX 10 mxint02.1and1.com.
1und1.de. 289 IN MX 10 mxint01.1and1.com.

;; Query time: 0 msec
;; SERVER: 10.1.1.11#53(10.1.1.11)
;; WHEN: Sun Oct 11 22:33:24 2015
;; MSG SIZE rcvd: 83

Microsoft Windows

PS C:\Users\user01> nslookup -q=MX 1und1.de
Server: fritz.box
Address: 192.168.178.1

Nicht autorisierende Antwort:
1und1.de MX preference = 10, mail exchanger = mxint02.1and1.com
1und1.de MX preference = 10, mail exchanger = mxint01.1and1.com

Im SOA-Resource Record sind der Reihe nach:

  • primärer Nameserver für die Zone
  • E-Mail-Adresse des Administrators des Nameservers (ein Punkt muss durch das @-Zeichen ersetzt werden!)
  • Seriennummer (Empfehlung gemäß RFC 1912: Datum der letzten Änderung mit angehängtem zweistelligen Zähler)
  • [...]
  • Gültigkeit der Einträge (86400 Sekunden = 24 Stunden)

Linux/BSD/Unix

$ dig SOA 1und1.de

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> SOA 1und1.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39346
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;1und1.de. IN SOA

;; ANSWER SECTION:
1und1.de. 47532 IN SOA ns-1and1.ui-dns.de. dnsadmin.1und1.de. 2013085760 10800 3600 604800 600

;; Query time: 0 msec
;; SERVER: 10.1.1.11#53(10.1.1.11)
;; WHEN: Sun Oct 11 22:33:24 2015
;; MSG SIZE rcvd: 87

Microsoft Windows

PS C:\Users\user01> nslookup -q=SOA 1und1.de
Server: fritz.box
Address: 192.168.178.1

Nicht autorisierende Antwort:
1und1.de
        primary name server = rns.ui-dns.de
        responsible mail addr = dnsadmin.1und1.de
        serial = 2013085472
        refresh = 10800 (3 hours)
        retry = 3600 (1 hour)
        expire = 604800 (7 days)
        default TTL = 600 (10 mins)

eToolz

eToolz

Im Falle eines CNAME- oder MX-Resource Records kann dieses wiederum eine Internet-Domain sein!

Früher verwies die Subdomain "www" einer Domain regelmäßig auf einen HTTPD (Webserver). In der heutigen Zeit wird "www" jedoch im Zusammenhang mit einer Internet-Domain immer häufiger weggelassen!

In einer Linux/BSD/Unix-Shell kann man (solange ein direkter Kontakt zu den Root Servern möglich ist oder der Resolver/Cache eine entsprechende Anfrage zulässt) sich das wie folgt ausgeben lassen:

$ dig @193.0.14.129 +recurse +trace hilfe-center.1und1.de

; <<>> DiG 9.14.1 <<>> @193.0.14.129 +recurse +trace hilfe-center.1und1.de
; (1 server found)
;; global options: +cmd
. 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.
. 518400 IN RRSIG NS 8 0 518400 20190521050000 20190508040000 25266 . 2DIj7rn6lV9lLX54l7kjLRyW7MxsQU4+nAA7KZiSZ3y6d8lx4iV+st/h VxIpQaGP41Ri8T9W2mL0FfaEDLr2T/NmRK3R7nAhZNtQqsvbe2gewv7e NcEnJHVTZvWV2cFxKQt/OX1WynUWPpztXh8vQjz2Sb3vb+oRuKiaQfIQ a4/v7eEEWCEiAmfRJzjsLoWwi2WgSW7I0ikTwECOPK63b+gqBwPXX8Pu Q+ECR/ov7Ja6TLdFXAAmbt3sePXfXdCYskOacVEfZ5B9uDqlk5DZaSHz oX/uVHg8LUO24Y7r5A3to/Dlk5qVubMbqzwDaVlBKbIv5D6AG8gyZQ99 gFomwg==
;; Received 1289 bytes from 193.0.14.129#53(193.0.14.129) in 19 ms

de. 172800 IN NS s.de.net.
de. 172800 IN NS n.de.net.
de. 172800 IN NS a.nic.de.
de. 172800 IN NS f.nic.de.
de. 172800 IN NS l.de.net.
de. 172800 IN NS z.nic.de.
de. 86400 IN DS 39227 8 2 AAB73083B9EF70E4A5E94769A418AC12E887FC3C0875EF206C3451DC 40B6C4FA
de. 86400 IN RRSIG DS 8 1 86400 20190521050000 20190508040000 25266 . SFZNPaQCIOwJW75TudULMt2N6xzDDBgHTnw9gmBKzHEf63kXckCq/tst n9aLeI7FC9arW+x2se3hqc5P73kQD+ZCABEt68YjrEUuCDGaxYAtRIyd P7K3gvgIELNwZiVGGVmDLg0Kngkyw8dmSuaxBm2n5G6QhSHxb+TRoNXv mjRF8FuAYsZRQrL3V574m4p+4n8w5ui8yA6yrwEHpuNK2lYslnyc7h0U GGfpGLuYCMvuta/5EC0pfTRcAk1LgYp0ybXk4bQfbW+m9NhWyLLnCLuO JlqHN4i0bb2634xEmr19Vyui7Q2cW4pBHniZO4XHtUbgB9wGv+RnZ0B5 FPHEmQ==
;; Received 727 bytes from 198.41.0.4#53(a.root-servers.net) in 21 ms

1und1.de. 86400 IN NS ns-1and1.ui-dns.de.
1und1.de. 86400 IN NS ns-1and1.ui-dns.biz.
1und1.de. 86400 IN NS ns-1and1.ui-dns.com.
1und1.de. 86400 IN NS ns-1and1.ui-dns.org.
h319dm5gc3edek691vqbhehot7vggj2b.de. 7200 IN NSEC3 1 1 15 BA5EBA11 H31EGRUDRBMFSM3HAQ6AMG96SJB4QAVI NS SOA RRSIG DNSKEY NSEC3PARAM
h319dm5gc3edek691vqbhehot7vggj2b.de. 7200 IN RRSIG NSEC3 8 2 7200 20190515110105 20190508110105 26298 de. tEiDhnMjHzM7eovg3Ou5SVQMD4B6lBNzc25j4YsI9XrG0UQPGiPVoz4E n1WhLaeY2Geu6M1rrY97iqsKOyyK+wm+tYNq9qBPk2fgXJTEXor1P4pE rwpdIgmmXQForQ/afQQ+lWfAznnaZBHj5Qk/MgfJO5ZQJ1biwr5j2Yvm U4E=
fdrg52sb3447vfc0c09rmoj1ortb9kfn.de. 7200 IN NSEC3 1 1 15 BA5EBA11 FDRJ46SI9UT3SNM1L8KGO53NATVDQCI2 A RRSIG
fdrg52sb3447vfc0c09rmoj1ortb9kfn.de. 7200 IN RRSIG NSEC3 8 2 7200 20190515110105 20190508110105 26298 de. vIe7nsKF/Y62p+qmso39acuPtZxrszlTjr8H/DyQPKmKlGpaAaYiIAcj 5x2bhzHQ8t30hfh/Z1+SvYOMoqjz1YudzucWiryNf3MzjBCXgSAXqrXs j2zfNZXWIP/B2uhbFSQHDhC6wr4s87iFJa9k8WzaJgLaq8IOAVkHbPn9 h9E=
;; Received 670 bytes from 194.146.107.6#53(n.de.net) in 27 ms

hilfe-center.1und1.de. 300 IN A 213.165.66.8
;; Received 66 bytes from 217.160.80.200#53(ns-1and1.ui-dns.de) in 13 ms

weiter