Zonendatei

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

EineZonendateiist Teil der Konfiguration des NameserversBINDfür dasDomain Name System.Sie besteht aus einer Liste vonResource Records(RR). Eine Zonendatei beschreibt eineZonevollständig. Es muss genau einSOA Resource Recordund mindestens einNS Resource Recordvorhanden sein. Der SOA-RR befindet sich meist am Anfang einer Zonendatei.

Neben den Syntax-Regeln der einzelnen RR-Typen definieren dieRFC-Standards verschiedeneglobale Syntax-Regeln.Hauptziel dieser globalen Regeln ist, die Lesbarkeit von Zonendateien zu verbessern. Ein Syntax-Fehler führt meist dazu, dass die gesamte Zonendatei als unbrauchbar angesehen wird. Der Nameserver verhält sich dann ähnlich, als wäre diese Zone gar nicht vorhanden. Auf DNS-Anfragen reagiert er mit einer SERVFAIL-Fehlermeldung (wenn die Zone tatsächlich nicht vorhanden ist, reagiert er mit NXDOMAIN).

Regel 1 – Leerzeilen

[Bearbeiten|Quelltext bearbeiten]

Leerzeilen sind zulässig.

Regel 2 – Kommentare

[Bearbeiten|Quelltext bearbeiten]

Kommentare werden durch;(Semikolon) eingeleitet. Alles, was rechts von einem;auftaucht, gilt als Kommentar. Kommentare werden beimZonentransfernicht mitübertragen.

Regel 3 – mehrzeilige Anweisungen

[Bearbeiten|Quelltext bearbeiten]

Soll ein Resource-Record auf mehrere Zeilen verteilt werden, so müssen Klammern verwendet werden.

Beispiel:

example. 1800 IN SOA ns1.example. mailbox.example. (
100; Seriennummer
300; Refresh Time
100; Retry Time
6000; Expire Time
600; negative Caching Zeit
)
example. 1800 IN NS ns1.example.
ns1.example. 1800 IN A 172.27.182.17
ns1.example. 1800 IN AAAA 2001:db8::f:a
example. 1800 IN A 192.168.1.2
example. 1800 IN AAAA 2001:db8::1:2

Regel 4 – @ als Platzhalter für Zonennamen

[Bearbeiten|Quelltext bearbeiten]

Erscheint der Name der Zone – der sogenannteOrigin– ohne Extension isoliert, so darf er durch ein „@“ersetzt werden.

BeispielDateiexample:

@ 1800 IN SOA ns1.example. mailbox.example. (
100; Seriennummer
300; Refresh Time
100; Retry Time
6000; Expire Time
600; negative Caching Zeit
)
@ 1800 IN NS ns1.example.
@ 1800 IN A 1.2.3.4
@ 1800 IN AAAA 2001:db8::1:2:3:4
alias.example. 1800 IN CNAME @
ns1.example. 1800 IN A 172.27.182.17
ns1.example. 1800 IN AAAA 2001:db8::53
example. 1800 IN A 192.168.1.2
example. 1800 IN AAAA fd00::1:2

Regel 5 – Zonenname darf weggelassen werden

[Bearbeiten|Quelltext bearbeiten]

Erscheint der Origin (Name der Zonen) am Ende eines Namens, so darf er weggelassen werden. Man beachte den Unterschied, der durch denweggelassenenPunkt am Ende des Namens entsteht: Namenmitanhängendem Punkt sind vollqualifiziert, und NamenohnePunkt sindimmerrelativ zur Origin, wie man an den letzten beiden Beispielen sieht.

BeispielZoneexample:

@ 1800 IN SOA ns1 mailbox (
100; Seriennummer
300; Refresh Time
100; Retry Time
6000; Expire Time
600; negative Caching Zeit
)
@ 1800 IN NS ns1
ns1 1800 IN A 172.27.182.17
www 1800 IN A 192.168.1.2
abteilung 1800 IN A 192.168.1.3; bedeutet abteilung.example
example 1800 IN A 192.168.1.4; bedeutet wegen fehlenden Punkts example.example

Regel 6 – nur der erste Name muss angegeben werden

[Bearbeiten|Quelltext bearbeiten]

Haben zwei oder mehr aufeinanderfolgende RRs den gleichen Namen, so braucht nur der erste angegeben zu werden.

ns1.example. 1800 IN A 172.27.182.17
1800 IN AAAA 2001:db8::53
example. 1800 IN A 192.168.1.2
1800 IN AAAA fd00::1:2

Regel 7 – „IN “muss nur einmal angegeben werden

[Bearbeiten|Quelltext bearbeiten]

Das Klassenfeld „IN“braucht nur beim ersten RR angegeben zu werden.

Beispiel:

@ 1800 IN SOA ns1 mailbox (
100; Seriennummer
300; Refresh Time
100; Retry Time
6000; Expire Time
600; negative Caching Zeit
)
1800 NS ns1; der Name darf weggelassen werden
ns1 1800 A 172.27.182.17
www 1800 A 192.168.1.2

Ist in einem RR kein TTL (Time to live) vorhanden, so wird der Wert aus der $TTL Variable am Anfang der Zonendatei vor demSOA Ressource Recordgenommen. Vor Bind Version 8.2 kam dieser TTL-Wert aus dem letzten Feld imSOA Resource Record(minimum TTL), welcher ab Bind Version 8.2 durch die „negative cachingTTL “ersetzt wurde und der $TTL vor dem SOA-RR an dessen Stelle eingeführt wurde.

Beispiel:

$TTL 1234
@ IN SOA ns1 mailbox 100 300 100 6000 10800
NS ns1
ns1 A 172.27.182.17; TTL=1234 aus $TTL
www 20 A 192.168.1.2; nur hier gilt TTL=20
test A 1.2.3.4; TTL=1234 aus $TTL

Die Einheit für Zeitangaben wie z. B. TTL ist Sekunden (ersichtlich in Ripe-203[1]). Die Spezifikation des TTL Feldes findet sich in RFC 2308.[2]

Regel 9 – $ORIGIN

[Bearbeiten|Quelltext bearbeiten]

Standard-Origin ist der Zonenname, wie er in der Dateinamed.conf.localdefiniert wurde. Mit der$ORIGIN-Anweisung können beliebige andere Origins definiert werden. Ein neu definierter Origin ist für alle folgenden Zeilen bis zur nächsten$ORIGIN-Anweisung gültig.

BeispielZoneexample:

$TTL = 1234
@ IN SOA ns1 mailbox 100 300 100 6000 1800
NS ns1
ns1 A 172.27.182.17
www A 192.168.1.2
$ORIGIN sub.example.
xxx A 1.2.3.4

Regel 10 – $TTL

[Bearbeiten|Quelltext bearbeiten]

Mit der$TTL-Anweisung kann ein Default-TTL-Wert vorgegeben werden.

Beispiel:

$TTL 1800
@ IN SOA ns1 mailbox 100 300 100 6000 600
NS ns1
ns1 A 172.27.182.17

Regel 11 – $INCLUDE

[Bearbeiten|Quelltext bearbeiten]

Mit$INCLUDE-Anweisungen können weitere Dateien eingebunden werden. Diese müssen natürlich eine korrekte Syntax aufweisen. Die$INCLUDE-Anweisung hat nur lokale Bedeutung. Beim Zonentransfer wird die expandierte Zone übertragen.

Beispiel:

@ IN SOA ns1 mailbox 100 300 100 6000 1800
NS ns1
ns1 A 172.27.182.17
$INCLUDE /var/named/mx-records.txt
$INCLUDE /var/named/a-records.txt

Beim bekanntenBIND-Nameserver existiert außerdem die$GENERATE-Anweisung, mit der Resource-Records automatisch erzeugt werden können.

  • Zonefile erstellen(MementodesOriginalsvom 12. November 2020 imInternet Archive)
  1. Peter Koch:Recommendations for DNS SOA Values.RIPE DNS Working Group, Juni 1999,abgerufen am 15. April 2013.
  2. Mark Andrews:RFC2308Negative Caching of DNS Queries (DNS NCACHE).März 1998 (englisch).