======DNS - Das Domain Name System====== =====- Einleitung===== Theoretisch kann jeder Computer in einem Netzwerk über seine IP-Adresse erreicht werden. Doch diese sind für den Menschen schwer zu merken. Z. B. ist IP-Adresse des //Deutschen Bundestags// 217.79.215.140, mit dieser Zahlenkombination kann man aber den Bundestag nicht assoziieren, eine Adresse wie www.bundestag.de ist wesentlich einfacher zu merken. Ebenfalls ist eine Mail-Adresse in der Form <larry@wall.org> einfacher zu merken als larry@71.139.5.245.\\ IP-Adressen von Computern können sich ändern, man müsste sich dann auch ständig um die neue IP-Adresse kümmern. Nutzt man Adressen in Textform, muss es aber irgendeinen "Vermittler" geben, der die Adresse in Textform in die zugehörige IP-Adresse übersetzt, da der Computer eben nur mit diesen Zahlen umgehen kann. ====- Lösung über eine Datei==== Am Anfang des Internets (s. [[wpde>Arpanet]]) konnte man dieses Problem noch mit einer Datei lösen, in der für jeden Rechner der Name und die zugehörige IP-Adresse stand. Diese Datei musste dann regelmäßig erneuert werden. In kleineren Netzwerken kann man dies immer noch so lösen, die zugehörige Datei ist unter Linux-Betriebssystemen ''/etc/hosts'' unter Windows-Betriebssystemen ''C:\Windows\system32\drivers\etc\host''. Eine solche Datei kann z. B. so aussehen: <file plain /etc/hosts> 127.0.0.1 localhost 127.0.1.1 halodri 10.0.2.51 archimedes 10.0.2.99 platon sokrates </file> Die beiden ersten Zeilen beschreiben den Rechner, auf dem diese Datei liegt. Dieser Rechner ist unter dem Namen //halodri// zu erreichen, generell ist jeder Rechner unter dem Namen //localhost// zu erreichen. Diese beiden Zeilen werden automatisch bei der Installation eingetragen, bzw. wird die zweite Zeile geändert, wenn man den Computernamen ändert. In der dritten Zeile wird dem Computer mitgeteilt, dass der Computer //archimedes// unter der IP-Adresse 10.0.2.51 zu erreichen ist. In der vierten Zeile wird dem Computer mitgeteilt, dass der Rechner //platon// unter der IP-Adresse 10.0.2.99 zu erreichen ist. Zusätzlich wurde noch ein //Alias// für //platon// festgelegt, der Rechner ist also zusätzlich noch unter dem Namen //sokrates// zu erreichen. Dieses macht durchaus Sinn, z. B. ist die Zeitung "Die Zeit" unter der Adresse [[http://www.zeit.de|zeit.de]] und [[http://www.diezeit.de|diezeit.de]] zu erreichen. <hidden Übung>Öffne die Datei ''/etc/hosts'' mit root-Rechten in einem Texteditor. Trage einen weiteren Rechner mit der zugehörigen IP-Adresse ein. Führe dann auf der Konsole <code terminal>ping <hostname> </code> aus. Hierbei wird die IP-Adresse des Rechnernamens angezeigt.</hidden> =====- Das Domain Name System (DNS)===== Man erkennt, dass diese Methode aus den Anfangszeiten schnell ihre Brauchbarkeit verliert. Mittlerweile sind Millionen Computer über das Internet miteinander verbunden. Ein Datei nach dem Muster von oben hätte eine Größe von ein paar Gigabyte. Außerdem muss die Vergabe einheitlich geregelt werden, ansonsten würde es ständig zu Konflikten kommen. Aus diesem Grund wurde das [[wpde>Domain Name System|Domain Name System (DNS)]] entwickelt. Kurz erklärt funktioniert es so: Ein Rechner der einen Namen in eine IP-Adresse auflösen möchte sendet eine Anfrage an eine DNS-Server. Diese schlägt in seiner Datenbank nach und schickt die zugehörige IP-Adresse zurück. Damit ein Computer weiß, an welchen %%DNS%%-Server er sich wenden muss, wird dessen IP-Adresse hinterlegt. ====- DNS-Server eintragen==== Normaler Weise ist die IP-Adresse des %%DNS%%-Servers in dem DSL-Router des jeweiligen DSL-Anbieters hinterlegt. Der DSL-Router bezieht die Adresse des %%DNS%%-Servers bei der Installation automatisch. Ein Computer in einem lokalen Netzwerk hat dann als %%DNS%%-Server die Adresse des DSL-Routers eingetragen. Man kann aber auch einen Computer im lokalen Netz so konfigurieren, dass er einen "echten" %%DNS%%-Server im Internet benutzt. Unter der Adresse www.stanar.de findet man eine Übersicht über verschiedene %%DNS%%-Server. <hidden Übung> Öffne die Konfigurationsseite deines DSL-Routers und finde den eingetragene %%DNS%%-Server. </hidden> Normalerweise bekommt einer Rechner über DHCP seinen %%DNS%%-Server mitgeteilt. Man kann den %%DNS%%-Server aber auch direkt eintragen. Diese geht entweder über die Datei ''/etc/resolv.conf'' in die man nach diesem Format einträge vornehmen kann: <file - plain /etc/resolv.conf>nameserver 10.0.2.1</file> Man kann auch mehrere %%DNS%%-Server eintragen. Wird versucht den zweiten zu kontaktieren, usw.. Alternativ kann man unter Ubuntu auch über den Dialog "Verbindungen bearbeiten" den %%DNS%%-Server für eine Netzwerkverbindung eintragen. Die folgende Abbildung zeigt das Vorgehen. [{{ :netzwerk:dns:dns_manuell_eintragen.png?direct&700 |Links: Dialog zum Ändern der Netzwerkeinstellungen öffnen. Rechts: Eintragen des %%DNS%%-Servers}}] Auf der Konsole kann man sich mit <code terminal>dig www.wikipedia.de</code> weitere Informationen über die %%DNS%%-Anfrage anzeigen lassen kann. <hidden Übung> Führe den oben beschriebenen Befehl ''dig ...'' auf der Konsole für verschiedene Seiten aus und analysiere die Ausgabe. </hidden> ====- Domainen und der DNS-Namensraum==== Bis jetzt wurden nur der Name eines Computers verwendet. Dieses Vorgehen würde bald an seine Grenzen stoßen. Z. B. betreibt google seinen Dienst u.a. in Deutschland, dort ist er unter der IP-Adresse 173.194.35.159 zu erreichen, und in den USA, dort unter der IP-Adresse 173.194.35.147. Könnte man nur den Hostnamen //google// angeben, könnte man immer nur eine IP-Adresse erreichen. Deswegen wurden sog. //Domains// eingeführt. Das Prinzip funktioniert analog zu dem einer Postadresse: > Vor ein paar 100 Jahren war es ausreichend, dass eine Person nur einen Vornamen besitzt, da er nur einmal in seinem Umkreis vorkam. Mit Anwachsen der gesellschaftlichen Strukturen kam es aber öfter vor, dass es eine Person z. B. mit dem Namen Hans gab. Deswegen haben sich Nachnamen etabliert, so dass der Name "Hans Schmidt" eindeutig eine Person beschrieb. Dieser Nachname entspricht in der Netzwerktechnik einer Domain. Mit dem Beispiel oben gibt es z. B. nun die Adresse google.de und google.us. In beiden Fällen ist der Hostname gleich, die Domain (der Nachname) ist aber anders. >Im Beispiel mit "Hans Schmidt" reichte mit Einführung des Postbetriebs irgendwann die Bezeichnung mit Vornamen und Nachnamen nicht mehr aus, da es z. B. einen Hans Schmidt in Magdeburg und einen in Bielefeld geben konnte. In größeren Städten kann es auch vorkommen, dass es mehrere Hans Schmidt gibt, die aber in unterschiedlichen Straßen wohnen. Auch kann es sein, dass es einen Hans Schmidt in Österreich und einen in Deutschland geben kann, also gehört zu einer volständigen Adresse der Vor- und Zuname, die Straße, die Stadt und das Land. [{{ :netzwerk:dns:dns_domainaufbau.png?direct&200|Aufbau eines FQDN (Fully Qualified Domain Name)}}]In dieser Form ist auch das Internet aufgeteilt. So kann man z. B. über maps.google.de den deutschen Kartendienst von google aufrufen. Dabei beschreibt ".de" die sog. //Top-Level-Domain//, "google" die //Domain// und "maps" die //Subdomain//. Man kann dieses Vorgehen weiter fortführen und weitere Subdomains hinzufügen. Mittleerweile gibt es ca. 250 Top-Level-Domains im Internet. Diese unterteilen sich in zwei Bereiche: - Länder (//Countries//): .de, .fr, .us, .lu, .nl, ... - Allgemein (//Generic//): .com (commercial), .org (organisation), .edu (education), .mil (US-Militär), ... Die Vergabe der Top-level-Domains übernimmt die [[wpde>ICANN|ICANN (Internet Corporation for Assigned Names and Numbers)]]. Die Vergabe der darunter liegenden Domains übernimmt dann jeweils eine andere Organisation. Die Vergabe der Domains unterhalb der Top-Level-Domain .de übernimmt z. B. die [[wpde>DENIC|DENIC (Deutsches Network Information Center)]]. Hat man sich bei dieser (oder über einen Internetdienstanbieter) z. B. die Domain //meineWebseite.de// reserviert, so kann man selbst weitere Subdomains anlegen. Aufgrund dieses Vergabeverfahrens kann es zu keinem Namenskonflikt kommen. Die folgende Abbildung zeigt den Aufbau des Domain-Systems nochmal im Überblick: [{{ :netzwerk:dns:dns_aufbau.png?direct&1000 |Aufbau des DNS (Domain Name System)}}] ====- Domains in lokalen Netzen==== Auch im lokalen Netzwerken ist es sinnvoll Domains anzulegen: - In einer Schule gibt es einen Informatikraum und ein Freiarbeitsraum mit Computern. In diesem Fall kann man eine Domain //.intern// als "Top-Level-Domain" der Schule anlegen. Darunter die Domains //.info// und //.frei// um die Computer in den beiden Räumen zu unterscheiden. Hat dann ein Computer im Informatikraum den Namen //foo1//, so kann man ihn unter dem absoluten Namen //foo1.info.intern// ansprechen. Alle Rechner des Informatikraums sind unter der Domain //info.intern// vereinigt. - Handelt es sich um eine Schule, in der ein Berufskollege und ein Gymnasium untergebracht sind, die sich ein gemeinsames Netzwerk teilen, so könnte man noch die zusätzlichen Domains //.gym// und //.bk// einfügen. Der Rechner //foo1// im Informatikraum hat dann den FQDN //foo1.info.gym.intern.// - In einem kleinen Netzwerk mit nur ein paar wenigen Computern unter denen es keine weiteren Unterscheidung geben soll, würde man nur die Domain .intern verwenden. Ein Rechner hat dann den FQDN foo1.intern. Will man von einem Rechner aus einen anderen Rechner ansprechen und verwendet nur den Hostnamen, wird dieser nicht gefunden. Im Beispiel 3 von oben wird versucht mit <code terminal>ping foo1</code> den Computer //foo1// anzupingen. Dieses schlägt fehl, denn der Rechner ist nur unter dem Namen //foo1.intern// zu erreichen. Man muss also <code terminal>ping foo1.intern</code> ausführen, um diesen Rechner zu erreichen. Man kann aber eine Netzwerkverbindung so konfigurieren, dass er automatisch eine Suchdomain anhängt, wenn der Hostname nicht auffindbar ist. In der Abbildung oben, die das manuelle Eintragen den %%DNS%%-Servers zeigt, muss hierzu in das Feld "Suchdomänen" die Domain "intern" eingetragen werden. =====- Einen DNS-Server im lokalen Netz einrichten===== Um die oben beschriebene Einordnung der Computer in unterschiedliche Domains zu erreichen, muss man einen DNS-Server installieren. Ein DNS-Server ist ein Programm, dass auf irgendeinem Rechner im Netzwerk (meistens aber dem Server) läuft. Es lauscht auf dem Port 53 nach Anfragen, und gibt zu angefragten Hostnames die zugehörige IP-Adresse zurück. Unter Linux gibt es zwei Programm die diese Aufgabe übernehmen. * **BIND**: Dies ist der %%DNS%%-Server der von den meisten Anbietern eines im Internet verfügbaren %%DNS%%-Servers benutzt wird. Er ist für große Netze ausgelegt. Das zugehörige Paket heißt **bind9**. Der Artikel [[uu>DNS-Server_Bind|DNS-Server Bind]] erläutert die Installation. * **Dnsmasq**: Ein einfach zu konfigurierender %%DNS%%-Server für mittlere und kleine Netze. Der Artikel [[uu>Dnsmasq|Dnsmasq]] beschreibt, wie man diesen Server einrichtetet. Das zugehörige Pakte heißt **dnsmasq**. Zentyal nutzt BIND als %%DNS%%-Server. Der Artikel [[zentyal:infrastruktur:dns|Zentyal:Infrastruktur:DNS]] beschreibt, wie man ihn einrichtet.

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
12᠎ -4​ = ?
 
 
netzwerk/dns.txt · Zuletzt geändert: 2013/03/21 08:30 von admin