Das Domain Name System, kurz DNS, wird auch als "Telefonbuch des Internets"
bezeichnet. Ähnlich wie man in einem Telefonverzeichnis nach einem Namen sucht,
um die Telefonnummer heraus zu bekommen, schaut man im DNS nach einem
Computernamen, um die dazugehörige IP-Adresse zu bekommen. Die IP-Adresse wird
benötigt, um eine Verbindung zu einem Server aufbauen zu können, über den nur
der Computername bekannt ist.
Das Domain Name System ist ein System zur Auflösung von Computernamen in
IP-Adressen und umgekehrt. DNS kennt keine zentrale Datenbank. Die Informationen
sind auf vielen tausend Nameservern (DNS-Server) verteilt.
Möchte man zum Beispiel die Webseite www.schneider-it.at besuchen, dann fragt
der Browser einen DNS-Server, der in der IP-Konfiguration hinterlegt ist. Das
ist in der Regel der Router des Internet-Zugangs. Je nach dem, ob die
DNS-Anfrage beantwortet werden kann oder nicht, wird eine Kette weiterer
DNS-Server befragt, bis die Anfrage positiv beantwortet und eine IP-Adresse an
den Browser zurück geliefert werden kann.
Wenn ein Computername oder Domain-Name nicht aufgelöst werden kann, dann kann
auch keine Verbindung zu dem betreffenden Host aufgebaut werden. Es sei denn,
der Nutzer verfügt über das Wissen der IP-Adresse. Das bedeutet, ohne DNS ist
die Kommunikation im Netzwerk und im Internet praktisch nicht möglich. Deshalb
existieren viele tausend DNS-Server auf der ganzen Welt, die zusätzlich
hierarchisch angeordnet sind und sich gegenseitig über Änderungen informieren.
Namensauflösung vor DNS
DNS geht auf die Datei "hosts" zurück, deren Inhalt zur Namensauflösung im
ARPANET (Vorgänger des Internets) diente und händisch gepflegt wurde. Mit
zunehmender Anzahl der Hosts im ARPANET wuchs der Bedarf für ein verteiltes
und hierarchisches System zur Auflösung von Computernamen in IP-Adressen und
umgekehrt.
Ein weiterer Nachteil der Datei "hosts" ist die fehlende Eindeutigkeit.
Gemeint ist, in der Datei kann alles drin stehen, was auch immer der
Administrator für richtig hält. Der Inhalt könnte manipuliert sein. Um das
zu vermeiden, sieht das DNS autoritative Nameserver vor und mit DNSSEC ein
Verfahren mit der Möglichkeit zu prüfen, ob ein DNS-Response von einem
vertrauenswürdigen DNS-Server stammt und ob der Transport unverfälscht
erfolgt ist.
Domain oder Domain-Name
Ein Domain-Name, kurz Domain, dient dazu, um Computer, die mit kaum
merkbaren IP-Adressen adressiert sind, richtige Namen zu geben und
gleichzeitig in eine hierarchische Struktur zu unterteilen. Domain-Namen
sind auch häufig Teil eines Uniform Resource Locator (URL). Der URL (nicht
die) ist eine "einheitliche Angabeform für Ressourcen" in Netzwerken. Eine
URL beginnt mit einem vorangestellten Kürzel, das den verwendeten Dienst
kennzeichnet (z. B. http:// oder ftp://). Es handelt sich dabei um eine
optionale Angabe, die auch nur für Anwendungsprogramme wichtig ist und kein
Teil des Domain-Namens ist.
Die für Domain-Namen verwendete Struktur besteht aus drei oder mehr Teilen.
Die einzelnen Teile bzw. Ebenen werden durch Punkte voneinander getrennt.
Zu beachten ist, dass ein Domain-Name ganz rechts mit einem abschließenden
Punkt beginnt. Dieser Punkt ist die Wurzel bzw. Root. In der Regel lässt man
den Punkt einfach weg, weil er nur symbolischen Charakter hat.
Computername (Host oder Dienst) |
Second-Level-Domain (SLD) |
Top-Level-Domain (TLD) |
www. |
schneider-it. |
at. |
ftp. |
schneider-it. |
at. |
Manchmal befindet sich zwischen der Second-Level-Domain (SLD) und dem
Computernamen eine Sub-Level-Domain (Subdomain).
Computername (Host oder Dienst) |
Sub-Level-Domain (Subdomain) |
Second-Level-Domain (SLD) |
Top-Level-Domain (TLD) |
www. |
dse-faq. |
schneider-it. |
at. |
Ein Domain-Name wird immer von hinten nach vorne gelesen. Dort beginnt die
Adresse mit der Top-Level-Domain (TLD). Man unterscheidet zwischen zwei
Typen von Top-Level-Domains. Geografische Top-Level-Domains, die Ländercodes
die nach ISO 3166-1 definiert und als Country-Code Top-Level-Domains (ccTLD)
bezeichnet werden. Dann gibt es noch die organisatorischen oder generischen
Top-Level-Domains (Generic Top-Level-Domain, gTLD).
Die Second-Level-Domain kann von einer Person oder Organisation beantragt
und eingesetzt werden. Die Second-Level-Domain bildet unter der
Top-Level-Domain einen Domain-Namensraum, der es der Organisation ermöglicht
einen Server mit dem Namen "www" zu betreiben, der im Internet dann zum
Beispiel unter "www.schneider-it.at" zu erreichen ist.
Für weitere Unterteilungen existiert noch eine Third-Level-Domain, die auch
als Sub-Level-Domain oder Subdomain bezeichnet wird. Ganz am Ende der Kette
(am Anfang des Domain-Namens) wird dann der optionale Hostname des Computers
eingesetzt.
Eine so zusammengesetzte Adresse (zum Beispiel www.schneider-it.at) ist ein
sogenannter Fully Qualified Domain Name (FQDN).
Organisatorische Top-Level-Domains (Auszug)
Domain (gTLD) |
Organisationsform |
.aero |
Lufttransportindustrie |
.arpa |
Alte Arpanet Domäne |
.biz |
Business, für große und kleinere Unternehmen |
.com |
Kommerzielle Domain |
.coop |
Kooperationen, Genossenschaften |
.edu |
Schulen, Universitäten, Bildungseinrichtungen |
.gov |
Regierungsstellen der Vereinigten Staaten von Amerika |
.info |
Informationsdienste |
.int |
International tätige Institutionen |
.mil |
Militär der Vereinigten Staaten von Amerika |
.museum |
Museen |
.name |
Privatpersonen |
.net |
Netzspezifische Dienste und Angebote |
.org |
Nichtkommerzielle Unternehmungen und Projekte |
.pro |
Professionals, spezielle Berufsgruppen |
Geografische Top-Level-Domains (Auszug)
Domain (ccTLD) |
Land |
.at |
Österreich |
.au |
Australien |
.cc |
Kokos-Inseln |
.ch |
Schweiz |
.de |
Deutschland |
.fr |
Frankreich |
.gb |
Großbritannien |
.ie |
Irland |
.it |
Italien |
.li |
Lichtenstein |
.nl |
Niederlande |
.no |
Norwegen |
.ru |
Russland |
.to |
Tonga |
.uk |
Vereinigtes Königreich |
Nach der Top-Level-Domain (TLD) folgt die Second-Level-Domain (SLD), die
einen beliebigen, aber unter der Top-Level-Domain einzigartigen Namen haben
kann. Das jeweilige, für die Top-Level-Domain verantwortliche NIC verwaltet
die Second-Level-Domains. Für .de (Deutschland) ist das die DENIC.
In einigen Ländern, wie beispielsweise Großbritannien, gibt es zur besseren
Unterscheidung festgelegte Second-Level-Domains (zum Beispiel .co.uk.,
.ac.uk. oder .gov.uk.). Unterhalb der Second-Level-Domain können weitere
Sub-Level-Domains (Subdomains) vorhanden sein, für die der Inhaber der
Second-Level-Domain verantwortlich ist.
Aufgabenteilung im DNS
Eine Aufgabe im Domain Name System ist die Namensauflösung. Eine weitere
Aufgabe ist die Verwaltung der DNS-Zonen. An der Spitze stehen die
sogenannten Root-Server, die Informationen zu den Top-Level-Domains (TLD)
speichern.
Auf den Ebenen darunter tummeln sich weitere Nameserver, die für Domains
oder Subdomains zuständig und autoritativ auskunftsberechtigt sind.
Und dann gibt es DNS-Server, die sich nur mit der Namensauflösung
beschäftigen und Anfragen weiterleiten und die Antworten erfolgreicher
Anfragen zwischenspeichern.
Oder um es anders auszudrücken, ein DNS-Server ist nicht gleich DNS-Server.
Jeder hat im DNS eine andere Aufgabe und Zuständigkeit.
DNS-Zonen
Eine DNS-Zone ist ein Verantwortungsbereich oder eine Verwaltungseinheit,
die in der Regel an einen Teil eines Domain-Namens gebunden ist. Ein
autoritativer DNS-Server ist für eine oder mehrere dieser DNS-Zonen
verantwortlich. Das heißt, er ist derjenige, von dem eine DNS-Anfrage
eindeutig und korrekt zu seiner Zone beantwortet werden kann.
Die Daten einer Zone liegen in einer lokalen Zonendatei, die vom zuständigen
Administrator gepflegt werden muss.
Einträge in einer DNS-Zone bzw. Zonendatei
Die Einträge in einer DNS-Zone werden als Resource Records bezeichnet. Jeder
Resource Record bezieht sich auf einen anderen Record-Type, der eine
bestimmte Information enthält. Zum Beispiel eine IP-Adresse oder die
Mailserver-Adresse eines Domain-Namens bzw. der Zone.
Record-Type / Eintrag |
A / IPv4-Adresse |
AAAA / IPv6-Adresse |
CNAME / Verweis, Weiterleitung oder Alias |
MX / zuständiger Mailserver für die Zone (Mail Exchange) |
NS / zuständiger Nameserver für die Zone |
SRV / Server für einen Dienst im Windows-AD |
TXT / liefert einen Text zurück |
SOA / Ansprechpartner und Parameter zur abgefragten Zone (SOA:
engl. für Start of Authority)
|
DNS-Server / Nameserver
Die Bezeichnungen DNS-Server und Nameserver benennen das gleiche. Während
der Nameserver eine allgemeine Bezeichnung für einen Server ist, der für die
Namensauflösung zuständig ist, bezeichnet der DNS-Server einen Nameserver im
Domain Name System.
Den einen DNS-Server gibt es nicht. Man unterscheidet zwischen verschiedenen
Arten von DNS-Servern, die unterschiedliche Verantwortungsbereiche, Aufgaben
und Funktionen haben.
- DNS-Root-Server
- Autoritativer Nameserver (für eine DNS-Zone)
-
Nicht-autoritativer Nameserver
- Cache
-
Forwarder = Weiterleitung zu anderem DNS-Server spart
Traffic
- Resolver = DNS Client
DNS-Root-Server: DNS-Root-Server, Root-Name-Server oder auch nur Root-Server
sind autoritative Nameserver für die Root-Zone. Sie beantworten Anfragen zur
Root-Zone (".") oder geben eine Liste mit autoritativen Namenservern für
eine bestimmte Top-Level-Domain (TLD) zurück (".de", ".com", ".org",
etc.).
Um Manipulationen der Root-Zone zu verhindern gibt es weltweit über hundert
Root-Name-Server, die dem DNS Root Server System Advisory Committee der
ICANN unterstehen.
Autoritativer Nameserver: Ein autoritativer Nameserver ist für eine (oder
mehrere) Zonen zuständig und beantwortet auch nur Anfragen für diese Zonen.
Autoritativ bedeutet, dass die Informationen dieses Nameservers als
verbindlich gelten.
Nicht-autoritativer Nameserver: Ein nicht-autoritativer Nameserver ist nicht
selbst für eine DNS-Zone verantwortlich und muss deshalb die Informationen
zu einer Zone aus zweiter oder dritter Hand mit einer rekursiven oder
iterativen DNS-Abfrage ermitteln. Dieser Nameserver und seine DNS-Auskunft
ist deshalb nicht-autoritativ.
In der Praxis unterscheidet man grob zwischen autoritativen und rekursiven
DNS-Servern. Ein rekursiver DNS-Server ist dabei nur ein Proxy-Server. Er
holt die angefragten Informationen ab und stellt das Ergebnis den Hosts zur
Verfügung. Er hält die Informationen eine Zeit lang vor, damit bei einer
erneuten Anfrage diese nicht noch einmal ins Netz geschickt werden muss. Von
einem rekursiven DNS-Server erhält man immer "non-authoritative", also nicht
autorisierte Antworten. Das bedeutet, dass der Inhalt der Antwort nicht
richtig sein muss. Weil er im Prinzip nur das nachplappert, was er von
woanders ermittelt hat.
Weitere Eigenschaften von Nameservern sind Caching (speichern) und
Forwarding (weiterleiten).
Caching-Server: Ein Caching-Server erhält Informationen von einem anderen
Nameserver und speichert die Auskünfte eine Zeit lang zwischen. Dieser
Server muss die Information erst dann wieder einholen, wenn sie nicht mehr
zur Verfügung steht. Die Lebensdauer (Time-To-Live, TTL) bestimmt der
autoritative Nameserver.
Forwarding-Server: Ein Forwarding-Server leitet alle DNS-Anfragen
ausnahmslos an einen anderen Nameserver weiter.
Resolver: Die meisten DNS-Server sind keine autoritativen DNS-Server,
sondern nur DNS-Resolver mit Caching- und/oder Forwarding-Funktion.
Typischerweise sind DNS-Resolver in einem lokalen Netzwerk für die
Namensauflösung der Clients zuständig. Ein als Resolver agierender
DNS-Server befinden sich lokal auf einem Computer oder auch als
Server-Funktion in einem Router im lokalen Netzwerk. Der in der
IP-Konfiguration eingetragene DNS-Server ist demnach ein solcher
DNS-Resolver. Wobei der lokale DNS-Client auch als Resolver bezeichnet wird.
Resolver (DNS-Client)
Ein Resolver ("to resolve", "auflösen") ist ein Programm, das Informationen
aus dem Domain Name System besorgt. Das Programm ist eine Art
Vermittlungsstelle zwischen einer Anwendungen und dem DNS.
Der Resolver ist direkt in TCP/IP integriert und steht dort als
Software-Bibliothek für die Namensauflösung zur Verfügung. Der Resolver wird
mit den Funktionen "gethostbyname" und "gethostbyaddr" angesprochen. Er
liefert die IP-Adresse eines Domain-Namens bzw. dem Haupt-Domain-Namen einer
IP-Adresse zurück.
Damit der Resolver arbeiten kann benötigt er die IP-Adresse von einem,
besser von zwei DNS-Servern, die in der IP-Konfiguration eingetragen sein
müssen. In der Regel erhält ein IP-Host die IP-Adresse des oder der
DNS-Server per DHCP oder die IP-Adresse muss manuell eingetragen werden.
Primärer und Sekundärer DNS-Server / Primary und Secondary Nameserver
Damit ein DNS-Server die ganze Last der DNS-Anfrage nicht alleine tragen
muss, gibt es sogenannte Primary und Secondary Nameserver. Sie sind
voneinander unabhängig und redundant ausgelegt, so dass mindestens immer ein
Server verfügbar ist. Der Secondary Nameserver gleicht in regelmäßigen
Abständen seine Daten mit dem Primary Nameserver ab und dient so als
Backup-Server. Ein zweiter Nameserver ist sinnvoll, weil ein Ausfall des
primären Nameservers dazu führt, dass Internet-Verbindungen ohne
Namensauflösung nicht mehr möglich sind. Um dann trotzdem Verbindungen
aufbauen zu können, müsste man als Anwender die IP-Adressen der
kontaktierten Server kennen. Was aber nicht die Regel ist.
Ablauf einer Namensauflösung mit DNS (DNS-Abfrage)
Grundsätzlich unterscheidet man zwischen der rekursiven und der iterativen
Namensauflösung. Einer der beiden Abfragetypen wird zusammen mit dem
Domain-Namen von einem beliebigen Host an den zuständigen Resolver bzw.
DNS-Server übermittelt.
Wie genau der Ablauf der Namensauflösung (rekursiv oder iterativ) erfolgt,
kann im Vorfeld nicht bestimmt werden. Es kommt darauf an, wie der
Nameserver reagiert, der einen DNS-Request bekommt.
Rekursion
Der Client übergibt seinen DNS-Request an seinen zuständigen Resolver (1.).
Wenn dieser den Domain-Namen nicht auflösen kann, dann würde er bei einer
rekursiven Namensauflösung weitere DNS-Server befragen (2.), bis der
Domain-Name aufgelöst ist (3.) und die Antwort an den Client zurückliefern
(4.). Der Resolver würde in dem Fall als Stellvertreter (Proxy) für den
Client arbeiten. Der Client würde die erhaltene IP-Adresse an das
Anwendungsprogramm übergeben.
Iteration
Die iterative Namensauflösung erfolgt meist zwischen DNS-Servern. Die
meisten Clients und Resolver können damit nicht umgehen.
Der zuständige DNS-Server übergibt seinen DNS-Request an einen in der
Hierarchie höher stehenden DNS-Server (1.). Der beantwortet den DNS-Request
mit einem Verweis auf andere Nameserver (2.), die den Namen auflösen können
(z. B. autoritative Nameserver). Der DNS-Server muss sich dann um einen
erneuten DNS-Request kümmern (3.), bis der Domain-Name vollständig aufgelöst
ist (4.).
DNS-Protokoll
DNS ist auf der Anwendungsschicht des OSI-Schichtenmodells angeordnet.
Deshalb nutzt es zur Übertragung TCP und UDP auf dem Port 53. In der Regel
verwendet der Resolver das UDP-Protokoll. Wenn die Antwort größer als 512
Byte ist, werden nur 512 Byte übertragen. Anschließend muss der Resolver
seine Anfrage noch mal über TCP wiederholen, damit die Antwort in mehreren
Segmenten aufgeteilt werden kann. Der Datenaustausch zwischen dem Primary
und Secondary DNS-Server wird ausschließlich mit TCP geregelt.
OpenDNS
OpenDNS ist ein kostenloser Dienst, der DNS-Abfragen beantwortet. OpenDNS
bietet Auflösung von DNS-Namen für Privatpersonen und Firmen an. Es handelt
sich dabei um eine Alternative zur Nutzung des DNS-Servers des eigenen
Internet Service Providers (ISP).
DNSSEC
In der regulären Kommunikation zwischen einem DNS-Client und DNS-Server ist
es nicht vorgesehen, die Kommunikation zu verschlüsseln oder zu prüfen, ob
ein DNS-Response von einem vertrauenswürdigen DNS-Server stammt. Hier
besteht die Gefahr des DNS-Spoofings. Das heißt, ein Angreifer fängt
DNS-Requests ab und beantwortet sie noch vor dem eigentlich kontaktierten
DNS-Server.
Mit der Erweiterung DNSSEC gibt es die Möglichkeit zu prüfen, ob ein
DNS-Response von einem vertrauenswürdigen DNS-Server stammt und ob der
Transport unverfälscht erfolgt ist.