Inhalt

5. Eine existierendes Domainbeispiel

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.

5.1 /etc/named.conf (bzw. /var/named/named.conf)

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.

5.2 /var/named/root.hints

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

5.3 /var/named/zone/127.0.0

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.

5.4 /var/named/zone/land-5.com

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.

5.5 /var/named/zone/206.6.177

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.


Inhalt