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 eine neue
IP-Nummer bekommt (z.B. durch Umzug oder Providerwechsel), so wird
der Name einfach auf die neue IP-Nummer aufgelöst.
Genauso wichtig (und das wird gerne vergessen) wie die Auflösung von Namen in IP-Nummern ist der umgekehrte Fall, also IP-Nummer in einen Rechnernamen auflösen.
Diese umgekehrte Auflösung ist oft diejenige, die Probleme im lokalen Netzwerk (also ungewollte Verbindungen) macht, denn viele Services nutzen diese Möglichkeit zur Verifikation bei einer einkommenden Verbindung, denn in den Regeln 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-Nummer werden fest in einer Datei gespeichert, die der Adminsitrator manuell pflegen (oder kopieren) muß.
In der Datei /etc/hosts
werden alle Rechnernamen und
IP-Nummern fest eingetragen.
Beispiel: In der Domain isdnworkshop.de
gibt es die
Rechner Asterix (192.168.1.1
) und Obelix (192.168.1.2
).
Dann sieht die Datei so 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ß das 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 Sub-(Sub-....) Domain 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-Server soll an anderer Stelle beschrieben werden, 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 (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 wird durch libc
-Funktionen (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 sehr wichtig
auch in welcher Reihenfolge dies geschehen soll.
Beispiel /etc/host.conf
:
order hosts bind
multi on
gibt an, daß zunächst in der /etc/hosts
gesucht werden soll,
bei Mißerfolg dort, 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 2. 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
versucht wird aufzulösen. Beispiel: es wird 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.
Setze die Variablen in /etc/rc.config
, für obiges
Beispiel:
SEARCHLIST="isdnworkshop.de suse.de"
NAMESERVER="192.168.200.7.1"
Probleme bei der Namensauflösung erkennt man schnell an seiner Telefonrechnung ;-(
Ein Beispiel: eine Benutzer macht im lokalen Netz ein
Telnet von der IP-Nummer 192.168.1.2
auf den IZG 192.168.1.1
.
Der Server prüft 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 ist beim ISP, eine Verbindung wird automatisch
aufgebaut. Ergebnis: der Telnet braucht nicht nur etwa eine
Minute bis zum Login (der DNS-Server kann diese private
IP-Nummer nicht auflösen), sondern kostet auch noch 12 Pfennige.
/etc/hosts
eingetragen?
/etc/hosts
eingetragen?
bind
installiert:
+/kfr $ rpm -q bind
bind-4.9.6-5
+/kfr $ 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
+/kfr $ 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
Tips:
/etc/hosts
eintragen, auch wenn sie
(noch) nicht verwendet werden. Bsp:
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
u.s.w.