Domain Name System

Aus Mikiwiki
(Weitergeleitet von DNS)
Zur Navigation springen Zur Suche springen

Das Domain Name System / DNS (auch: Domain Name Service) ist eine riesengrosse, weltweit verteilte Datenbank, die Rechnernamen und -adressen kombiniert. Gruppenverantwortliche verwalten dabei Rechner-Kollektive oder Domains, die ihrerseits unterteilt sind und dabei sogenannte Subdomains bilden. Die Hostnamen unterhalb des letzten Knotens müssen dabei eindeutig sein.

Im Unterschied zu Pfadnamen, dieit dem Wurzelknoten beginnen (z. B. "/usr/local/bin"), beginnen Internetnamen genau andersherum (z. B. "www.chips.ibm.com"). Den Schrägstrich als Verzeichnistrenner vertreten hier Punkte. Der Wurzelknoten (die sogenannte Root-Domain) hat als Namen eine leere Zeichenkette. Deshalb endet der vollqualifizierte Domainname (FQDN) mit einem Punkt, dem letzten Trenner, auf den der Name der Wurzel folgt, der sich als leere Zeichenkette allerdings nirgends zeigt.

Die Liste der Namen und der zugehörigen Adressen jeder Domäne verwaltet ein Nameserver. Die Verantwortung für die Subdomänen gibt er an Kollegen ab. Falls die unterste Ebene noch weiter unter mehrere Nameserver aufgeteilt werden, so werden deren verantwortungsbereiche Zonen genannt. Die Gegenspieler der Nameserver sind die Clients, die in diesem Zusammenhang auch Resolver genannt werden.

Technische Details: RFC 1033, RFC 1034, RFC 1035

whois ist ein Client für den whois-Verzeichnisdienst.

Resolver

Die Schnittstelle zu dieser Datenbank - auch Resolver genannt - bilden Funktionen der GNU-C-Library Glibc. Mit ihren Begleitfunktionen wird diese Schnittstelle allerdings zunehmend durch eine flexiblere Version ersetzt. Die meisten Skriptsprachen (z. B. Perl) enthalten ebenfalls entsprechende Funktionen. Die neueren Funktionsvarianten sind noch nicht in jeder Implementation verfügbar - bei Perl stecken sie in einem Modul für die Kompatibilität mit IPV6. Auf Shell-Evene stehen fertige Tools zur Verfügung, die einzelne Resolver-Funktionen anbieten.

Glibc neuere Versionen Perl Shell-Ebene
Übersetzung Hostname in IP-Adresse gethostbyname getaddrinfo gethostbyname() dig
host
nslookup
whois
Übersetzung IP-Adresse in Hostname gethostbyaddr getnameinfo gethostbyaddr()

Der Resolver kann verschiedene Datenquellen anzapfen.

  • Die einfachste Datenquelle ist die Datei "/etc/hosts". Sie enthält lediglich eine Auflistung von numerischen Adressen mit den zugeordenten Namen. Jeder Adresse können ein oder mehrere Namen entsprechen. Ebenfalls in dieser Datei definiert wird der Eintrag 127.0.0.1 localhost , der auch für die lokale Interprozess-Kommunikation benötigt wird. Zusätzlich enthält diese Datei auch wichtige IPv6-Adressen.
  • Ist ein Hostname in der Datei "/etc/hosts" nicht zu finden, so fragt der Resolver bei einem netzwerkbasierten System an, dem Domain Name System. In den meisten Fällen läuft ein solcher Nameserver (die verbreitetste Implementierung ist BIND) nicht lokal, sondern auf einem Host des Internet. Die passenden Nameserver-Adressen dafür findet der Resolver in der Datei "/etc/resolv.conf", in der sie entweder der Anwender oder ein Dienst (z. B. der DHCP-Client) eingetragen hat. Normalerweise sind drei Nameserver-Einträge erlaubt.

Die Resolver-Funktionen lesen die angelegten Konfigurationsdateien und stellen fest, welche Datenbank zur Verfügung stehen, in welcher Reihenfolge sie zu befragen sind und welche anderen Details eingestellt wurden.

  • Libc (ältere Standardbibliothek von Linux) benutzt "/etc/hosts.conf" als Hauptkonfigurationsdatei. Die Datei entstammt noch der Zeit vor Glibc 2.x, entspricht also Libc.so.5 und früher. Ein Beispiel könnte wie folgt aussehen, wobei "hosts" für das lokale Adressenverzeichnis in "/etc/hosts" und "bind" für den Netzwerkzugriff auf das DNS steht. Der Eintrag "multi on" bewirkt, dass in "/etc/hosts" Mehrfachnennungen eines Namens erlaubt sind. Der Eintrag "nospoof on" bewirkt einen Schutz gegen Spoofing-Versuche.
order hosts,bind
multi on
nospoof on
  • Glibc (Version 2 der GNU-Standardbibliothek) benutzt "/etc/nsswitch.conf". Diese Datei konfiguriert den von Solaris 2 übernommenen Name Service Switch, der in neueren Versionen der Glibc zum Einsatz kommt. Die Datei enthält eine Auflistung von Diensten und Datenquellen sowie jeweils eine Beschreibung des gewünschten Vorgehens. Für die Auflösung von Hostamen ist der Dienst "hosts" relevant, wobei mit der Strategie "files dns" festgelegt wird, dass der Resolver zuerst in der Datei "/etc/hosts" nachsieht und erst danach eine Anfrage ans DNS stellt.
hosts: files dns

Es gibt noch weitere Konfigurationsdateien. Sendmail ist beispielsweise eines der Programme mit eigener Resolver-Bibliothek, die zugehörige private Konfigurationsdatei heisst "etc/mail/service.switch". Sie kümmert sich nur um die Dienste "passwd", "hosts" und "aliases", wobei für Sendmail kein Doppelpunkt nach dem Dienstnamen steht. Ansonsten funktioniert die Datei analog zu "/etc/nsswitch.conf".

Werden die Einträge "bind" aus "/etc/host.conf" und "dns" aus "/etc/nsswitch.conf" gelöscht, so werden Netzwerkzugriffe des Glibc-Resolvers unterbunden.

FAQ

Anzeige des aktuellen DNS-Servers

$ nm-tool | tail -n 8
  IPv4 Settings:
    Address:         192.168.1.105
    Prefix:          24 (255.255.255.0)
    Gateway:         192.168.1.254

    DNS:             192.168.1.254

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger Domain Name Systemwbm Enzyklopädischer Artikel
Linux Magazin ger Konfiguration und Betrieb von DNS-Servernwbm
DNSstuff eng DNSstuffwbm
RIPE eng RIPEwbm