Bekanntlich werden Rechner im Internet über die IP-Nummern angesprochen.
Niemand möchte sich aber die IP-Nummern direkt merken, praktischer
ist es, Namen zu verwenden, z.B. www.franken.de
.
Aber nicht nur für die bessere Merkbarkeit sind diese Namen
wichtig, sondern sie dienen auch als Variable, deren
Inhalt sich verändern kann. Wenn ein wichtiger Server z.B.
durch einen Umzug oder Providerwechsel eine neue
IP-Nummer bekommt, so wird
der Name einfach in die neue IP-Nummer aufgelöst.
Genauso wichtig wie die Auflösung von Namen in IP-Nummern, das wird gerne vergessen, ist der umgekehrte Fall, also IP-Nummer in einen Rechnernamen auflösen.
Diese umgekehrte Auflösung ist oft diejenige, die durch ungewollte Verbindungen Probleme im lokalen Netzwerk macht, denn viele Services nutzen diese Möglichkeit zur Verifikation bei einer eingehenden Verbindung, denn in den Regeln, die festlegen, wer was machen darf, werden meist Rechnernamen anstatt IP-Nummern verwendet. Über das Netzwerk ist aber zunächst nur die IP-Nummer sichtbar und muß also in einen Namen aufgelöst werden.
Es gibt zwei wichtige Methode zur Namensauflösung, die gleichzeitig benutzt werden können und müssen:
Alle bekannten IP-Nummern werden fest in einer Datei gespeichert, die der Administrator manuell pflegen oder von anderen Rechnern kopieren muß.
In der Datei /etc/hosts
werden alle Rechnernamen und
IP-Nummern fest eingetragen.
Existieren z.B. in der Domain isdnworkshop.de
die
Rechner Asterix (192.168.1.1) und Obelix (192.168.1.2), so
sieht die Datei folgendermaßen aus:
# IP FQN Kurzname
192.168.1.1 Asterix.isdnworkshop.de Asterix
192.168.1.2 Obelix.isdnworkshop.de Obelix
Es wird schnell ersichtlich, daß eine feste Auflösung über eine Datei, die ständig aktuell auf jedem Rechner installiert sein muß, im Internet nicht funktionieren würde. Die feste Auflösung kann nur in einem übersichtlichen lokalen Netz benutzt werden.
DNS (Domain Name Service) dient ebenfalls zum Auflösen von Rechnernamen in eine IP-Nummer und umgekehrt. Der Unterschied liegt darin, daß es ein Internet-Service ist, den man auf Anforderung abfragen kann. Es gibt sehr viele DNS-Server im Internet, wobei es eine hierarchische Struktur gibt, die sich an den Domainnamen orientiert. Jeder DNS-Server ist für eine Subdomain zuständig. Beim Abfragen »hangelt« man sich von den Root-Servern herunter, bis man den Server gefunden hat, der die Anfrage tatsächlich beantworten kann.
Das Einrichten eines DNS-Servers wird an anderer Stelle beschrieben, wie z.B. im DNS HOWTO.
Für unsere Zwecke reicht es, zu wissen, wie der Service aktiviert wird und wo man einstellt, welches der Nameserver ist.
Es ist wie gesagt durchaus sinnvoll, beide Methoden
der Namensauflösung zu kombinieren. Wichtig ist hier, daß
auch ohne Internetverbindung lokal gearbeitet werden kann.
Üblicherweise werden die lokalen Rechner oder mindestens der
eigene über die /etc/hosts
aufgelöst. Alle nicht
bekannten Anfragen werden dann über den Nameserver beim
ISP aufgelöst.
Um die Namensauflösung muß sich eine Applikation nicht selber
kümmern, sondern dieses wird durch libc
-Funktionen wie z.B.
gethostbyname()
erledigt. Diese libc
-Funktionen gilt es also
zu konfigurieren.
Über die Datei /etc/host.conf
wird zunächst gesteuert,
welche Methoden überhaupt benutzt werden sollen und
auch in welcher Reihenfolge dies geschehen soll.
Folgende /etc/host.conf
Datei:
order hosts bind
multi on
gibt an, daß zunächst in der /etc/hosts
gesucht werden soll.
Falls dies nicht erfolgreich ist,
soll der DNS-Server (bind
) bemüht werden.
Wenn ein Nameserver benutzt werden soll, ist noch eine zweite
Datei /etc/resolv.conf
zu konfigurieren:
search isdnworkshop.de suse.de
nameserver 192.168.200.7.1
Die zweite Zeile sollte selbsterklärend sein; in der ersten
wird eine sogenannte Searchlist angegeben. Diese ist nur dann
von Bedeutung, wenn ein Rechnername ohne vollständige Domain
aufgelöst werden soll. Wird z.B. nach einem
Rechner Goedel
gesucht, den der Nameserver nicht kennt,
dann wird zunächst isdnworkshop.de
angehängt und damit versucht,
einen Rechner Goedel.isdnworkshop.de
zu finden; ist auch das nicht
erfolgreich, wird nach Goedel.suse.de
gesucht.
Änderungen an diesen beiden Dateien sind sofort wirksam.
Bei der S.u.S.E Distribution müssen die Variablen in
/etc/rc.config
gesetzt werden. Für obiges
Beispiel würde das so aussehen:
SEARCHLIST="isdnworkshop.de suse.de"
NAMESERVER="192.168.200.7.1"
Probleme bei der Namensauflösung erkennt man schnell an seiner Telefonrechnung ;-(.
Macht ein Benutzer z.B. im lokalen Netz ein
Telnet von der IP-Nummer 192.168.1.2 auf den IZG
192.168.1.1
, so prüft
der Server vor dem eigentlichen Start des Telnet-Daemons,
welche IP-Nummer reinkommt (Stichwort TCP-Wrapper). Da diese
Nummer nicht aufgelöst werden kann, wird der Nameserver befragt;
dieser befindet sich beim ISP, so daß automatisch eine Verbindung
aufgebaut wird. Das Ergebnis ist, daß Telnet nicht nur etwa eine
Minute bis zum Login braucht, der DNS-Server kann diese private
IP-Nummer nicht auflösen, sondern dieses auch noch 12 Pfennig
kostet.
Bei Problemen sollte man sich an diese Checkliste halten:
/etc/hosts
eingetragen?
/etc/hosts
eingetragen?
bind
installiert?
$ rpm -q bind
bind-4.9.6-5
$ nslookup www.suse.de
Server: Plato.suse.de
Address: 192.168.100.1
Name: Turing.suse.de
Addresses: 195.125.217.200, 192.168.102.3
Aliases: www.suse.de
$ nslookup www.suse.de 141.1.1.1
Server: ecrc.de
Address: 141.1.1.1
Non-authoritative answer:
Name: Turing.suse.de
Address: 195.125.217.200
Aliases: www.suse.de
Eventuell sind auch die nachfolgende Tips hilfreich:
/etc/hosts
eingetragen werden,
auch wenn sie noch nicht verwendet werden. Beispiel:
192.168.1.1 Server.isdnworkshop.de Server
192.168.1.2 Client.isdnworkshop.de Client
192.168.1.3 Dummy.isdnworkshop.de Dummy
192.168.1.4 Dummy.isdnworkshop.de Dummy
192.168.1.5 Dummy.isdnworkshop.de Dummy