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
[ Home ] [ Nach oben ] [ Caching-only-NS ] [ Primärer-NS ] [ Sekundärer-NS ] [ Client Konfiguration ]
letzte Änderung:
04. Dezember 2008 |