Einer der wichtigsten Dienste innerhalb eines Netzwerkes stellt das Domain Name System dar. Dieses hat die Aufgabe, Namen (z.B. www.icer.ch) in zugehörende IP-Adressen (217.26.52.33) umzuwandeln (Für Applikationsentwickler: dies entspricht der Funktion getHostByName(), die normalerweise durch die sogenannten Sockets zur Verfügung gestellt wird).
In dieser Dokumentation beziehen sich alle Angaben auf die Distribution SuSE Professional ab Version 9. Dabei werden einige Eigenheiten dieser Distribution berücksichtigt, so dass die Verwaltungswerkzeuge möglichst weiter ohne Beeinträchtigung benutzt werden können. Die meisten hier erläuterten Einstellungen treffen aber auch auf andere Distributionen zu.
SuSE Professional ab 9.0 bringt ein eigenes YaST-Modul für die DNS-Konfiguration mit, eignet sich aber nicht so gut für die Verwaltung von DNS-Einträgen wenn auch mittels Skripts Einträge mutiert werden sollen.
Um sich besser auf der Distribution zurecht zu finden, sind im folgenden die verschiedenen Dateien und Verzeichnisse, die eine Rolle spielen tabellarisch aufgeführt:
| /etc/named.conf |
Hauptkonfigurations-Datei von Bind |
| /etc/named.conf.include |
Zusätzliche Dateien, die zur Hauptkonfiguration von Bind eingebunden werden sollen. Diese Datei wird durch das Verwaltungswerkzeug der SuSE-Distribution gewartet. Änderungen können durch die Datei /etc/sysconfig/named realisiert werden. |
| /etc/named.d |
In diesem Verzeichnis müssen sich die Dateien befinden, die man in der Datei /etc/sysconfig/named angegeben hat. |
| /etc/sysconfig/named |
Detail-Angaben zur Bind-Konfiguration (z.B. welche Dateien sollen zusätzlich zur Hauptkonfiguration einbezogen werden). |
| /var/lib/named |
In dieses Verzeichnis wird ein chroot durchgeführt und der Dienst wird hier in einem Käfig ausgeführt. Hier werden ebenfalls in den Unterverzeichnissen master und dyn die Zonen-Dateien abgelegt. |
Als Beispiel dient folgendes Szenario: Ein kleines Netzwerk mit der Definition 192.168.100.000/24. Der Server hat den Namen server01 und die IP lautet 192.168.100.010. Der Name der lokalen Domain soll example.local heissen. Weiters findet sich ein Arbeits-PC mit dem Namen pc013 mit der IP-Adresse 192.168.100.013.
Der Domain Name Service (DNS, mittels Bind9 realisiert) wird auf dem Server ausgeführt. Natürlich muss die Bind9-Software installiert sowie in den Runlevel 3 und 5 aktiviert sein.
So, nun wollen wir für einen Beispiel-Host die Namensauflösung realisieren. Im folgenden sind die notwendigen Schritte aufgeführt, die die Grundkonfiguration von Bind aufzeigen.
$TTL 3D
@ IN SOA example.local. root.example.local. (
200402061 ; serial
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
NS example.local.
MX 10 example.local. ; Primary Mail Exchanger
TXT "Example.local zone"
example.local. A 192.168.100.010
ns CNAME example.local.
www CNAME example.local.
ftp CNAME example.local.
mail CNAME example.local.
news CNAME example.local.
; Workstations
pc013 A 192.168.100.013
$TTL 3D
@ IN SOA example.local. root.example.local. (
200402061 ; serial
8H ; refresh, seconds
2H ; retry, seconds
4W ; expire, seconds
1D ) ; minimum, seconds
NS example.local.
10 IN PTR example.local.
; Workstations
13 IN PTR pc013.example.local.
zone "example.local" in {
type master;
file "master/example.local.zone";
};
zone "100.168.192.in-addr.arpa" in {
type master;
file "master/192.168.100.zone";
};
NAMED_CONF_INCLUDE_FILES="rndc-access.conf local.conf"Damit stellen wir sicher, dass Bind bzw. das Verwaltungswerkzeug von SuSE unsere Konfigurations-Ergänzungen integriert.
Nun gilt es zu prüfen, ob die definierten Namen auch wie erwartet funktionieren.
Zuerst muss man natürlich dafür sorgen, dass die Rechner den konfigurierten Bind-Server als DNS ansprechen. Dazu ist entsprechend bei der Netzwerk-Konfiguration für DNS-Server die IP-Adresse unseres Bind-Servers anzugeben.
Nun kann man mittels dem Kommando ping prüfen, ob der Name auch korrekt in eine IP-Adresse gewandelt wird:
C:\>ping pc013.example.local
Ping pc013.example.local [192.168.100.13] mit 32 Bytes Daten:
Antwort von 192.168.100.13: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.100.13: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.100.13: Bytes=32 Zeit<1ms TTL=64
Antwort von 192.168.100.13: Bytes=32 Zeit<1ms TTL=64
Ping-Statistik für 192.168.100.13:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
Eine weitere Möglichkeit besteht im Werkzeug dig das allerdings nur unter Unix-basierten Systemen zur Verfügung steht. Weitere Infos dazu findet man in den man-Pages (man dig).
Leidiges Thema... muss aber auch sein. Die allererste Anlaufstelle ist die System-Log-Datei. Diese findet man unter /var/log/messages. Hier sollte man prüfen, ob der Bind-Dienst auch ohne Probleme gestartet wurde. Falls ein Fehler in den Konfigurations-Dateien besteht, werden diese hier protokolliert.
Die Namensauflösung funktioniert nur für sogenannte Full Qualified Domain Name (FQDN). Wenn man lediglich den Hostnamen z.B. beim Ping-Befehl angibt (ping pc013), kann es sein, dass der Name nicht gefunden wird. Damit aber auch das funktioniert, gibt es bei den meisten Betriebssystemen die Möglichkeit, den sogenannten DNS-Suffix zu definieren. Dieser wird jeweils bei einfachen Hostnamen angehängt. Ist dieser also als example.local definiert und man ruft das Ping-Kommando als ping pc013 auf, ergänzt das System automatisch den Hostnamen zu einem FQDN: pc013.example.local.
Die lokale Namensauflösung funktioniert, aber die Auflösung für Internet-Namen wie z.B. www.google.ch funktioniert nicht. Das ist darauf zurück zu führen, dass unser DNS-Server nur lokale Namen kennt. Damit er bei für ihn unbekannten Namen die DNS-Server des Providers anfrägt, muss man in der Datei /etc/named.conf die Zeile forwarders mit der IP des DNS-Servers des Providers ergänzen (die Beispieleinträge sind zu entfernen sowie das führende # zu entfernen).