Domain Name System (DNS)

Es hat sich ziemlich früh herausgestellt, daß menschliche Benutzer die numerischen IP-Adressen nicht benutzen wollen, sondern aussagekräftige und vor allem merkbare Namen bevorzugen. Außerdem ist es ein großer Nachteil der IP-Adressen, daß aus ihnen keinerlei geographische Information zu entnehmen ist. Man sieht einer Zieladresse nicht an, ob sie in Australien oder im Nebenzimmer lokalisiert ist, außer man kennt zufällig die gewählten Zahlen. Es wurde daher das Domain Name System entwickelt, das den Aufbau von Rechnernamen regelt. Es ordnet jedem (weltweit eindeutigen) Namen eine IP-Adresse zu. Dabei gibt es einige Varianten. Eine Maschine mit einer IP-Adresse kann mehrere Funktionen haben und daher auch mehrere Namen, die auf diese Funktionen hinweisen. Genauso kann eine Maschine (z. B. ein Router) viele IP-Adressen haben aber nur einen Namen.

Beim "Domain-Name-System" (DNS) handelt es sich um einen Dienst, der zu einem Rechnernamen die zugehörige IP-Nummer liefert und umgekehrt. Das ist in etwa mit der Funktionsweise einer Telefonauskunft vergleichbar: Der Kunde ruft bei einer bestimmten Telefonnummer an und fragt nach der Rufnummer eines Teilnehmers. Nachdem er Name und Wohnort der gesuchten Person durchgegeben hat, erhält er als Antwort die gewünschte Nummer aus einem Verzeichnis. Genauso läuft eine DNS-Abfrage ab.

Gibt ein Benutzer in seinem Webbrowser zum Beispiel die Adresse

http://www.VereinGegenZuLangeDomainnamenEV.de

ein, dann sorgt ein Teil der Netzwerk-Software auf seinem lokalen Rechner dafür, daß ein Name-Server nach der IP-Adresse des Rechners www.vereingegenzulangedomainnamenev.de gefragt wird. Dieser Softwareteil wird als Resolver bezeichnet und entspricht in obigem Beispiel dem Kunden, der die Auskunft anruft. Welche IP-Adresse dieser Server hat, muß dem Klientenrechner natürlich bekannt sein, genauso wie der Kunde eine einzige Telefonnummer wissen muß, nämlich die der Auskunft selbst. Auf der Serverseite arbeitet eine Software, die als "Domain-Name-Server" oder kurz "Name-Server" bezeichnet wird und anhand einer Datenbank ("Zone-File") die passende IP-Nummer zum Rechnernamen liefert, oder einen anderen Name-Server fragt, wenn die Adresse unbekannt ist.

DNS ist ein typisches Beispiel für einen Verzeichnisdienst. Seine Aufgaben sind:

  • Strukturierung der Namen. (Domänen-Konzept)

  • Zuteilung und Verwaltung von Namen.

  • Auflösen von Namen (="Nachschlagen") in beide Richtungen (Name zu Adresse und Adresse zu Name)

  • Zwischenspeichern von Adressen (Caching)

  • Einteilung der Daten in hierarchische Ebenen

  • Verteilung der Daten auf verschiedene Knoten

  • Bereitstellung von Redundanz (Secondary-DNS, Caching-Only-Server)

Damit das DNS funktioniert muß es Instanzen geben, die Namen in IP-Adressen und IP-Adressen in Namen umwandeln ('auflösen') können. Diese Instanzen sind durch Programme realisiert, die an größeren Maschinen ständig (meist im Hintergrund) im Betrieb sind und 'Nameserver' heißen. Jeder Rechner, der an das Internet angeschlossen wird, muß die Adresse eines oder mehrerer Nameserver wissen, damit die Anwendungen auf diesem Rechner mit Namen benutzt werden können. Die Nameserver sind für bestimmte Bereiche, sogenannte 'domains' oder 'Zonen', zuständig (Institute, Organisationen, Regionen) und haben Kontakt zu anderen Nameservern, so daß jeder Name aufgelöst werden kann.


Domänen-Konzept

In den Anfängen des ARPA-Nets, aus dem das Internet entstand, wurde die Namensauflösung über eine einzige Datei erledigt. Jeder Rechner kopierte sich Nachts per FTP diese Datei von einem Master-Server auf die lokale Platte. Dieses Konzept funktioniert natürlich nur, solange die Anzahl der Namen nicht groß ist. Die benötigte Bandbreite ist proportinal zum Quadrat der beteiligten Rechner.

B ~ N2

Als Relikt aus dieser Zeit kennt fast jedes Betriebssystem auch heute noch eine Hosts-Datei, in der für kleine Netze Rechner/Nummern-Zuordnungen abgelegt werden können. (Bei Windows im Verzeichnis \WINDOWS\HOSTS, bei Unix unter /etc/hosts, bei Novell unter SYS:SYSTEM/ETC/HOSTS, etc.) Die Syntax aller dieser Hosts-Dateien ist einfach. Für jeden Rechner gibt es eine eigene Zeile mit dem Inhalt:

IP-Nummer	Hostname Alias Alias ....

Zum Beispiel:

192.168.112.1    chef dumpfbacke  
192.168.112.2    Snow-White
192.168.112.3    Doc
192.168.112.4    Happy
192.168.112.5    Bashful
192.168.112.6    Sneezy
192.168.112.7    Sleepy
192.168.112.7    Grumpy
192.168.112.8    Dopey

Der Begriff Alias läßt sich dabei am besten durch "Spitzname" (oder englisch Nickname) ersetzen; also ein weiterer Name für ein und den selben Rechner.

Bei einer kleinen Menge von Rechnern ist die Namensverwaltung mit einer Datei noch möglich; für einen so großen und ständig wechselnden Verbund wie das Internet ist sie aber nicht geeignet. Hier ist eine dezentrale Verwaltung mit einem eigens darauf abgestimmten Namensraum nötig.

Der Namensraum des DNS ist in sogenannte Domänen eingeteilt. Die Domänen sind hierarchisch als Baum angeordnet,

Ausgehend von der Wurzel (=Root) des Baumes ist der Namensraum in sogenannte "Toplevel-Domains" eingeteilt. Man unterscheidet dabei zwischen zwei verschiedenen Klassen von Toplevel-Domänen: Den generischen und den länderspezifischen.

Toplevel-Domänen

generisch

com

Kommerzielle Organisationen

edu

(education) Schulen und Hochschulen

gov

(government) Regierungsinstitutionen

mil

militärische Einrichtungen

net

Netzwerk betreffende Organisationen

org

Nichtkommerzielle Organisationen

int

Internationale Organisationen

arpa

und das alte ARPA-Net bzw. Rückwärts-Auflösung von Adressen

Ende 2000 sind neue TLDs von der ICANN genehmigt worden:

aero

Luftfahrtindustrie

coop

Firmen-Kooperationen

museum

Museen

pro

Ärzte, Rechtsanwälte und andere Freiberufler

biz

Business (frei für alle)

info

Informationsanbieter (frei für alle)

name

Private Homepages (frei für alle, aber nur dreistufige Domains der Form <Vorname>.<Name>.name)

länderspezifisch

Jeweils ein Länderkürzel für jedes Land, z.B.:
 
by Weissrussland
de Deutschland
at Östereich
fr Frankreich
to Tonga
tv Tuvalu

 

Unterhalb der Toplevel-Domänen folgen Subdomänen, die wiederum Domänen enthalten können und schliesslich, als Blatt des Baumes, ein einzelner Rechner. Der Name www.netzmafia.de ist also so zu verstehen. In der Toplevel-Domäne ".de" ist die Subdomain "Netzmafia" bekannt. Innerhalb der Subdomain "netzmafia" gibt es einen Rechner namens "www". Analog zu unserem Beispiel mit der Telefonauskunft, ist mit "de" das Land, mit "netzmafia" der Ort und die Straße und mit "www" der Name eines Teilnehmers bestimmt. Die komplette Adresse eines Rechners in der beschriebenen Notation (z.B. (www.netzmafia.de) bezeichnet man als FQDN (Full-Qualified-Domain-Name)

Für die Aufnahme einer Verbindung zwischen zwei Rechnern muß in jedem Fall der Rechnername in eine zugehörige IP-Adresse umgewandelt werden. Aus Sicherheitsaspekten ist es manchmal wünschenswert, auch den umgekehrten Weg zu gehen, nämlich zu einer sich meldenden Adresse den Namen und damit die organisatorische Zugehörigkeit offenzulegen.


Komponenten des DNS

Insgesamt sind es drei Hauptkomponenten, aus denen sich das DNS zusammensetzt:

  1. Der Domain Name Space, ein baumartig, hierarchisch strukturierter Namensraum und die Resource Records. Das sind Datensätze, die den Knoten zugeordnet sind.

  2. Name Server sind Programme bzw. Rechner, die die Informationen über die Struktur des Domain Name Space verwalten und aktualisieren. Ein Nameserver hat normalerweise nur eine Teilsicht des Domain Name Space zu verwalten. Oft wird auch der Rechner, auf dem das Nameserverprogramm läuft, als 'Nameserver' oder 'DNS-Server' bezeichnet.

  3. Resolver sind die Programme, die für den Client Anfragen an den Nameserver stellen. Resolver sind einem Nameserver zugeordnet; bei Anfragen, die er nicht beantworten kann (anderer Teilbereich des Domain Name Space). kann er aufgrund von Referenzen andere Nameserver Kontakten, um die Information zu erhalten.

Der Nameserver des DNS verwaltet also einzelne Zonen, die einen Knoten im DNS-Baum und alle darunterliegenden Zweige beinhalten. Auf jeder Ebene des DNS-Baums kann es Namesever geben, wobei jeder Nameserver seinen nächsthöheren und nächstniedrigeren Nachbarn kennt. Aus Sicherheitsgründen gibt es für jede Zone in der Regel mindestens zwei Nameserver (primary und secondary), wobei beide die gleiche Information halten. Nameservereinträge können nicht nur die Zuordnung Rechnername - IP-Adresse enthalten, sondern (neben anderem) auch weitere Namenseinträge für einen einzigen Rechner und Angaben für Postverwaltungsrechner einer Domain (MX, mail exchange).

Basis des Nameservice bilden die "Root-Nameserver", die für die Top-Level-Domains zuständig sind. Federführende Organistation ist hier die ICANN (=Internet Corporation for Assigned Names and Numbers , Adresse: http://www.icann.org). Gründung 1998. ICANN beauftragt die Verwalter der Zone "." (Wurzel des DNS-Baumes) mit 13 Servern. Bis auf die Server I (Stockholm), K (London) und M (Tokio) stehen alle Server in den USA.

 

Name Typ Betreiber URL
a com InterNic http://www.internic.org
b edu ISI http://www.isi.edu
c com PSINet http://www.psi.net
d edu UMD http://www.umd.edu
e usg NASA http://www.nasa.gov
f com ISC http://www.isc.org
g usg DISA http://nic.mil
h usg ARL http://www.arl.mil
i int NordUnet http://www.nordu.net
j (   ) (TBD) http://www.iana.org
k int RIPE http://www.ripe.net
l (   ) (TBD) http://www.iana.org
m int WIDE http://www.wide.ad.jp

Der Server A ist der primäre Server, alle anderen sind seine Secondaries. Eine Liste dieser Root-Server muss jeder DNS-Server haben (Ausnahme: Cache-Only-Server). Erzeugung der Liste mit dem Kommando:

dig @rs.internic.net . ns > root.servers

Die Namen, die im Internet verwendet werden müssen dabei einige Spezifikationen erfüllen:

  • Die Länge eines Namensteiles (Domänen- oder Rechnername) darf maximal 63 Zeichen betragen.

  • Die Gesamtlänge des Full-Qualified-Domain-Names darf 255 Zeichen nicht überschreiten.

  • Nur Buchstaben, Ziffern und "-" sind in den Namen zugelassen. Dabei muss jeder Name mit einem Buchstaben oder einer Ziffer beginnen und enden. ("3bla-fasel" ist zulässig, "3bla-" aber nicht.)

  • Zwischen Groß- und Kleinschreibung wird nicht unterschiedem.

Ein wichtiger Bestandteil des DNS-Konzeptes ist die Aufteilung der benötigten Datenbank auf viele verschiedene Rechner. Da das Gesamtsystem voll funktionsfähig bleiben muß, auch wenn ein Server ausgefallen ist, wir die Datenhaltung mit Hilfe von Zuständigkeiten gelöst: Zu jeder Domain gibt es mindestens einen zugehörigen Server, der verantwortlich die darin enthaltenen Subdomains oder Rechner verwaltet, oder die Verwaltung an einen weiteren Server weiterdelegiert. Am Stamm des DNS-Baumes sitzen dazu die "Root-Server", die alle einträge ihrer jeweiligen Domain kennen. Das heißt, daß der Root-Nameserver der Domäne ".de" einen Eintrag für den Named-Server der Domain "netzmafia.de" besitzt. Dieser Server hat wieder eine Liste der in "netzmafia.de" enthaltenen Rechner und Subdomains.

Die Frage eines Clients nach der IP-Nummern eines Rechners wird wie folgt abgewickelt:

  1. Der Client-Rechner "grumpy.zwerge.org" stellt die DNS-Anfrage nach "www.netzmafia.de" an seinen zuständigen DNS-Server. Dessen IP-Nummer muss dem Client bekannt sein.

  2. Kennt der Nameserver der Domain "zwerge.org" die Antwort nicht, so erkundigt er sich beim Root-Nameserver nach der Adresse des Nameservers von ".de"

  3. Der Root-Nameserver antwortet dem zuständigen DNS-Server der Domain "zwerge.org" mit der Adresse des Nameservers von ".de"

  4. Der Nameserver der Domain "zwerge.org" erkundigt sich beim Nameserver von ".de" nach der Adresse des Nameservers von "netzmafia.de".

  5. Der Nameserver von ".de" antwortet dem zuständigen DNS-Server der Domain "zwerge.org" mit der Adresse des Nameservers von "netzmafia.de"

  6. Der Nameserver der Domain "zwerge.org" erkundigt sich beim Nameserver von "netzmafia.de" nach der Adresse des Rechners "www.netzmafia.de".

  7. Der Nameserver von "netzmafia.de" antwortet dem zuständigen DNS-Server der Domain "zwerge.org" mit der Adresse des Rechners von "www.netzmafia.de".

  8. Der DNS-Server von "zwerge.org" liefert die IP-Nummer an den anfragenden Client. Damit ist die DNS-Abfrage abgehandelt.


DNS-Typen

Man unterscheidet folgende DNS-Typen

  • Cache-Only

    • Besitzt keine eigenen Tabellen mit Rechnernamen (Zone-Files).

    • Alle Anfragen werden an einen übergeordneten Server weitergegeben.

    • Adressen werden zwischengespeichert.

    • Zweck: Z.B. Entlastung einer Providerleitung

    • Sehr einfach einzurichten.

  • Secondary-DNS

    • Besitzt eigene Tabellen, die er vom Primary-DNS kopiert.

    • Die Tabellen können aber nicht verändert werden.

    • Zweck: Lastteilung, Backup

    • Einfach einzurichten.

  • Primary-DNS

    • Besitzt eigene Tabellen für eine oder mehrere Zonen.

    • Tabellen können lokal verändert werden.

    • Server ist "authoritative" für seine Zone.

    • Relativ hoher Aufwand für Einrichtung und Pflege.


DNS Resource Records

Im Standardfall generiert ein DNS-Server seine interne Datenbank aus einer Textdatei, der sogenannten "Zonen-Datei". Damit er funktioniert, müssen bestimmte Einträge korrekt eingetragen worden sein. An dieser Stelle sollen nur ein paar grundlegende Eigenschaften der wichtigsten Typen von Resource Records betrachtet werden. Es gibt verschiedene Record-Typen:

  • SOA-Records (Source of Authority) enthalten die technischen Angaben für die gesamte Zone sowie einige Steuerdaten für die Zusammenarbeit der Nameserver untereinander. SOA-Records sind weiter unten genauer erklärt.

  • NS-Records (Name Server) verweisen auf die Nameserver, die für eine Zone authoritativ sind. Auf den eigenen Namen zeigende NS-Records dienen der Plausibilitätsprüfung; NS-Records für eine Subdomain weisen darauf hin, dass die Informationen für die Subdomain auf einem anderen Nameserver zu finden sind (Delegation).

  • A-Records (Address) verknüpfen einen Domainnamen mit einer IP-Adresse. Um IPv4- und IPv6-Adressen zu unterscheiden, wird seit einiger Zeit für IPv4 der A-Record und für IPv6 der AAAA-Record verwendet.

  • PTR-Records (Pointer) verknüpfen eine IP-Adresse "rückwärts" mit einem Domainnamen.

  • CNAME-Records Canonical Name) definieren einen Domainnamen als Alias für einen anderen. Es gibt also für jedes System einen A-Record und ggf. noch beliebig viele CNAME-Records.

  • MX-Records (Mail Exchanger) definieren, bei welchen Rechnern Mail für eine Domain eingeliefert werden soll. Auf diese Weise sind geneische Mailadressen wie z.B. "plate@fhm.edu" möglich.

  • TXT-Records (Text) enthalten beliebige alphanumerische Informationen zu einem Domainnamen.

Aufbau der Zonendatei

Beispiel des Primary DNS "aella.serverzwerge.de":

; Zonendatei fuer die Domaene serverzwerge.de
;
$TTL 1D
@       in      SOA     aella.serverzwerge.de.  dnsadmin.aella.serverzwerge.de. (
                2002051505        ; Seriennummer
                10800   ; Refresh : 3 Stunden
                3600    ; Retry   : 1 Stunde
                604800  ; Expire  : 1 Woche
                86400)  ; Min. TTL: 1 Tag
                NS              aella.serverzwerge.de.
                MX              10 aella.serverzwerge.de.
                MX              50 mail.irgendeinprovider.de.
 
aella           A       10.23.200.100
snowwhite       A       10.23.200.17
doc             A       10.23.200.18
happy           A       10.23.200.19
bashful         A       10.23.200.20
sneezy          A       10.23.200.21
sleepy          A       10.23.200.22
grumpy          A       10.23.200.23
dopey           A       10.23.200.24
                HINFO   "Hexium 7.5" "Linux"
 
beispiel        CNAME   aella

Der SOA-Record

Jede Zone muss einen SOA-Record (Start of Authority) enthalten. Dort sind wichtige Informationen über die Zone abgelegt. Hier ein Beispiel:

$TTL 1D
@       in      SOA     aella.serverzwerge.de.  dnsadmin.aella.serverzwerge.de. (
                2002051505        ; Seriennummer
                10800   ; Refresh : 3 Stunden
                3600    ; Retry   : 1 Stunde
                604800  ; Expire  : 1 Woche
                86400)  ; Min. TTL: 1 Tag

Das Semikolon leitet Kommentare ein, die natürlich nicht vorhanden sein müssen.

  • Das erste Feld im SOA-Record benennt den primary master server. Dies ist der Server, der die endgültige Autorität über den Inhalt der Zone ist. Dort ist das Zonefile selbst abgelegt.

  • Das zweite Feld des SOA-Records nennt die Mailbox der für die Zone verantwortlichen Person. Das @-Zeichen der E-Mail-Adresse wird hier durch einen Punkt ersetzt. Links vom @ stehende Punkte müssen als \. notiert werden, um eine eindeutige Zuordnung für den Punkt zu erreichen, der für den @ steht.

  • Die Seriennummer spielt eine wichtige Rolle im Zusammenspiel zwischen Master-DNS und Slave-DNS: Slaves führen nur dann einen Zonentransfer durch, wenn die vom Master übermittelte Seriennummer größer ist als die der lokal gehaltenen Zone. Sie wird meist nach dem Schema yyyymmddnn gebildet: yyyy = Jahr (4-stellig), mm = Monat (2-stellig), dd = Tag (2-stellig) und nn die Viertelstunde (2-stellig) des aktuellen Tags.

  • Der Refresh-Wert legt fest, wie häufig ein Slave beim Master nachfragt, ob sich die Zone verändert hat.

  • Der Retry-Wert legt fest, wie häufig ein Slave einen fehlgeschlagenen Zonentransfer wiederholt, bis er aufgibt.

  • Der Expire-Wert legt fest, wie lange ein Slave seine Kopie einer Zone noch als gültig ansieht, wenn er den Master nicht erreichen kann.

  • Der Minimum-TTL-Wert legt fest, wie lange eine negative Antwort vom Client zwischengespeichert werden darf. Er ist einer der beiden wichtigsten Timer in einer Zonendatei (TTL = Time To Live).

  • Der Eintrag in der $TTL-Zeile oberhalb des SOA-Records legt fest, welche Lebensdauer die Resource Records des Zonefiles in den Caches nicht authoritativer Nameserver haben sollen.

Um die Last auf den für eine Zone authoritativen Nameservern zu verringern, speichern die von den Internetbenutzern verwendeten Forwarder die Auskünfte, die sie von den authoritativen Nameservern erhalten haben, für eine bestimmte Zeit zwischen. Der für die Zone zuständige Administrator kann das Caching der Forwarder in manchen Grenzen beeinflussen.

Wird eine Nameserver-Anfrage positiv beantwortet, übermittelt der authoritative Nameserver zusammen mit dem angefragten Resource Record die gewünschte Lebenszeit des Eintrags in Form der TTL. Ist im Zonefile für den Resource Record keine TTL angegeben, so übermittelt der authoritative Nameserver den mit $TTL im Zonefile gesetzten Defaultwert. Der Forwarder übermittelt die Antwort weiter an die Quelle der Anfrage und speichert die Antwort für die übermittelte Zeitdauer zwischen, so dass weitere Anfragen nach dem gleichen Resource Record innerhalb dieser Zeitdauer ohne erneuten Zugriff auf den authoritativen Server beantwortet werden können.

Bevor man zeitkritische Änderungen an einer Zone vornimmt (z.B. Umzug eines Web- oder Mailservers auf eine andere IP-Adresse), ist zu empfehlen, zuerst einen oder beide TTL-Werte herunterzusetzen. Dies sollte mindestens einen TTL-Zeitraum vor der eigentlichen Änderung geschehen, damit die kürzere TTL sich herumgesprochen hat. Nachdem die Änderung erfolgreich durchgeführt wurde, kann die TTL wieder heraufgesetzt werden.

Der MX-Record

Nimmt eine Domain am E-Mailverkehr teil, so wird einer oder mehrere MX-Records in die Zone eingetragen. MX-Records haben zusätzlich zu ihrem Ziel eine Prioritätsangabe. soll eine E-Mail an die Domain zugestellt werden, versucht der absendende Mailserver zuerst den MX-Record niedrigster Priorität. Kann er die E-Mail dort nicht ausliefern, versucht er der Reihe nach die MX-Records höherer Priorität.

Gibt es für einen Domainnamen keinen MX-Record, sondern nur einen A-Record, wird die Mail an diesen zugestellt. Dieses Verhalten ist historisch bedingt und nicht mehr sinnvoll. Trotzdem wird es immer noch so gehandhabt. Soll eine Domain nicht am E-Mailverkehr teilnehmen, so ist es sinnvoll, einen MX-Record auf ein System zu setzen, das für den Domainnamen eingehende E-Mail mit einem permanenten Fehler ablehnt.