Domain Name Service - Der Client

Übersicht Weiter

Vermutlich haben Sie auf die Dienste des Domain Name Service bereits zugegriffen, ohne seine Existenz wahrzunehmen. Surfen Sie im Internet? Dann verwenden Sie sicher Angaben wie www.linuxfibel.de? Aber hinter dieser Angabe verbirgt sich nichts anderes als ein symbolischer Name für eine IP-Adresse. Und wer ermittelt die Adresse zum Namen? Der Domain Name Service.

Und elektronische Post ist ohne den DNS undenkbar. Denn nur ein DNS-Server weiß, wer der zuständige Mailserver für einen Empfänger ist.

Der Domain Name Service arbeitet transparent. Sie als Anwender werden von seiner Existenz, ist er erst einmal korrekt administriert, nichts bemerken, es sei denn, er verweigert einmal seinen Dienst... Einen Rechner zu einem DNS-Client zu ernennen, ist unter Linux ein einfaches Unterfangen, da die Standard-C-Bibliothek, ohne die kein Linuxsystem laufen könnte, alle notwendigen Routinen in Form des so genannten Resolvers bereits in sich birgt. Wenige Handgriffe genügen und der Resolver wird die Funktionalität des DNS gewährleisten.

Neben der Anpassung des Resolvers werden wir Ihnen die wichtigsten Werkzeuge rund um den Domain Name Service, die Bind-Utils, vorstellen. DNS arbeitet auch ohne sie, aber hin und wieder möchten Sie vielleicht doch konkrete Informationen zu einem gegebenen Rechnernamen oder einer IP-Adresse erfahren.

Der Vollständigkeit halber muss erwähnt werden, dass auf die Konfiguration eines DNS-Clients auch komplett verzichtet werden kann, falls der Rechner mindestens als so genannter Caching-Only-DNS-Server konfiguriert wird. Ein solcher recherchiert jeden Namen nur einmalig und hält die Informationen in einem Cache (»Zwischenspeicher«) vor. Wie lange die dortigen Daten ihre Gültigkeit behalten, ist konfigurierbar. Ein solches Vorgehen ist i.d.R. effizienter als ein DNS-Client, der zu jeder Namensauflösung einen externen Server kontaktiert. Der lokale Nameserver wird bspw. verwendet, wenn die Konfigurationsdatei des Resolvers fehlt oder keinen Nameserver-Eintrag enthält. Interessieren Sie sich für eine derartige Konfiguration, so finden Sie im Abschnitt zum DNS-Server die notwendigen Hinweise.

Der Resolver Zurück Anfang Weiter

Beim Resolver handelt es sich nicht um einen eigenen Prozess sondern um eine Bibliothek von Routinen, die von Prozessen der Netzwerkprogramme gerufen werden. Die relevante Konfigurationsdatei für den Resolver selbst ist /etc/resolv.conf.

Bezieht der Client die Daten seiner Netzwerkkonfiguration inklusive der Nameserver-Optionen via DHCP oder über das Point-To-Point-Protocol (dies ist bei Verbindungen über ein Modem der Fall), so wird die Datei »resolv.conf« i.d.R. vom entsprechenden Client-Prozess selbst erzeugt. Sie sind damit aus dem Schneider und müssen gar nichts konfigurieren (außer die Einwahl via PPP an sich bzw. den DCHP-Client).

Starten wir wiederum mit einer einfachen Beispielkonfiguration einer Datei »resolv.conf«:

# /etc/resolv.conf

search saxsys.de linuxfibel.de galaxis.de

nameserver 134.109.192.18
nameserver 192.168.85.1

search

Aus reiner Bequemlichkeit bevorzugt der Anwender oft die Angabe eines Rechnernamens ohne angehängten Domainnamen (»erde« anstatt »erde.galaxis.de«). Ein solcher »Kurzname« ist im DNS-Namensraum kaum eindeutig, weshalb der Resolver versucht, diesen zu einem vollständigen Namen zu expandieren. Hierzu erweitert er jeden Rechnernamen, der keinen Punkt enthält, der Reihe nach um die unter search konfigurierten Suffixe. Kann ein resultierender Rechnername aufgelöst werden, endet die Suche erfolgreich. In der Beispielkonfiguration würde ein Rechnername »erde« zuerst zu »erde.saxsys.de«, dann zu »erde.linuxfibel.de« und zuletzt zu »erde.galaxis.de« erweitert werden. Erst letzterer Rechnername ergibt einen gültigen, d.h. im DNS-Namensraum existenten, Namen. Beachten Sie, dass die search-Liste auf maximal 6 Domains mit zusammen 256 Zeichen beschränkt ist. Der search-Mechanismus arbeitet vor allem bei Zugriff auf entfernte DNS-Server extrem langsam. Eine gesetzte Umgebungsvariable LOCALDOMAIN, die eine kommaseparierte Liste von Domainnamen enthält, überschreibt die Angaben einer search-Liste. Vergleichen Sie auch die Anmerkungen zum unten beschriebenem domain-Eintrag.

nameserver

Für jeden zu befragenden Nameserver bedarf es eines eigenen nameserver-Eintrags in der Datei »/etc/resolv.conf«. Entsprechend der Reihenfolge der Einträge werden die Nameserver nacheinander kontaktiert, bis der erste erfolgreich eine Anfrage beantwortet. In den gängigen Implementierungen sind maximal drei Nameserver-Angaben zulässig. Fehlt ein nameserver-Eintrag, so wird die Anfrage an den lokalen Rechner gerichtet. Dieser muss zumindest als Caching-only-Nameserver konfiguriert sein (sonst schlägt jede Anfrage fehl).

Die beiden »gängigen« Einträge der Datei »/etc/resolv.conf« sind damit benannt; die weiteren Möglichkeiten beschreibt folgende Zusammenstellung:

domain

domain besitzt eine ähnliche Aufgabe wie search. Tatsächlich sollten nicht beide Einträge in einer »/etc/resolv.conf« Verwendung finden. Ist dem dennoch so, gilt der zuletzt gefundene Eintrag aus der Datei.
Im Unterschied zu search enthält domain nur den Namen der lokalen Domain. Der Resolver wird jeden Rechnernamen, der keinen Punkt enthält, um diesen Domainnamen erweitern. Fehlen sowohl ein domain- als auch ein search-Eintrag, so wird der durch gethostbyname() gelieferte Name verwendet.

sortlist

Verfügt ein Rechner über mehrere IP-Adressen, so kann eine Anfrage beim Resolver zu einer Liste von mehreren Adressen führen, deren interne Reihenfolge unspezifiziert ist. Um die Bevorzugung bestimmter Adressen zu erzwingen, können im sortlist-Eintrag die Adressen der Netzwerke angegeben werden, aus deren Bereich Adressen zuvorderst in der Ergebnisliste zu platzieren sind.
Betrachten Sie als Beispiel ein umfangreiches lokales Netz, in dem mehrere Rechner über Schnittstellen zu anderen Netzen verfügen. Hier wäre es sicher effizient, wenn die Suche nach Adressen der lokalen Rechner die »interne« Adresse liefern würde, um umfangreiches »Routen« zu »äußeren« Adressen zu unterbinden.

options

Derzeit kann das Verhalten des Resolvers über zwei Optionen beeinflusst werden.
debug aktiviert erweiterte Statusmeldungen des Resolvers, die eventuell zur Fehlersuche nützlich sein können. Mit ndots:n wird die Regel manipuliert, wie viele Punkte ein Rechnernamen enthalten muss, um das Anfügen der Standarddomain zu unterbinden. Die Voreinstellung lautet »ndots:1«, was letztlich dazu führt, dass die Standarddomain einzig angefügt wird, wenn der Rechnername keinen Punkt enthält oder - anders ausgedrückt - enthält der Rechnername mindestens einen Punkt, so wird er nicht um die Standarddomain erweitert.

Und nochmals möchten wir unterstreichen, dass eine nicht existente oder eine leere Datei »resolv.conf« dazu führt, dass implizit als Nameserver der lokale Rechner angenommen wird und als Standarddomain die lokale Domain (die hoffentlich gethostbyname() liefert). Diese Konfiguration entspricht genau der client-seitigen Konfiguration eines Caching-Only-Nameservers.

Nslookup Zurück Anfang Weiter

Nslookup ist traditioneller Bestandteil der BIND-Software und dient (einzig) als Debugging-Werkzeug bei der Fehlersuche. Es erlaubt die direkte Abfrage eines Nameservers und Zugriff auf nahezu jede Information. Ab BIND Version 9 ist Nslookup nur noch aus Kompatibilitätsgründen enthalten, da dessen Funktionalität komplett vom neueren dig übernommen wurde.

Kommandozeilenmodus

Im Kommandozeilenmodus wird nslookup mit dem aufzulösenden Rechnernamen aufgerufen:

user@sonne> nslookup www.linuxfibel.de

Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing.

Server:              10.0.0.2
Address:             10.0.0.2 # 53
www.linuxfibel.de    canonical name = www.fibel.de.
www.fibel.de         canonical name = meine.linux.fibel.de.

Name:         meine.linux.fibel.de.
Address:      194.180.239.13

Bei erfolgreicher Recherche antwortet nslookup mit Namen und Adresse des antwortenden Servers, der die Anfrage auflöste, und mit der gesuchten Adresse (oder mehrere Adressen, falls der Rechner über mehr als eine IP verfügt).

Zum »reverse lookup« rufen Sie das Kommando einfach mit der zu recherchierenden IP-Adresse auf.

Zur Unterdrückung der Warnung ob der »Veralterung« des Werkzeugs, können Sie die Option -sil bemühen.

Seine Stärken spielt nslookup allerdings erst im interaktiven Modus aus. Die dort verfügbaren Modifikatoren stehen zwar ebenso im Kommandozeilenmodus zur Verfügung (bspw. »nslookup type=mx www.google.de«), jedoch ist dieses Verfahren höchst ungeöhnlich, weshalb wir auf die Modifizierer erst im folgenden Abschnitt eingehen.

Interaktiver Modus

Den interaktiven Modus von nslookup erreichen Sie durch bloße Eingabe des Kommandos ohne jegliche Optionen. Beenden lässt sich das Programm durch Eingabe von exit oder mittels der Tastenkombination [Ctrl][D].

Um das im Kommandozeilenmodus angeführte Beispiel interaktiv nachzuvollziehen, sind folgende Eingaben erforderlich:

user@sonne> nslookup
Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing.

Default Server:              10.0.0.2
Address:             10.0.0.2 # 53

> www.linuxfibel.de
Server:              10.0.0.2
Address:             10.0.0.2 # 53

www.linuxfibel.de    canonical name = www.fibel.de.
www.fibel.de         canonical name = meine.linux.fibel.de.

Name:         meine.linux.fibel.de.
Address:      194.180.239.13

> exit

Dig Zurück Anfang Weiter

user@sonne> dig www.linuxfibel.de

; <<>> DiG 9.1.3 <<>> www.linuxfibel.de
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13063
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;www.linuxfibel.de.             IN   A

;; ANSWER SECTION:
www.linuxfibel.de.      53411   IN   CNAME   www.fibel.de.
www.fibel.de.           53411   IN   CNAME   meine.linux.fibel.de.
meine.linux.fibel.de.   53411   IN   A       184.180.239.13

;; AUTHORITY SECTION:
linuxfibel.de.          53411   IN   NS      ns.dns-dsi.de.
linuxfibel.de.          53411   IN   NS      ns2.dsi.net.
linuxfibel.de.          53411   IN   NS      ns.dsi.net.

;; ADDITIONAL SECTION:
ns.dns-dsi.de.          85595   IN   A       213.83.53.194
ns2.dsi.net.            80799   IN   A       213.187.77.174
ns.dsi.net.             81978   IN   A       213.83.36.58

;; Query time: 3 msec
;; SERVER: 10.0.0.2#53 (10.0.0.2)
;; WHEN: Tue May 14 16:59:21 2002
;; MSG SIZE rcvd: 218

Dig (Domain Information Groper) ist das Nachfolgetool von nslookup. Wie im Beispiel zu sehen ist, bekommt der User einiges mehr an Informationen heraus, als beim alten Auflösevorgang. Hierbei wird auch angezeigt, welcher Autorität die Zone untersteht, sowie eine gleichzeitige zusätzliche Auflösung aller Nameserver.

Host Zurück Anfang

Ein weiteres Diagnose-Werkzeug ist host, das per Voreinstellung lediglich eine verkürzte Ausgabe der vorherigen Tools darstellt, sich jedoch mit diversen Schaltern und Parametern zu einem sehr mächtigen Werkzeug verwandeln kann.

user@sonne> host www.linuxfibel.de

www.linuxfibel.de. is an alias for www.fibel.de.
www.fibel.de. is an alias for meine.linux.fibel.de.
meine.linux.fibel.de. has address 194.180.239.13