Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Primärer-NS

Caching-only-NS ] [ Primärer-NS ] Sekundärer-NS ] Client Konfiguration ]


In diesem Unterkapitel geht es um den Aufbau eines Primären-Nameservers mittels BIND. Der Unterschied zum zuvor beschriebenen 'caching-only'-Nameserver ist, ein Primärer-Nameserver verfügt über eigene Zonen im Netzwerk. Die Eigenschaft primär besagt, dass es sich um einen so genannten Master-Nameserver handelt, der andere Sekundäre-Nameserver mit seinen Informationen bez. der Zonen versorgen kann. Eine Pflege der Zonen-Daten ist somit nur auf dem Primären-Nameserver nötig.
Der Aufbau des Primären-Nameservers wird anhand eines praxisnahen Beispiels erläutern, um so das Verständnis für die einzelnen Zonen-Dateien nachvollziehen zu können. Bei der folgenden Konfiguration des Beispiel-Nameserver wird keine offizielle Domäne (wie z.B. '.de' oder '.com') verwendet, sondern nur eine interne, für das eigene private LAN gültige Domäne. Eine offizielle Domäne sollte nur mit Rücksprache der zuständigen Institution (z.B. bei '.de' die DENIC) aufgesetzt werden.

Installation/Konfiguration

Die Installation eines Primären-Nameservers ist identisch wie beim zuvor beschriebenen 'caching-only'-Nameservers. Die Einstellungen in den Dateien: 'host.conf' und 'resov.conf' können beibehalten werden. Auch können die Konfigurationsdateien 'named.conf' und 'named.conf.option' ähnlich wie beim 'caching-only'-Nameserver beibehalten werden. Der eigentliche Unterschied besteht aus dem Hinzufügen von eigenen lokalen Zonen-Dateien. Die lokalen Zonen-Dateien werden unter Debian in 'named.conf.local' deklariert.

Bevor nun die Konfigurationen im Detail beschrieben werden. zunächst die groben Eckdaten des Beispiel-Netzwerkes:

  • Der Name der Domäne: 'eusterholz.tld'
    ('.tld' steht stellvertretend für 'Top-Level-Domain'; es ist somit sichergestellt, dass es keine Überschneidungen im Internet gibt.)

  • Name des Primären-Nameservers: 'meridian'

  • IP-Adresse des Primären-Nameservers: '192.168.1.10'

  • Name des Sekundären-Nameservers: 'emphasis'

  • IP-Adresse des Sekundären-Nameservers: '192.168.1.20'

  • Unterstützte lokale Sub-Netze: '192.168.1.0' und '192.168.2.0'

Für den Betrieb des Primären-Nameservers ist die Existenz eines Sekundären-Nameservers nicht notwendig. Da jedoch im weiteren Unterkapitel der Sekundären-Nameservers vorgestellt wird, kann dieses schon jetzt bei der Konfiguration des Primären-Nameserver berücksichtigt werden.

Das folgende Listing zeigt die Hauptkonfigurationsdatei: '/etc/bind/named.conf', ausgehend von der unter Debian installierten Vorlage:

/etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";

// prime the server with knowledge of the root servers
zone "." {
        type hint;
        file "/etc/bind/db.root";
};


// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};


zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};


zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};


zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};


// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };

// From the release notes:
// Because many of our users are uncomfortable receiving undelegated answers
// from root or top level domains, other than a few for whom that behaviour
// has been trusted and expected for quite some length of time, we have now
// introduced the "root-delegations-only" feature which applies delegation-only
// logic to all top level domains, and to the root domain. An exception list
// should be specified, including "MUSEUM" and "DE", and any other top level
// domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };

include "/etc/bind/named.conf.local";

Die Hauptkonfigurationsdatei kann wie bei der Installation vorgeben übernommen werden, sie brauch nicht editiert werden.
Die '.'-Zonen (blaue Markierung) ist für die Auflösung von Namen und IP-Adressen im Internet zuständig. In der Datei: '
/etc/bind/db.root' sind die Haupt-Nameserver des Internets, auch Root-Nameserver genannt, abgelegt. Die folgenden Zonen (grüne Markierung) sind für 'localhost' bzw. die rückwärts Auflösung, Netzanfragen und 'broadcasts' zuständig. Mittels dem include-Kommandos (gelbe Markierung) werden die Konfigurationsdateien für die Optionen und die lokalen-Zonen eingebunden.

In der 'named,conf.optionen' sollten alle Optionen des Primären-Nameservers eingebracht werden:

/etc/bind/named.conf.options

options {
        directory "/etc/bind";

        allow-query {
                127.0.0.1;
                192.168.1/24;
                192.168.2/24;
        };

        // If there is a firewall between you and nameservers you want
        // to talk to, you might need to uncomment the query-source
        // directive below. Previous versions of BIND always asked
        // questions using port 53, but BIND 8.1 and later use an unprivileged
        // port by default.

        // query-source address * port 53;

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        forwarders {
                217.237.151.33;
                217.237.151.225;
        };

        listen-on { any; };
        listen-on-v6 { any; };
        match-mapped-addresses yes;
        auth-nxdomain no; # conform to RFC1035

};

Mit dem Schlüsselwort 'directory' wird das Verzeichnis festgelegt, wo nach den Zonen-Dateien gesucht wird. Unter 'allow-query' werden alle Netze angegeben denen es erlaubt ist Anfragen zu stellen. Die DNS-Server des Providers werden unter 'forwarders' eingetragen. Die weiteren Optionen lassen sich in der Dokumentation zu bind nachlesen.

Die lokalen Zonen-Dateien, die den eigentlichen Primären Nameserver ausmachen, sind in der Datei: 'named.conf.local' anzugeben:

/etc/bind/named.conf.local

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "eusterholz.tld" {
        type master;
        file "./db.eusterholz.tld";
        allow-transfer {192.168.1.20; };
};


zone "1.168.192.in-addr.arpa" {
        type master;
        file "./db.1.168.192";
        allow-transfer {192.168.1.20; };
};


zone "2.168.192.in-addr.arpa" {
        type master;
        file "./db.2.168.192";
        allow-transfer {192.168.1.20; };
};

In diesem Beispiel der 'named.conf.local' befinden sich drei Zonen. In der ersten Zone: 'eusterholz.tld' sind die relevanten Geräte für das Subnetz: '192.168.1.0' und '192.168.2.0' eingetragen. Die zweite und dritte Zone ('1.168.192.in-addr.arpa' und '2.168.192.in-addr.arpa') dienen der Rückwärtsauflösung, d.h. IP-Adresse nach Namen auflösen. Zwei rückwärts auflösende Zonen aus dem Grund, da sich in der Zone: 'eusterholz.tld' Geräte (IP-Adressen) aus beiden Subnetzen befinden.
Alle eingefügten Zonen sind vom 'typ master', d.h. bei Änderungen in den Zone-Dateien werden die Änderungen an den Sekundären-Nameservers weitergegeben. Als Sekundärer-Nameservers ist in diesem Beispiel nur ein gültiger Rechner zugelassen, und zwar der Rechner mit der IP-Adresse: '192.168.1.20' (Parameter: 'allow-transfer').

Zonen-Dateien

In weiteren Verlauf wird die Konfiguration der einzelnen Zonen-Dateien erörtert. Dabei werden nur Standard-Verfahren der einzelnen Zonen behandelt, tiefer gehende Konfigurationen können der Dokumentation zu BIND entnommen werden.

Zunächst zu den vorgefertigten Zonen:  '.' (blaue Markierung), 'localhost', '127.in-addr.arpa', '0.in-addr.arpa' und '255.in-addr.arpa' (grüne Markierung) die bei der Installation von BIND mit angelegt wurden. Diese Zonen können unter Debian unverändert übernommen werden.

Wie schon erwähnt sind die eigenen individuellen Zonen sind in der 'named.conf.local' festgelegt.
Angefangen bei der Zonen-Datei: 'db.eusterholz.tld', der besseren Abgrenzung der Konfiguration ist die die Datei in fünf Teile aufgegliedert (siehe einzelne farbliche Markierungen):

/etc/bind/db.eusterholz.tld

;
; eusterholz.tld - zone
;
$TTL 2D
eusterholz.tld. IN SOA                  meridian        root.meridian (
                                        2003010201      ; serial
                                        1D              ; refresh
                                        2H              ; retry
                                        1W              ; expiry
                                        2D )            ; minimum


; dns-servers
                IN NS                   meridian        ; primary-dns
                IN NS                   emphasis        ; secundary-dns


; mx-record
                IN MX 1                 joshua          ; postfix
                IN MX 9                 experimental    ; exim

; maschine names
ipcop           IN A                    192.168.1.1     ; Firewall 'IPCop'
joshua          IN A                    192.168.1.2     ; Debian 'Woody'
merlin          IN A                    192.168.1.4     ; Debian 'Woody'
meridian        IN A                    192.168.1.10    ; Debian 'Sarge'
emphasis        IN A                    192.168.1.20    ; Debian 'Sarge'
experimental    IN A                    192.168.1.100   ; Win XP / Debain 'Sarge'
ovation         IN A                    192.168.1.128   ; Win XP 'Prof.'
switch          IN A                    192.168.1.254   ; Switch 'Linksys SRW224'
vision          IN A                    192.168.2.10    ; Debian 'Sarge'
webcam          IN A                    192.168.2.80    ; WebCam 'AXIS 200+'


; aliases
www             IN CNAME                vision          ; www-server (apache internet)
www2            IN CNAME                vision          ; www-server (apache intranet)
ftp             IN CNAME                vision          ; ftp-server (vsftp internet)
ftp2            IN CNAME                vision          ; ftp-server (vsftp intranet)
dns             IN CNAME                meridian        ; DNS (primary)
dns2            IN CNAME                emphasis        ; DNS (secondary)
wins            IN CNAME                joshua          ; WINS-Server (samba)
proxy           IN CNAME                ipcop           ; proxy-server (squid)
ntp             IN CNAME                vision          ; time-server (ntp stratus 1)
ntp2            IN CNAME                ipcop           ; time-server (ntp stratus 2)
time            IN CNAME                joshua          ; time-server (samba)
mail            IN CNAME                joshua          ; mail-server
pop3            IN CNAME                joshua          ; mail-server
smtp            IN CNAME                joshua          ; mail-server
news            IN CNAME                merlin          ; news-server (leavenode)
cdw             IN CNAME                merlin          ; CDWserver
gw              IN CNAME                ipcop           ; gateway (IP-COP)
print           IN CNAME                joshua          ; print-server (cups)
scan            IN CNAME                merlin          ; scanner-server (sane)
sql             IN CNAME                vision          ; sql-server (mysql - internet)

Der Eintrag: '$TTL 2D' legt den Standardwert: 'Time to Live' (TTL) für die Zone fest; in diesem Fall zwei Tage.

Der Kopf der Konfigurationsdatei wird durch den 'SOA'-Record dargestellt, 'eusterholz.tld' legt dabei zunächst die zu beschreibende Domäne fest. Wichtig ist der abschließende Punkt ('.' hinter '.tld'), der für den root-Namensraum steht. Der Punkt muss immer hinter allen voll qualifizierten Namen geschrieben werden, da sonst der name-Dämon davon ausgeht, es handelt sich hierbei um einen noch zu vervollständigen Namen und hängt die aktuelle Domäne an.
'meridian' (dieses mal ohne Punkt, könnte auch stehen: 'meridian.eusterholz.tld' mit Punkt) steht für den aktuellen Rechner, auf dem der Dämon: 'named' läuft.
'root.meridian' gibt die E-Mail-Adresse des DNS-Administrators an, der Punkt steht dabei für das sonst übliche '@'-Zeichen. Da der Name nicht mit einem Punkt beendet wird, vervollständigt BIND den Eintrag zu 'root.meridian.eusterholz.tld'.
Damit anderen Nameserver (z.B.: Sekundäre-Nameserver) die Aktualität des Datensatzes überprüfen können, muss die Seriennummer: 'serial' für den Datensatz angegeben werden. Bei Änderungen des Datensatzes sollte die Seriennummer erhöht werden. Das konkrete Format ist beliebig, oft wird das aktuelle Datum benutzt (wie in diesem Fall der 02.01.2003 in der Version: 01 als '2003010201').
Der 'refresh'-Wert gibt an, wie oft die Sekundären-Nameservers nach Updates fragen sollen (hier: 1 Tag). Falls bei dieser Anfrage der Primäre-Nameserver nicht antworten sollte, wird alle 'retry' (hier: 2 Stunden) ein neuer Versuch unternommen. Falls innerhalb des 'expire'-Wertes (hier 1 Woche), keine Reaktion des Primären-Nameservers kommen sollte, hört der Sekundären-Nameserver auf, Anfragen für diese Domäne zu beantworten. Der 'minimum'-Wert (hier 2 Tage) wird mit allen Antworten verschickt und zeigt an, wie lange der Datensatz gültig bleibt.

Die nächsten Zeilen (grüne Markierung), geben alle Nameserver für die Domäne an. Der erste ist der Rechner, auf dem sich die Master-Zone befindet (Primary-DND), danach folgen alle Sekundären-Nameserver (Secondaries).

Als nächstes folgt der 'mx-record', mit dem die Adresse des Mail-Servers (mx = MaileXchanges) angegeben wird. Die Zahl nach 'mx' ist der Vorzugswert, eine Art Priorität. Es können auch mehrere Mail-Server angegeben werden.

Die folgenden 'A'-Records legen das Zugehörigkeit der Hostnamen auf IP-Adressen fest. So z.B., wird der Name: 'experimental' zu 'experimental.eusterholz.tld' ergänzt und die dazugehörige IP-Adresse: '192.168.1.100' zurückgegeben.

'CNAME'-Datensätze stellen Alias-Namen zur Verfügung. Aus 'www' wird, da ohne Punkt am Schluss, nach Vervollständigung: 'www.eusterholz.tld'. Dieses wird nach 'vision.eusterholz.tld' übersetzt und der zugehörige 'A'-Satz ausgegeben, oder ganz kurz: 'www.eusterholz.tld' wird der IP-Adresse '192.168.0.10' zugeordnet.

Um die zu der IP-Adressen den zugehörigen Hostnamen herauszufinden dient die 'reverse lookup'-Datei, diese wird von BIND anhand der 'in-addr.arpa'-Zonen-Dateien aufgelöst. Die IP-Adressen für die Rückwärtsauflösung werden auch rückwärts geschrieben und müssen mit '.in-addr.arpa.' enden:

/etc/bind/db.1.168.192

;
; 192.168.1 - zone
;
$TTL 2D
1.168.192.in-addr.arpa.        IN SOA   meridian       root.meridian (
                                                       2005122701 ; serial
                                                       1D ; refresh
                                                       2H ; retry
                                                       1W ; expiry
                                                       2D ) ; minimum

; dns-servers
                               IN NS         meridian.eusterholz.tld.
                               IN NS         emphasis.eusterholz.tld.

; ip-addr
1                              IN PTR        ipcop.eusterholz.tld.
2                              IN PTR        joshua.eusterholz.tld.
4                              IN PTR        merlin.eusterholz.tld.
10                             IN PTR        meridian.eusterholz.tld.
20                             IN PTR        emphasis.eusterholz.tld.
100                            IN PTR        experimental.eusterholz.tld.
128                            IN PTR        ovation.eusterholz.tld.
254                            IN PTR        switch.eusterholz.tld.

In der obigen Zonen-Datei ist eine Auflösung für das Subnet: '192.168.1.0' möglich.

Das 'SOA'-Record hat das übliche Format, nur wird hier die Rückwärtsauflösung festgelegt, daher ist der Zonen-Name: '0.168.192.in-addr.arpa.'.

Mit 'NS' werden wieder die Primären- und Sekundären-Nameserver definiert.

Danach folgen die 'PTR'-Datensätze, sie sind das Gegenstück zu den 'A'-Records der Vorwärtsauflösung und ordnen den IP-Adressen die Host-Namen zu. Da die '1' in der letzten Zeile nicht voll qualifiziert ist und mit keinem Punkt endet, wird sie automatisch zu: '1.1.168.192.in-addr.arpa.' ergänzt, und so dem Rechner: 'ipcop.eusterholz.tld' zugeordnet.

Die Zonen-Datei 'db.2.168.192' ist für die Rückwärtsauflösung des '192.168.2.0'-Subnetzes zuständig, sie ist vom Aufbau identisch wie die 'db.2.168.192' mit dem Unterschied das hier die IP-Adressen/Namen des '192.168.2.0'-Netzes eingetragen sind.

Nach der Konfiguration des Nameserver sollte dieser erneut gestartet werden.

Anmerkungen

Beim ersten Start von BIND sollten auf jeden Fall die Meldungen in der log-Datei: '/var/log/syslog' beobachtet werden, evtl. Fehler bei der Konfiguration können so leicht ausgemacht werden.

Zum Testen des Nameservers gilt: es sollte jede Zonen-Datei einmal durchlaufen werden, d.h. es sollte geprüft werden ob ein Rechnername bzw. eine IP-Adresse einer jeden Zone aufgelöst werden kann. Zur Abfrage des DNS ist am besten das Tool: 'nslookup' oder 'dig' zu benutzen (evtl. müssen die Tools mittels 'apt-get install dnsutils' nachinstalliert werden). Bezogen auf das obige Beispiel sollten folgende Abfragen gemacht werden:

  • nslookup -sil emphasis                (z.B. Rechner in der ersten Zone)

  • nslookup -sil emphasis.eusterholz.tld (z.B. Rechner in der ersten Zone)

  • nslookup -sil ntp2.eusterholz.tld     (z.B. Rechner in der ersten Zone)

  • nslookup -sil vision                  (z.B. Rechner in der zweiten Zone)

  • nslookup -sil vision.eusterholz.tld   (z.B. Rechner in der zweiten Zone)

  • nslookup -sil www.eusterholz.tld      (z.B. Rechner in der zweiten Zone)

  • nslookup -sil 192.168.1.20            (z.B. Rechner in der ersten Zone)

  • nslookup -sil 192.168.2.10            (z.B. Rechner in der zweiten Zone)

  • nslookup -sil localhost

  • nslookup -sil 127.0.0.1

  • nslookup -sil www.haxterberg.de       (beliebige www-Adr. im Internet)

  • nslookup -sil 213.191.4.253           (beliebige IP-Adresse im Internet)

Bei den aufgeführten Beispiel-Abfragen werden alle Zonen-Dateien, die in der 'named.conf' und 'named.conf.local' definiert sind durchlaufen, alle Anfragen sollten dabei korrekt beantwortet werden.

Weitere Infos

Homepage: ISC BIND http://www.isc.org/index.pl?/sw/bind/index.php
DNS HOWTO http://www.linuxhaven.de/dlhp/HOWTO/DE-DNS-HOWTO.html
The ISC BIND Nameserver http://www.bind9.net/
Manualseiten zu: bind; named man bind; man named
System-Dokumentation: bind9 /usr/share/doc/bind9

Home ] Nach oben ] Caching-only-NS ] [ Primärer-NS ] Sekundärer-NS ] Client Konfiguration ]

letzte Änderung: 04. Dezember 2008

 

Copyright © 2004 Norbert Eusterholz