Navigation überspringen

Domain Name System

Das Domain Name System (DNS) ist einer der wichtigsten Dienste in IP-basierten Netzwerken. Seine Hauptaufgabe ist die Beantwortung von Anfragen zur Namensauflösung. Als Namensauflösung bezeichnet man Verfahren, die es ermöglichen symbolische Namen in die dazugehörige IP-Adressen zu übersetzen.

Das DNS funktioniert ähnlich wie eine Telefonauskunft. Der Benutzer kennt die Domain (den für Menschen merkbaren Namen eines Rechners im Internet) – zum Beispiel example.org. Diese sendet er als Anfrage an einen DNS-Server. Dieser Name wird dann dort vom DNS in die zugehörige IP-Adresse (die „Anschlussnummer“ im Internet) umgewandelt – zum Beispiel eine IP-Adresse der Form 192.0.2.42, die dann benutzt wird, um den richtigen Rechner anzusprechen.

(Verändert nach https://de.wikipedia.org/wiki/Domain_Name_System und http://de.wikipedia.org/wiki/Namensauflösung)

Benötigtes Vorwissen

Du musst ein Netzwerk mit mehreren Rechner konfigurieren können. Dazu musst du über IP-Adressen und Netzwerkmasken Bescheid wissen. Es ist für dieses Kapitel sinnvoll, aber nicht unbedingt notwendig, das Kapitel Internet bzw. die Vernetzung von lokalen Netzwerkwerken mit Routern behandelt zu haben.

Du musst auf den Rechnern Webserver und Browser einrichten können. Dabei ist es nicht unbedingt erforderlich, eigene Webseiten gestalten zu können.

Schaue bei:

Adressierung Netzmaske Router Client-Server-Prinzip

Domain Name System in lokalen Netzwerken

Domain Name System (DNS) 

Schaller. Zuordnungstabelle eines Windows DNS-Servers (CC BY-NC-SA)


IP-Adressen sind für Menschen schwer zu merken. Leichter wäre es, wenn die Computer Namen hätten wie die Menschen auch. Daher hat man ein System eingeführt, mit dem man den Computern Namen geben kann und diese Namen dann automatisch in die richtigen IP-Adressen übersetzt werden. Dies bezeichnet man als Domain Name System (DNS).

Dabei verwaltet ein Domain Name Server-Programm eine Liste mit allen Namen und den zurzeit gültigen dazugehörigen IP-Adressen. Bei diesem Domain Name Server fragen die Clients dann nach, welches die richtige IP-Adresse ist, wenn nur der Name des gewünschten Rechners bekannt ist. Daher muss jeder Client die IP-Adresse des Domain Name Servers kennen. Sie wird in der Netzwerkkartenkonfiguration angegeben (vgl. ipconfig). Die zum DNS-Server gehörende Portnummer 53 ist immer gleich.

Schaller. nslookup in der cmd-Kommandozeile


Mit dem Befehl nslookup kann man auf Windows-Rechnern mit den DNS-Servern kommunizieren. Gibt man den Befehl ein, wird der Standard-DNS-Server angezeigt. Gibt man einen Domain-Namen ein, wird der DNS-Server befragt und antwortet mit der dazugehörigen IP-Adresse (im Bild sowohl IPv6 als auch IPv4-Adresse).

Im Internet ist das System etwas komplizierter, da es dort sehr viele Domainnamen gibt und kein Server alle diese Domainnamen kennt.

Konfiguration eines DNS-Servers in Filius

Der DNS-Server soll für alle wichtigen Adressen des Netzwerks einen Domain-Namen speichern. Diese Domain-Namen können dann verwendet werden, um z.B. eine Webseite aufzurufen, eine Ping-Anfrage durchzuführen oder auch einen Mailserver anzusprechen.

Schaller. DNS-Server in Filius (CC BY-NC-SA)

Der DNS-Server kann auf einem beliebigen Rechner im Simulationsmodus installiert werden. Er muss wie alle anderen Server auch, explizit gestartet werden. Trage dazu die gewünschten Zuordnungen der Domain-Namen zu IP-Adressen beim DNS-Server ein.

Schaller. Konfiguration der Rechner (CC BY-NC-SA)

Wechsele dann in den Entwurfsmodus und trage bei allen (!) Rechnern des Netzwerks als DNS-Server die IP-Adresse desjenigen Rechners ein, auf dem der DNS-Server installiert ist (hier 192.168.1.100).

Danach kann der DNS-Server mit Hilfe des host-Befehl in einem Terminalfenster im Simulationsmodus getestet werden.

host www.gymnasium-ettenheim.de

sollte hier 192.168.1.10 liefern.

Konfiguration eines DNS-Server in Filius (Video)

Erklärvideo auf Youtube von Gort RSD
Aufgrund der DSGVO ist es leider nicht zulässig, das Video hier direkt anzuzeigen. Sie werden durch den Link auf Youtube weitergeleitet. Dort werden über Cookies personenbezogene Daten erfasst.
Gort RSD über YouTube. Webserver und DNS in Filius einrichten

Domain Name System im Internet

Historie (optional)

Im Domain Name System wird jedem Domainnamen eine IP-Adresse zugeordnet. Dadurch erhält man eine lange Liste von Domainnamen mit den zugehörigen IP-Adressen. Zu Beginn der Entwicklung des Internet wurde auf jedem Client-Rechner eine derartige Tabelle geführt. Als das Internet aber immer weiter wuchs, wurde diese Methode zu unhandlich, weil dieselben Daten auf jedem einzelnen Client-Rechner ständig auf dem aktuellen Stand gehalten werden mussten - eine schier unlösbare Aufgabe!

Also wurden diese Daten nur noch auf bestimmten Rechnern vorgehalten, die die Rolle von "Servern für die Adress-Ermittlung" übernahmen und so zu "Name-Servern" (wie üblich in englischer Aussprache!) wurden. Jetzt musste jeder Computer, der die zu einem Domainnamen gehörige IP-Adresse brauchte, bei diesen Servern anfragen. Es ist klar, dass bei den heutigen Zugriffszahlen dieses System zu einem Zusammenbruch der Nameserver führen würde. Außerdem müsste jeder neue Domainname den Betreibern dieser Server mitgeteilt werden. Und das sind mehrere Millionen pro Jahr!

Daher wurde ein hierarchisches System eingeführt. In Deutschland (Endung .de) ist nun die DENIC für die Vergabe von neuen Domain-Namen zuständig. Wenn du z.B. die Domain "ichbinXY.de" für dich registrieren lassen willst, müsstest du dich an einen "Internet-Service-Provider" (ISP) wenden, der die Registrierung dieser Domain für dich beim DENIC beantragt.

Mit vielen Domains z.B. "schule-bw.de" wirst du allerdings Pech haben: zwar kann der Name einer Domain weitgehend frei gewählt werden, aber ein einmal vergebener Name gehört dem Erst-Anmelder, und viele intuitive Namen wie z. B. "schule-bw.de" sind schon vergeben! Meist stellen die ISP eine Recherche-Möglichkeit zur Verfügung, damit man vor der Antragstellung klären kann, ob der gewünschte Name noch frei ist (Domainabfrage bei Denic). Es gilt hier fast uneingeschränkt: wer zuerst kommt, malt zuerst! Nur wenn man sehr gute Argumente hat und glaubhaft machen können, dass der Domain-Name für ein für die Allgemeinheit wichtiges Projekt benötigt wird, kann der Besitz eines schon vergebenen Domain-Namens gerichtlich erstritten werden. So tendiert die deutsche Rechtsprechung inzwischen dazu, aus Ortsbezeichnungen gebildete Domain-Namen im Streitfall den jeweiligen Orten zuzusprechen. Hätte man z.B. als Privatperson vor vielen Jahren die Domain "konstanz.de" registriert, dann könnte die Stadt Konstanz heute eine Herausgabe des Namens erzwingen, weil jeder Internet-Surfer unter "www.konstanz.de" Informationen der Stadt Konstanz erwartet, und nicht eine private Homepage. 

Die eingeschränkte Verfügbarkeit von Domain-Namen hat gelegentlich schon zu Hamster-Käufen geführt: Zeitgenossen, die sich für besonders pfiffig hielten, haben reihenweise Domains registriert, nicht um diese tatsächlich zu nutzen, sondern um sich die Namensrechte zu sichern und diese dann für teures Geld an andere Interessenten weiterzuverkaufen. Inzwischen haben sich die Wogen um dieses "domain grabbing" wieder etwas geglättet: der Markt erwies sich dann doch nicht als so ergiebig, wie ursprünglich angenommen, und viele der Spekulanten konnten die erwarteten Gewinne nicht realisieren.

Hierarchische Domain-Namen

Im Internet ist das Domain Name System so geordnet, dass jeder DNS-Server für einen gewissen Namensbereich zuständig ist.  Innerhalb jedes Bereichs (z.B. .de) gibt es weitere Unterbereiche (z.B. schule.de), für die andere DNS-Server zuständig sind. Für diese Ordnung müssen auch die Domain-Namen geordnet sein. Daher wird ein Domain-Name in mehrere Teile untergliedert:

Schaller. Untergliederung einer URL (CC BY-NC-SA)

Die einzelnen Bestandteile der Domain-Bezeichnungen werden in den Domain-Namen in der Reihenfolge ansteigender Hierarchiestufen aufgeführt. Ganz am Ende des Namens steht die so genannte "top level domain". Dies ist die oberste Hierarchiestufe des DNS. Sie unterteilt das Web in thematisch ("com", "gov", "edu", "info", usw.) oder geografisch ("de", "fr", "at", "us", usw.) abgegrenzte Bereiche. Jede dieser Top-Level-Domains wird von einer bestimmten Organisation verwaltet, bei der alle Domains unterhalb der jeweiligen Top-Level-Domain angemeldet werden müssen. So wird z.B. die Top-Level-Domain "de" vom "DEutschen Network Information Center", kurz "DENIC" verwaltet. Diese Organisation sorgt z.B. auch dafür, dass jeder mögliche Domain-Name nur einmal existiert!

Wenn du z.B. die Domain "schule-bw.de" für dich registrieren lassen willst, dann musst du dich an einen "Internet-Service-Provider" (ISP) wenden, der die Registrierung dieser Domain für dich beim DENIC beantragt. Er informiert das DENIC darüber, unter welcher IP-Adresse diese Domain zu finden sein wird. Das DENIC wird seinerseits diese Information im Internet allgemein verfügbar machen, so dass deine Domain dann auch von einem beliebigen Rechner gefunden werden kann.

Die oben als Beispiel angeführte Domain "schule-bw.de" enthält nun ihrerseits wieder einzelne Unter-Domains (Subdomains), wie z.B. "og.schule-bw.de" für die Offenburger Schulen, "lbs.schule-bw.de" für den Landesbildungsserver und so weiter. Diese Unter-Domains sind ihrerseits wiederum weiter unterteilt: so enthält die Domain "og.schule-bw.de" unter anderem die Domains "oken.og.schule-bw.de" für das Oken Gymnasium in Offenburg und „gymett.og.schule-bw.de“ für das Gymnasium Ettenheim. Die folgende Grafik zeigt die Hierarchie des DNS am Beispiel des Domains-Namens des Oken Gymnasiums:

Schaller. Gliederung der Domain-Namen (CC BY-NC-SA)

Gewöhnlich wird dem so gebildeten Domain-Namen noch "www." vorangestellt, was den Server bezeichnet, der die Domain enthält. Diese Hierarchie bildet eine Baumstruktur.

Namensauflösung

Jede Domain ist auf einem eindeutig identifizierbaren Rechner gelagert, und Rechner werden im Internet eigentlich stets durch IP-Nummern adressiert. Woher weiß nun eigentlich ein Client, an welche IP-Adresse er seine Anforderung schicken muss? Wie erfährt er die IP-Adresse des Web-Servers, auf dem die gesuchte Domain lagert? Wie wird aus dem Namen der Domain die IP-Adresse des passenden Zielrechners abgeleitet?

Statt eines einzige Name Servers wie in den Anfangszeiten des Internets gibt es jetzt passend zur Benennung der Domains eine ganze Hierarchie von Name-Servern. Die oberste Instanz in dieser Hierarchie ist der so genannte "Root-Server". Dieser kennt für jede Top-Level-Domain einen zuständigen Name-Server. Jeder dieser Rechner kennt nun seinerseits die Name-Server für alle in dieser Top-Level-Domain registrierten Haupt-Domains (Second-Level Domains). Gibt es in einer Haupt-Domain weitere Unter-Domains, so sind weitere Name-Server möglich, die dann für die jeweiligen Unter-Domains zuständig sind. Mithin ergibt sich eine baumartige Struktur aus Name-Servern. Die folgende Abbildung zeigt einen kleinen Ausschnitt aus diesem Baum:

Schaller. System von DNS-Servern (CC BY-NC-SA)

Jeder Computer, der dieses Domain-Name-System verwenden möchte, muss einen beliebigen DNS-Server kennen. Die IP-Adresse dieses Servers muss in den Netzwerkeinstellungen eingetragen werden. Das DNS-Server-Programm läuft in der Regel auf einem Rechner im eigenen Netzwerk oder beim Internet Service Provider (ISP).

Will nun ein Client-Rechner wissen, welche IP-Adresse zur Domain "www.pqr.xyz" gehört, fragt er beim Name-Server nach, und dieser liefert ihm die gesuchte IP-Adresse zurück! Wenn der ISP-Name-Server die Antwort auf die Anfrage nicht selbst kennt, dann erfragt er die Adresse bei weiteren Nameservern. Das geht so lange weiter, bis ein Nameserver die richtige IP-Adresse zur gewünschten URL kennt. Diese Adresse liefert der Nameserver an den Client zurück.

Beispiel:

Ein Mitarbeiter der Firma Novell in den USA will sich über das Informationsangebot auf dem baden-württembergischen Landesbildungs-Server informieren. Dazu gibt er in seinem Browser die URL "http://www.lbs.bw.schule.de" ein. Das folgende Bild stellt im Einzelnen dar, was alles geschehen muss, damit die Eingangsseite des Landesbildungsservers auf dem Rechner in den USA erscheint.

Schaller. Namensauflösung (CC BY-NC-SA)

Im Einzelnen passiert also Folgendes:

  1. Der Rechner des Novell-Mitarbeiters kennt die IP-Adresse zu der eingegebenen URL "www.lbs.bw.schule.de" nicht. Also startet er eine entsprechende Anfrage an den DNS-Name-Server, dessen IP-Adresse in seinen Netzwerk-Einstellungen eingetragen ist. Novell betreibt einen eigenen Name-Server, nämlich "ns.novell.com".
  2. Der Name-Server "ns.novell.com" weiß nicht, auf welchem Rechner die Domain "www.lbs.bw.schule.de" lagert. Da die Domain nicht unterhalb der eigenen First-Level-Domain, nämlich "com", liegt, sondern unterhalb der First-Level-Domain "de", wendet sich der Novell-Name-Server an einen ihm bekannten Root-Server, in diesem Fall "www.umd.edu".
    Der Root-Server "www.umd.edu" weiß zwar die gesuchte IP-Adresse auch nicht, aber er kennt für jede mögliche Top-Level-Domain einen dafür zuständigen Name-Server; so weiß er auch, dass für "de" der Name-Server "dns.denic.de" mit der IP-Adresse 194.246.96.79 zuständig ist. Diese IP-Adresse liefert er an den anfragenden Novell-Name-Server zurück.
  3. Der Novell-Name-Server wendet sich nun an "dns.denic.de". Dieser Name-Server kennt seinerseits wieder Name-Server für alle Domains, die direkt unterhalb von "de" liegen, also z.B. "microsoft.de", "gkinf.de", "schule.de" usw. Also liefert er die Adresse des für "schule.de" zuständigen Servers (hier: "stuttgart.shuttle.de", IP-Adresse 194.95.249.252) an den anfragenden Name-Server zurück.
  4. Der Novell-Name-Server wendet sich jetzt mit seiner Anfrage an "stuttgart.shuttle.de". Dieser kennt Name-Server für alle Domains, die direkt unterhalb von "schule.de" liegen. So weiß er, dass für "bw.schule.de" der Name-Server "dns1.belwue.de" zuständig ist; folglich meldet er dessen IP-Adresse, nämlich 129.143.2.4, an den anfragenden Novell-Name-Server zurück.
  5. Schließlich startet der Novell-Server die nächste Anfrage, diesmal an "dns1.belwue.de". Und - man wagte schon kaum mehr dran zu glauben! - dieser Server kennt die IP-Adresse des gesuchten Servers "www.lbs.bw.schule.de", nämlich 129.143.194.171! Diese Adresse wird nun zurück an den fleißigen Novell-Name-Server geschickt.
  6. Der Novell-Name-Server kann nun die ursprüngliche Anfrage vom Rechner des Novell-Mitarbeiters beantworten: also schickt er die ermittelte IP-Adresse 129.143.194.171 an den anfragenden Rechner zurück.
  7. Der anfragende Rechner weiß nun, dass die Inhalte der Domain "www.lbs.bw.schule.de" unter der IP-Adresse 129.143.194.171 erreichbar sind. Also schickt er eine Anfrage mit dieser URL an diesen Rechner.
  8. Da die URL weder einen Pfad noch einen Dokumentnamen enthält, wird der Landes-Bildungs-Server die Standard-Eingangsseite "index.html" zurückliefern, die i. A. ein Haupt-Inhaltsverzeichnis enthält.

Der Client-Rechner bekommt von der ganzen Fragerei nicht viel mit. Er stellt nur an den eigenen DNS-Server eine Anfrage und erhält irgendwann eine Antwort zurück. Möglicherweise versteht man  jetzt aber besser, warum es gelegentlich etwas dauert, bis eine angeforderte Seite im Browser erscheint. Bei Google Chrome steht in dieser Zeit manchmal „Resolving host...“ in der Statuszeile. Angesichts der Vielzahl der benötigten Kommunikationsvorgänge sollte es vielmehr erstaunen, dass die angeforderten Seiten in der Regel ziemlich schnell geliefert werden. Dies wird unter anderem dadurch erreicht, dass sich jeder Name-Server die von ihm aufgelösten Adressen in einem Cache-Speicher für eine bestimmte Zeit "merkt". Wird dieselbe Domain dann nochmals angefordert, kennt der Name-Server den Zielrechner schon und muss die Namensauflösung nicht wieder vollständig durchführen (lassen).

Der nicht unbeträchtliche Aufwand für dieses "Domain Name System" macht sich bezahlt: Jeder Client muss nur einen Name-Server kennen und bekommt trotzdem Zugang zu jeder Domain weltweit. Und dies wird ohne eine zentrale große Datenbank erreicht, deren Ausschaltung das Web lahm legen würde! Die Daten sind mehrfach redundant und dezentral über das Netz verteilt; trotzdem ist für eine hinreichende Synchronisation der Daten gesorgt, weil die Name-Server ständig untereinander Daten austauschen. Das "DNS" hat sich in den letzten Jahren als stabil, zuverlässig und leistungsfähig erwiesen. Selbst der Ausfall eines Root-Servers ist keine wesentliche Gefahr für das WWW: Derzeit (Mitte 2010) gibt es 13 funktionsidentische Root-Server und jeder dieser Root-Server besteht aus mehreren über die Welt verteilten Rechnern, die alle unter der gleichen IP-Adresse erreichbar sind.

Hierarchisches DNS in Filius

Dein DNS-Server kennt die Namen für die IP-Adressen in deinem Netz. Wenn Du dich nun aber mit den Webservern deiner Mitschüler und Mitschülerinnen verbinden willst, müsste dein DNS-Server ja auch alle Namen und die zugehörigen IP-Adressen für deren Webserver kennen, d.h. diese müssten alle in deinem DNS-Server eingetragen werden. Dies ist im Internet mit Milliarden von Adressen sicher nicht praktikabel.

In Filius sollen nun mehrere Netze miteinander verbunden werden. Auf einem PC wird der Provider simuliert, der die Schnittstelle für alle Netz darstellt. Bei ihm wird auch der root-DNS-Server stehen. Jeder von euch betreibt jeweils einen Domainserver für eine Top-Level-Domain. Nur diese darfst du verwenden.

Dein DNS-Server muss neben den eigenen Domains außerdem den Root-Server kennen. Dazu muss man der IP-Adresse des Root-DNS-Server einen Namen zuordnen (z.B. Root-DNS) und dem DNS-Server mitteilen, dass für alle Adressen, die er selbst nicht kennt, der Root-DNS-Server zuständig ist. Dazu muss im Reiter Nameserver (NS) unter der Domain . (ein einfacher Punkt steht für alle beliebigen Namen) der Name, den die IP-Adresse des Root-DNS-Server bekommen hat, eintragen werden.

Auf dem lokalen DNS-Server sollte es so aussehen:

Schaller. Lokaler DNS-Server in Filius (CC BY-NC-SA)
Schaller. Lokaler DNS-Server in Filius (CC BY-NC-SA)

Auf dem Root-DNS-Server selbst muss umgekehrt der IP-Adresse des lokalen DNS-Servers ein Name zugewiesen werden (z.B. DNS-DE) und dann alle de-Adresse mit diesem Nameserver verknüpft werden.

Auf dem Root-DNS-Server sollte es so aussehen:

Schaller. Root-DNS-Server in Filius (CC BY-NC-SA)
Schaller. Root-DNS in Filius (CC BY-NC-SA)

Aufgaben

Filius-Aufgabe

Lade zuerst die Vorlage für 06_P6_Aufgabe1.fls.

  1. Richte auf dem Rechner mit der Bezeichnung „DNS“ im Aktionsmodus einen DNS-Server ein und trage die IP-Adresse dieses DNS-Servers im Entwurfsmodus bei der Netzwerkkonfiguration von allen Rechnern ein.
  2. Erfinde jeweils eine URL für die zwei Webserver und trage die Zuordnungen (wieder im Aktionsmodus ) im DNS-Server ein. Starte den DNS-Server.
  3. Teste die Einstellungen, indem du im Terminalfenster eines beliebigen Computers versuchst, die IP-Adresse zu den von dir gewählten Namen mit dem host-Befehl zu ermitteln.
  4. Teste die Einstellungen, indem du im Web-Browser als URL die von dir gewählten Namen eingibst. Es sollte jetzt egal sein, ob der Web-Browser direkt mit der IP-Adresse oder mit dem Namen angesprochen wird.
  5. Beobachte den Datenverkehr im Netzwerk. Welchen Unterschied macht es, wenn statt der IP-Adresse der Name des Web-Servers eingegeben wird?

Expertenaufgabe

Bildet eine Gruppe von maximal 9 Personen. Einigt euch darauf, wer welche Top-Level-Domain erhält. Jeder lädt eine der folgenden Dateien:

Vorlage für Person 1
Vorlage für Person 2
Vorlage für Person 3
Vorlage für Person 4
Vorlage für Person 5
Vorlage für Person 6
Vorlage für Person 7
Vorlage für Person 8
Vorlage für Person 9

Einer von euch (oder euer Lehrer) lädt außerdem die Datei Vorlage für den Provider. Dieser startet vorab die Simulation des Providers. Findet mit ipconfig in einem cmd-Fenster heraus, welche IP-Adresse der "echte" Rechner des Providers hat. Danach macht jeder von euch folgende Schritte:

  1. Trage beim Modem die IP-Adresse des Provider-Rechners ein und verbinde dich mit ihm.
    ACHTUNG: Wenn Du die Verbindung trennst, muss die Verbindungsannahme zuerst wieder auf dem Lehrer-PC gestartet werden, bevor Du dich erneut verbinden kannst.
  2. Richte auf dem PC „DNS-Server“ einen DNS-Server ein – vergib für deinen Webserver eine von dir gewählte Domain aus dem Bereich deiner Top-Level-Domain. Teste, dass diese in einem Web-Browser aufgerufen werden kann.
  3. Der Root-DNS-Server hat die IP-Adresse 1.1.1.4. Richte deinen DNS-Server so ein, dass er bei allen Adressen, die er nicht selbst kennt, beim Root-DNS nachfragt.
  4. Trage beim Root-DNS deinen Server als zuständig für deine Top-Level-Domain ein.
  5. Teste zunächst wieder mit dem host-Befehl, ob der Domain-Name deines Web-Servers aufgelöst werden kann. Teste dann einen Domain-Namen eines Mitschülers. Teste abschließend, ob Du mit einem Browser vom Laptop aus mit dem Domain-Namen deinen Webserver bzw. die deiner Mitschüler ansprechen kannst.
  6. Wenn du den Texteditor installierst, kannst du die Webseite deines Webservers (index.html) verändern. So erkennen deine Mitschüler deine Webseite. Verlinke deine Seite mit der Webseite eines Mitschülers.

Vergleiche für die Fehlersuche in Filius:
Fehlersuche in Filius - Stimmt die Netzwerkkonfiguration / Ist jeder Rechner erreichbar?   Kommandos in der Befehlszeile

Bearbeite: Übungen Domain-Name-System