Leser haben mir vorgeschlagen, dass ich ein existierendes Beispiel einer funktionierenden Domain zusätzlich zu dem Lehrbeispiel hinzufüge.
Ich benutze dieses Beispiel mit Erlaubnis von David Bullock von LAND-5. Diese Dateien stammen vom 24. September 1996 und sind nachträglich von mir editiert worden, damit sie die Bind8-Restriktionen und Erweiterungen enthalten. Also unterscheiden sich diese Daten ein wenig von denen, die man erhält, wenn einer der LAND-5 Nameserver befragt wird.
Hier findet man die Zonenabschnitte, für die zwei benötigten reversen
Zonen: Das 127.0.0-Netz und auch das LAND-5 206.6.177
-Subnetz.
Ausserdem ist eine primary-Zeile für die LAND-5-Forward-Zone land-5.com
enthalten. Ausserdem ist zu beachten, dass David die Dateien nicht in ein
Verzeichnis mit dem Namen pz
legt, wie ich das in dieser HOWTO gemacht
habe. Er benutzt ein Verzeichnis namens zone
.
// Boot-Datei fuer den LAND-5 Nameserver
options {
directory "/var/named";
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "zone/127.0.0";
};
zone "land-5.com" {
type master;
file "zone/land-5.com";
};
zone "177.6.206.in-addr.arpa" {
type master;
file "zone/206.6.177";
};
Sofern man dieses Beispiel in die eigene named.conf
-Datei
packt, wovon abzuraten ist, sollte man bitte auch noch ein
»notify no;
« in die Zonenabschnitte für die zwei
land-5
-Zonen schreiben, um Konflikte zu vermeiden.
Hierbei ist zu beachten, dass diese Datei relativ dynamisch ist. Die hier aufgelistete ist alt. Jetzt sollte besser eine mit dig neu erzeugte benutzt werden, wie bereits beschrieben wurde.
; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;; ., type = NS, class = IN
;; ANSWER SECTION:
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET. 198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE sent: 17 rcvd: 436
Hier ist nur das Minimum enthalten: Der obligatorische SOA-Eintrag und
ein Eintrag, der 127.0.0.1 in localhost
umwandelt. Beide Einträge sind
nötig, allerdings sollte diese Datei nicht mehr enthalten. Sie wird
vermutlich niemals mehr geändert werden müssen, es sei denn der Nameserver
oder die hostmaster-Adresse ändert sich.
@ IN SOA land-5.com. root.land-5.com. (
199609203 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
1 PTR localhost.
Hier sieht man den notwendigen SOA-Eintrag und NS-Einträge. Man kann
erkennen, dass er einen Zweit (Secondary)-Nameserver mit der Adresse
ns2.psi.net
hat. Es sollte übrigens immer ein zweiter Nameserver
als Backup-Server zur Verfügung stehen. Außerdem kann man sehen, dass es
einen Hauptrechner gibt, der land-5
heißt und viele verschiedene
Internetdienste anbietet - und dass dieser als Alternative zu A-Einträgen
mit CNAMEs realisiert wurde.
Der SOA-Eintrag enthält die Informationen über den Ursprung der
Zonendatei (land-5.com
) und dass die Kontaktperson root@land-5.com
ist. hostmaster
ist die meistens benutzte Adresse für die
Kontaktperson. Die Seriennummer ist in dem Format jjjjmmtt, wobei noch die
Seriennummer des laufenden Tages angehängt wird; vermutlich handelt es sich
um die sechste Version der Zonendatei vom 20. September 1996. Man sollte
immer daran denken, dass die Seriennummer monoton ansteigen muss. Da
dieses Beispiel eine einstellige Nummer für die Seriennnummer nutzt,
können maximal neun Änderungen an einem Tag gemacht werden können.
Darum empfehle ich die Verwendung von zwei Stellen für die Seriennummer.
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; serial, todays date + todays serial #
8H ; refresh, seconds
2H ; retry, seconds
1W ; expire, seconds
1D ) ; minimum, seconds
NS land-5.com.
NS ns2.psi.net.
MX 10 land-5.com. ; Primary Mail Exchanger
TXT "LAND-5 Corporation"
localhost A 127.0.0.1
router A 206.6.177.1
land-5.com. A 206.6.177.2
ns A 206.6.177.3
www A 207.159.141.192
ftp CNAME land-5.com.
mail CNAME land-5.com.
news CNAME land-5.com.
funn A 206.6.177.2
;
; Workstations
;
ws-177200 A 206.6.177.200
MX 10 land-5.com. ; Primary Mail Host
ws-177201 A 206.6.177.201
MX 10 land-5.com. ; Primary Mail Host
ws-177202 A 206.6.177.202
MX 10 land-5.com. ; Primary Mail Host
ws-177203 A 206.6.177.203
MX 10 land-5.com. ; Primary Mail Host
ws-177204 A 206.6.177.204
MX 10 land-5.com. ; Primary Mail Host
ws-177205 A 206.6.177.205
MX 10 land-5.com. ; Primary Mail Host
; {Many repetitive definitions deleted - SNIP}
ws-177250 A 206.6.177.250
MX 10 land-5.com. ; Primary Mail Host
ws-177251 A 206.6.177.251
MX 10 land-5.com. ; Primary Mail Host
ws-177252 A 206.6.177.252
MX 10 land-5.com. ; Primary Mail Host
ws-177253 A 206.6.177.253
MX 10 land-5.com. ; Primary Mail Host
ws-177254 A 206.6.177.254
MX 10 land-5.com. ; Primary Mail Host
Bei genauerer Betrachtung der Nameserver von LAND-5, fällt auf, dass die
Rechnernamen immer die Form ws_
nummer haben. Seit einer der
letzten der Bind-4-Versionen achtet der named auf Einschränkungen, welche
Zeichen in einem Rechnernamen vorkommen dürfen. Da die angegeben Namen mit
Bind-8 auf keinen Fall funktionieren würden, habe ich in der HOWTO die
Unterstriche »_« durch einen Bindestrich »-« ersetzt.
Ich sollte noch darauf hinweisen, dass die Workstations keine individuellen Namen haben, sondern aus einem Prefix mit den angehängten letzten beiden Teilen der IP-Adresse bestehen. Das vereinfacht die Wartung zwar erheblich, es ist aber sehr unpersönlich.
Man kann außerdem sehen, dass funn.land-5.com
ein Alias für
land-5.com
ist, dass aber ein A-Eintrag anstelle eines CNAME-Eintrages
gewählt wurde. Wie ich oben bereits sagte, ist diese Vorgehensweise der
Nutzung von CNAMES vorzuziehen.
Diese Datei wird weiter unten beschrieben.
@ IN SOA land-5.com. root.land-5.com. (
199609206 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS land-5.com.
NS ns2.psi.net.
;
; Servers
;
1 PTR router.land-5.com.
2 PTR land-5.com.
2 PTR funn.land-5.com.
;
; Workstations
;
200 PTR ws-177200.land-5.com.
201 PTR ws-177201.land-5.com.
202 PTR ws-177202.land-5.com.
203 PTR ws-177203.land-5.com.
204 PTR ws-177204.land-5.com.
205 PTR ws-177205.land-5.com.
; {Many repetitive definitions deleted - SNIP}
250 PTR ws-177250.land-5.com.
251 PTR ws-177251.land-5.com.
252 PTR ws-177252.land-5.com.
253 PTR ws-177253.land-5.com.
254 PTR ws-177254.land-5.com.
Die reverse Zone ist der unbeliebteste Teil der Einrichtung eines
Nameservers. Sie dient dazu, den Rechnernamen herauszufinden, wenn nur die
IP-Adresse bekannt ist. Wenn man zum Beispiel einen IRC-Server in Norwegen
betreibt und nur Clients aus Norwegen und anderen Skandinavischen Ländern
zulassen möchte, hat man die Möglichkeit, durch eine C-Bibliothek die
IP-Nummer der
gerade verbundenen Maschine zu bekommen, da diese mit jedem Datenpaket über
das Netz geschickt wird. Jetzt kann man eine Funktion namens
gethostbyaddr()
aufrufen, die den Namen anhand einer
übergebenen IP-Nummer herausfindet. gethostbyaddr()
fragt dazu
einen DNS-Server, der dann das DNS-System nach einem zu der
IP-Nummer gehörigen Namen durchsucht. Wenn die Verbindung zum Beispiel
von ws-177200.land-5.com ausgeht, liefert die C-Funktion die IP-Adresse
206.6.177.200. Um den Namen des Rechners herauszufinden, müssen wir
200.177.6.206.in-addr.arpa
finden. Der DNS-Server geht dann über die
arpa.
-Server, dann findet er in-addr.arpa.
-Server, folgt der Route
über 206, 6 und zum Schluss findet er den Server für die
177.6.206.in-addr.arpa
-Zone bei LAND-5. Dort wird er schlussendlich die
Antwort bekommen, dass ein »PTR ws-177200.land-5.com
«-Eintrag
existiert. Das bedeutet, dass der zu der IP-Nummer 206.6.177.200
gehörende
Name ws-177200.land-5.com
ist. Genau wie die obige Beschreibung ist auch
das ein wenig fiktiv - entspricht aber ungefähr dem tatsächlichen Ablauf.
Zurück zum IRC-Server-Beispiel. Der IRC-Server nimmt nur Verbindungen aus
Skandinavischen Ländern wie *.no
, *.se
oder *.dk
an. Der
Rechner ws-177200.land-5.com
passt zu keinem der genannten Länder,
darum wird der Server die Verbindung ablehnen. Wenn es keine
reverse Umwandlung für 206.6.177.200
durch die inn-addr.arpa
-Zone
gäbe, würde der Server den Rechnernamen nicht herausfinden können und
müsste die IP-Nummer 206.6.177.200
mit *.no
, *.se
und *.dk
vergleichen - keine Domain würde zutreffen.
Es gibt viele Leute, die behaupten, dass reverse Mappings nur für Server wichtig sind oder überhaupt keinen Sinn haben. Das ist falsch: Viele FTP, News, IRC und sogar einige HTTP (WWW)-Server akzeptieren keine Verbindungen von Rechnern ohne Namen. Also sind reverse Mappings ein muss bei der Verwaltung eines eigenen Nameservers.