Einrichtung und Konfiguration grundlegender DNS-Dienste

Wichtung: 4

Beschreibung: Die Kandidaten sollen in der Lage sein, grundlegende DNS-Dienste zu konfigurieren.

Wichtigste Wissensgebiete:
Konfiguration der Namensauflösung und Problemlösung bei lokalen Caching-Only-Nameservern.
Verständnis der Domainregistrierungen und des DNS-Prozesses.
Verständnis der Konfigurationsdateien von BIND8 und BIND9.

Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/hosts
/etc/resolv.conf
/etc/nsswitch.conf
/etc/named.conf
named

Grundlagen DNS

DNS ist die Abkürzung für Domain Name System. Die Hauptaufgaben DNS sind das Auflösen von Namen in IP-Adressen und umgekehrt. Doch wofür benötigt man überhaupt DNS? Ein einfaches Beispiel soll diese Frage beantworten. Computer arbeiten besser mit Zahlen und daher werden Server im Internet genauso wie Rechner im lokalen Netzwerk über IP-Adressen angesprochen. Doch was passiert, wenn man www.google.de in den Browser eintippt? Die Adresse wird in eine IP-Adresse umgewandelt und genau hierfür sind DNS-Server bestimmt. Die Anfrage an www.google.de wird an einen DNS-Server übergeben, welcher die entsprechende IP-Adresse herausfindet.

Ping www.l.google.com [209.85.129.147] mit 32 Bytes Daten:

Antwort von 209.85.129.147: Bytes=32 Zeit=7ms TTL=244
Antwort von 209.85.129.147: Bytes=32 Zeit=5ms TTL=244
Antwort von 209.85.129.147: Bytes=32 Zeit=5ms TTL=244
Antwort von 209.85.129.147: Bytes=32 Zeit=5ms TTL=244

Natürlich gibt es nicht nur einen einzigen Nameserver bzw. DNS-Server (beide Bezeichnungen können genutzt werden). Das Internet besteht aus tausenden Nameserver, die in einem hierarchischem System aufgebaut sind. Ganz oben stehen Nameserver für die Top-Level-Domains wie .aero, .biz, .com, .coop, .edu, .de, .net, usw. Darunter teilen sich in einer klassischen Baumstruktur die Subdomänen auf. www.google.de ist beispielsweise eine Subdäme der Top-Level-Domäne .de.

BIND ist die meitverbreiteste DNS-Software für Linux bzw. Unix. Das Linux Professionel Institute (LPI) setzt grundlegende Kenntnisse zum Thema Domain Name System (DNS) voraus. Für tiefgreifende Anleitungen und Informationen ist es ratsam, die Links unter "Weitere Informationen" zu besuchen.

Resolver - Namensauflösung

Der Resolver verwendet die Dateien /etc/hosts, /etc/host.conf, /etc/resolv.conf und /etc/nsswitch.conf.

/etc/hosts - Namensauflösung für kleine Netzwerke

Für ein kleines Netzwerk von wenigen Rechnern lohnt es sich nicht, einen DNS-Server einzurichten. Hier reicht es, wenn man auf jedem Host die Datei /etc/hosts editiert.

# vi /etc/hosts

192.168.2.1 server
192.168.2.32 jenny
192.168.2.33 peter
192.168.2.32 hannes

Wenn Änderungen vorgenommen werden, so muss die Datei /etc/hosts auf jedem Rechner aktualisiert werden. Daher eignet sich dieses Prinzip nur für kleine Netzwerke.

/etc/host.conf und /etc/nsswitch.conf

In Dateien /etc/host.conf und /etc/nsswitch.conf wird festgelegt, welche Dienste für die Namensauflösung zuständig sind und in welcher Reihenfolge diese angesprochen werden.

// Auszug /etc/host.conf
order hosts, bind # Zuerst lokals Host-Datei, dann BIND
multi on

// Auszug /etc/nsswitch.conf
hosts: files dns # Zuerst lokale Hostdatei, dann DNS-Server

/etc/resolv.conf - Wer ist mein Nameserver

In der Datei kann man den Nameserver eintragen, der für die Namensauflösung des Clients genutzt wird. Außerdem kann man den Namen der privaten Domain eintragen:

// Auszug /etc/resolv.conf

domain privat.home
nameserver 192.168.2.1

/etc/named.conf - BIND konfigurieren

BIND ist wie bereits erwähnt der meistverbreiteste DNS-Server in der Unix/Linux-Welt. BIND wird in der Datei /etc/named.conf (in älteren Versionen auch in /etc/named.boot oder /var/named/conf).

Beispielkonfiguration von /etc/named.conf:

options {
directory "/var/named"; # Speicherort Zonenfiles
forward only; #
forwarders { # Weiterleiten an DNS-
212.235.16.5; # Server 212.235.16.5
};
};

zone "privat.local" { # Zone privat.local
type master; # Primärer Nameserver
file "named.privat.local"; # Zuständiges Zonenfile
};

zone "2.168.192.in-addr.arpa" { # Zone 192.168.2
type master; # Primärer Nameserver
file "named.192.168.2"; # Zuständiges Zonenfile
};

zone "0.0.127.in-addr.arpa" { # Zone localhost
type master; # Primärer Nameserver
file "named.127.0.0"; # Zuständiges Zonenfile
};

zone "." { # Zone für Root-Server
type hint;
file "root.cache"; # Hier stehen die zu-
}; # ständigen Root-Server drin

Erläuterung: Unter options wurde der Speicherort festgelegt, in welchem Verzeichnis die Zonen-Files abgelegt sind. Jede Domäne, der BIND administrieren soll, benötigt eine Datei, in denen die Informationen zu dieser "Zone" festgelegt werden. Des Weiteren sieht man in der Datei /etc/named.conf die einzelnen Einträge zu den Zonen. type master bedeutet, dass es sich um einen Primären Nameserver handelt.

Primärer Nameserver
In jeder Zone muss es einen Primary Server geben, der die Daten für die Zone verwaltet. Aus Gründen der Ausfallsicherheit sollte es in einer Zone mindestens einen weiteren Nameserver geben, der dann als Secondary Server fungiert.

Eine weitere wichtige Einstellung in der oben gezeigten named.conf ist forwarders. Dieser Eintrag sorgt dafür, dass Anfragen, die vom Nameserver nicht aufgelöst werden können, an einen weiteren Nameserver weitergeleitet werden. In diesem Fall handelt es sich um den Nameserver des Providers, so dass Anfragen an das Internet weitergeleitet werden können.

named.xxx - Zonenfiles in /etc/named

In der Datei /etc/named.conf wurden allgemeine Einstellung für BIND eingestellt und die zu verwaltenden Zonen eingetragen. Für jede Zone muss nun ein Zonenfile in /etc/named geschrieben werden, in der unter anderem dann die einzelnen Hosts, welche sich in der jeweiligen Domäne befinden, eingetragen werden.

Jeder Datensatz besteht aus folgenden Elementen:

Domain-name = Der Name der Domain, auf den sich der Datensatz bezieht.
Time-to-live = Gibt an, wie lange ein Eintrag im Cache behalten wird.
Type = Typ des Datensatz
Class = Die Informationsklasse. Für Internet Informationen steht hier immer der Begriff IN.
Value = Der eigentliche Wert des Datensatzes. Abhängig vom genannten Typ.

Typen

SOA = [Start Of Authority] Verschiedene Parameter für die Zone, die der Nameserver verwalten soll.
A = [Address] Die Adresse eines Internet Hosts.
MX = [Mail Exchange] Die Priorität und Name des Mailservers der Domain.
NS = [Name Server] Name eines Nameservers der Domain.
CNAME = [Canonical Name] Domainname eines Rechners (Aliasfunktion)
PTR = [Pointer] Alias für eine numerische IP-Adresse
HINFO = [Host Information] ASCII Beschreibung des Hosts (CPU, OS, ...)
TX = [Text] Nicht verwertbarer Text - Kommentar

 // Auszug /etc/named/named.privat.local

$TTL 86400

@ IN SOA meinnetz postmaster.meinnetz (
2007030802; # Serial
28800; # Refresh 8 Stunden
7200; # Wiedeversuch in 2 Stunden
604800; # Expire 7 days
259200; ) # Minimum TTL-Zeit

@ IN NS meinnetz

localhost IN A 127.0.0.1
loopback IN CNAME localhost
rechner01 IN A 192.168.2.1
rechner02 IN A 192.168.2.2
rechner03 IN A 192.168.2.3
rechner04 IN A 192.168.3.1
rechner05 IN A 192.168.3.2

Die Kontaktperson für diese Zeile ist postmaster.meinnetz.privat.local und sollte in Wirklichkeit durch eine "richtige" E-Mail ersetzt werden. Wichtig ist die Serial-Nummer 2007030802. Nach jeder Änderung muss diese Zahl um 1 erhöht werden, damit die anderen Namerserver mitbekommen, dass sich das Zonenfile geändert hat. Als Standard hat sich das aktuelle Datum etabliert (2007030802 = 2007-März-08-Zweite Änderung am Tag).

Für die anderen Zonen müssen natürlich auch noch weitere Zonenfiles angelegt werden.

Weitere Informationen

http://www.linuxhaven.de/dlhp/HOWTO/DE-DNS-HOWTO.html#toc3
http://www.tecchannel.de/server/linux/434498/
http://www.pro-linux.de/t_netzwerk/dns.html