Inhalt

8. IP-Nummern-Auflösung (DNS)

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:

8.1 Feste IP-Nummern-Auflösung über /etc/hosts

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
        

8.2 Dynamische IP-Nummern-Auflösung mit DNS

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.

8.3 Konfiguration der Namensauflösung

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.

Manuelle Konfiguration

Ü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.

Namensauflösung bei SuSE

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"
            

8.4 Probleme mit der Namensauflösung

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:

  1. Ist die eigene IP-Nummer in der /etc/hosts eingetragen?
  2. Sind alle Rechner des lokalen Netzwerks in der /etc/hosts eingetragen?
  3. Ist das Paket bind installiert?
    $ rpm -q bind
    bind-4.9.6-5
                    
    
  4. Kann der Nameserver angesprochen werden?
    $ 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
                    
    
  5. Einen beliebigen anderen Nameserver kann man direkt testen, z.B.:
    $ 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:

  1. Alle IP-Nummern und Namen des gesamten Subnetzes sollten in die Datei /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
                    
    
  2. Es kann ein eigener DNS-Proxy-Servers eingerichtet werden. Neben der schnelleren Auflösung werden auch die fehlerhaften Anfragen gecacht, so daß nicht so häufig eine Verbindung aufgebaut wird, siehe Abschnitt DNS-Cache.


Inhalt