# Die Server-Seite

Wir beschränken uns zunächst auf die Beschreibung der Konfigurationsdateien für die bind-Versionen 4.xxx.

Der Domain-Server wird mittels `named` gestartet. Dieser Dämon wertet beim Start die Datei `/etc/named.boot` aus, deren Aufbau wir uns näher betrachten wollen:

`directory /var/named cache . root.cache primary 0.0.127.in-addr.arpa pz/127.0.0 primary 85.168.192.in-addr.arpa pz/192.168.85 primary galaxis.de pz/galaxis.de`

Die `directory`-Zeile veranlasst den Server, sein Arbeitsverzeichnis entsprechend dem Eintrag zu wechseln.

Die `cache`-Zeile spezifiziert den Inhalt der Datei `root.cache` als Backup-Cache. Die Datei selbst enthält Informationen zu den Wurzel-Domain-Servern und wird bei SuSE mitgeliefert. Da die Informationen dieser Datei aber nicht mehr dem aktuellen Stand entsprechen müssen, kann von `ftp.rs.internic.net` ein Update geholt werden.

`; Ausschnitt aus root.cache ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10`

Zur Verwendung dieser Datei verfolgen wir die Auflösung einer Anfrage nach der IP-Adresse des Rechners `example.edu.saxedu.de`.

Wir erinnern uns, daSs die Datenbasis des DNS hierarchisch strukturiert ist, also werden wir zuerst die Lage von `.de` in Erfahrung bringen wollen.

Wer kennt einen Server, der sich mit `de` auskennt? Ein Server der Wurzel, eben einer der in `root.cache` spezifizierten Rechner. Also wird zunächst eine Anfrage an den ersten Server aus der Liste gestellt. Antwortet dieser nicht (time-out), wird der nächste Server kontaktiert, bis - hoffentlich - ein Server die Information liefert. Diese Information wird die Adresse eines Nameservers sein, der `de` verwaltet. Die nächste Anfrage nach `saxedu` richtet sich an letzteren Server, der uns weiter an einen Server vermittelt, der etwas über `saxedu` zu berichten vermag...

Letztlich steigen wir in der Hierarchie zu einem Server ab, der die IP-Adresse des gesuchten Hosts kennt.

Nun zur ersten `primary`-Zeile. In ihr wird die Datei `pz/127.0.0` als `0.0.127.in-addr.arpa` definiert.
`pz` (steht für primary zone; es kann ein beliebiger Name gewählt werden) ist hierbei ein Unterverzeichnis in `/var/named` (Vergleiche `directory`), welches die Dateien mit den Resource Records enthält. `127.0.0` ist die Netzwerkadresse des Loopback-Devices und wird hier benutzt, um einen Nur-Cache-Server zu aktivieren, d.h. einen DNS-Server, der Anfragen zu anderen Servern weiterleitet und die gewonnenen Informationen lokal zwischenspeichert, um zukünftige Anfragen direkt beantworten zu können.
`in-addr.arpa` ist eine besondere Domain, die ermöglicht, den Hostnamen zu einer gegebenen IP-Adresse zu ermitteln. Üblicherweise werden symbolische Namen so angegeben, dass die Top-Level-Domain rechts steht (`snoopy.gnu.org`). `arpa` ist aus einer Top-Level-Domain und steht demzufolge ganz rechts. Schaut man sich die Suche nach einem Hostnamen an, wird auch die "verdrehte" IP-Adresse klar:

Gesucht wird der Hostname zur (fiktiven) Adresse `192.168.85.12`.
Intern sucht DNS nach `12.85.168.192.in--addr.arpa.` Also sucht DNS zunächst den Server, der `arpa` bedient, dann den Server für `in-addr.arpa`, nun den Server `192.in--addr.arpa`..., also wird ausgehend von der Wurzel die Adresse aufgelöst.

Werfen wir einen Blick auf die Datei `127.0.0`:

`@ IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); minimum TTL ; NS sonne.galaxis.de. ; 1 PTR localhost.`

Eine andere Schreibweise für dieselbe Datei ist:

`0.0.127.in-addr.arpa. IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); minimum TTL ; 0.0.127.in-addr.arpa. IN NS sonne.galaxis.de. ; 1.0.0.127.in-addr.arpa. IN PTR localhost.`

Bezug nehmend auf letztere Version folgt nach `SOA` der Hostname und der Verantwortliche für diesen Host, also `root`. Genau genommen müsste root als `root@sonne.galaxis.de` angegeben werden, allerdings ist @ ein Sonderzeichen (siehe erste Version), das das Orignal beschreibt und dieses kann hier nicht nochmals verwendet werden.

NS teilt DNS mit, wer für `0.0.127.in-addr.arpa` der Nameserver ist, PTR erklärt, dass `1.0.0.127.in-addr.arpa` als `localhost` bekannt ist.

Entfernt man in `/etc/named.boot` die beiden weiteren `primary`-Zeilen (ein Semikolon zu Beginn der Zeile leitet einen Kommentar ein) und startet den Name-Server:

`root@sonne> ndc start`

sollte man, falls man alles richtig konfiguriert hat, in /var/log/messages Einträge ähnlich der Folgenden finden:

`root@sonne> tail /var/log/messages Nov 25 07:34:49 sonne named[185]: starting Nov 25 07:34:49 sonne named[185]: cache zone "" loaded (serial 0) Nov 25 07:34:49 sonne named[185]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1) Nov 25 07:34:49 sonne named[186]: Ready to answer queries.`

Eine erste Abfrage lässt sich mit `nslookup` tätigen:

`user@sonne> nslookup Default Server: localhost Address: 127.0.0.1 > 127.0.0.1 Server: localhost Address: 127.0.0.1 Name: localhost Address: 127.0.0.1 > exit`

Hat so weit alles geklappt, wenden wir uns der nächsten `primary`-Zeile zu und schauen uns die zugehörige Datei an:

`@ IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); ; NS sonne.galaxis.de. ; 10 PTR sonne.galaxis.de. 22 PTR mars.galaxis.de. 23 PTR venus.galaxis.de. 24 PTR merkur.galaxis.de. 25 PTR melmac.galaxis.de.`

Diese Datei ermöglicht uns das Ermitteln des Hostnamens aus einer gegebenen IP-Adresse. Für die umgekehrte Auflösung sorgt der dritte `primary`-Eintrag:

`@ IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); ; NS sonne.galaxis.de. ; localhost A 127.0.0.1 sonne A 192.168.85.10 mars A 192.168.85.22 venus A 192.168.85.23 merkur A 192.168.85.24 melmac A 192.168.85.25`

Es sei besonders auf den abschließenden Punkt nach den Hostnamen hingewiesen. Dieser teilt dem Server mit, dass es sich um einenvollständigen Namen handelt, der nicht erweitert werden muss!

`user@sonne> nslookup Default Server: localhost Address: 127.0.0.1 > set q=any > galaxis.de Server: localhost Address: 127.0.0.1 galaxis.de origin = sonne.galaxis.de mail addr = root.sonne.galaxis.de serial = 1 refresh = 10800 (3 hours) retry = 3600 (1 hour) expire = 604800 (7 days) minimum ttl = 86400 (1 day) galaxis.de nameserver = sonne.galaxis.de galaxis.de nameserver = sonne.galaxis.de sonne.galaxis.de internet address = 192.168.85.10 > exit`

Jetzt provozieren wir einmal einen Fehler, indem wir den Punkt "vergessen":

`@ IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); ; ; NS sonne.galaxis.de. MX 10 mail.sonne.galaxis.de ; da fehlt der Punkt! ; localhost A 127.0.0.1 sonne A 192.168.85.10 mars A 192.168.85.22 venus A 192.168.85.23 merkur A 192.168.85.24 melmac A 192.168.85.25`

Das Ergebnis sieht man beim nächsten nslookup (Ausschnitt):

`user@sonne> nslookup > set q=any> galaxis.de ... galaxis.de nameserver = sonne.galaxis.de galaxis.de preference = 10, mail exchanger=mail.sonne.galaxis.de.galaxis.de galaxis.de nameserver = sonne.galaxis.de ...`

Zum Abschluss schauen wir uns noch einige mögliche Zusatzeinträge an, die z.B. Informationen zur Hardware liefern können (Datei `galaxis.de`):

`@ IN SOA sonne.galaxis.de. root.sonne.galaxis.de. ( 1 ; serial 10800 ; refresh 3600 ; retry 604800 ; expire 86400 ); ; NS sonne MX 10 mail.sonne.galaxis.de. TXT "sonne.galaxis.de, your DNS Server" sonne MX 10 mail HINFO "K6-450" "Linux 2.2.1" ; localhost A 127.0.0.1 sonne A 192.168.85.10 mars A 192.168.85.22 venus A 192.168.85.23 merkur A 192.168.85.24 melmac A 192.168.85.25`

`nslookup` erlaubt uns auf solche Informationen uzugreifen (es existieren weitere Optionen, man informiere sich in den Manuals):

`user@sonne> nslookup > ls galaxis.de ls galaxis.de [localhost] galaxis.de. server = sonne.galaxis.de mars.galaxis.de 192.168.85.22 sonne 192.168.85.10 venus.galaxis.de 192.168.85.23 merkur.galaxis.de 192.168.85.24 melmac.galaxis.de 192.168.85.25 localhost 127.0.0.1 > ls -t HINFO galaxis.de [localhost] sonne K6-450 Linux 2.2.1 > exit`