Ein DNS-Zonen-Eintrag ist der Ort im Namesystem, an dem die Zuordnung von Namen zu Adressen tatsächlich liegt. Wer eine Domain betreibt, braucht ein Verständnis der Zonendatei – nicht, weil man sie täglich ändert, sondern weil Fehler dort den ganzen Dienst unsichtbar machen.
Der Aufbau einer Zone
; /etc/bind/zones/example.org.zone
; ACHTUNG: Ein Zonensatz endet mit einem Punkt!
; Ohne Punkt wird der Zonenname automatisch angehaengt.
$TTL 3600
$ORIGIN example.org.
@ IN SOA ns1.example.org. hostmaster.example.org. (
2026092601 ; Serial - bei JEDER Aenderung erhoehen!
3600 ; Refresh - wie oft Sekundaer nachfragt
900 ; Retry - Wartezeit nach Fehlversuch
1209600 ; Expire - ab wann Zone als ungueltig gilt
300 ) ; Minimum/negatives TTL
; Nameserver
@ IN NS ns1.example.org.
@ IN NS ns2.example.org.
; Adressen
@ IN A 203.0.113.10
ns1 IN A 203.0.113.11
ns2 IN A 198.51.100.11
www IN A 203.0.113.10
mail IN A 203.0.113.20
api IN A 203.0.113.30
; IPv6
@ IN AAAA 2001:db8::10
www IN AAAA 2001:db8::10
; Aliasname (CNAME) - MUSS auf einen Namen zeigen, nie auf eine A/AAAA
www2 IN CNAME www
ftp IN CNAME www
; Ein CNAME darf NICHT am Zonenursprung (@) stehen!
; Dort sind SOA und NS vorgeschrieben, und ein CNAME
; schliesst andere Eintraege desselben Namens aus.
; Mail
@ IN MX 10 mail.example.org.
@ IN MX 20 backup-mail.example.net.
; Die Zahl ist die Praeferenz - kleine Zahl = bevorzugt.
; Der MX-Wert MUSS ein Name sein, keine Adresse!
; Text-Eintraege
@ IN TXT "v=spf1 mx a:mail.example.org -all"
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. "
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBg..."
; Wildcard - Vorsicht!
*.dev IN A 203.0.113.40
; Faengt ALLE nicht definierten Namen unter dev.example.org ab.
; Praktisch, aber es verdeckt Tippfehler: "apti.exmaple.org"
; statt "api" koennte ploetzlich auf einen Testserver zeigen.
; Dienst-Eintraege
_sip._tcp IN SRV 10 60 5060 sipserver.example.org.
; Format: Prioritaet Gewicht Port Ziel
Die wichtigsten Eintragstypen
- A / AAAA: Name zu IPv4- bzw. IPv6-Adresse.
- CNAME: Alias auf einen anderen Namen. Nur für Nicht-Ursprungsnamen, nie neben anderen Einträgen desselben Namens.
- MX: Zustellungsziel für Mail, mit Priorität.
- TXT: Freitext. Wird für SPF, DKIM, DMARC und Domain-Bestätigungen verwendet.
- NS: Welche Nameserver sind für diese Zone zuständig?
- SOA: Verwaltungsdaten der Zone – genau einer je Zone.
- SRV: Dienst, Protokoll, Port, Ziel.
- PTR: Rückwärtssuche, liegt in einer eigenen Zone (
in-addr.arpa) und wird vom Provider gepflegt. - CAA: Welche Zertifizierungsstellen dürfen Zertifikate für die Domain ausstellen? Eine wirksame Maßnahme gegen missbräuchliche Ausstellung.
@ IN CAA 0 issue "letsencrypt.org" @ IN CAA 0 iodef "mailto:Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. "
Der Seriennummer-Fehler
Dies ist der häufigste Fehler im Zonenbetrieb: Wird die Seriennummer nicht erhöht, holen Sekundärserver die Änderung nie ab. Sie haben plausibel den Eindruck, aktuell zu sein – und liefern weiterhin alte Daten.
# Konvention: JJJJMMTAGxx (2026092601 = 2026-09-26, erste Aenderung)
# Vorteil: von Hand lesbar, gut zu vergleichen.
# Ablauf nach jeder Aenderung
named-checkzone example.org /etc/bind/zones/example.org.zone
rndc reload example.org
# Auf Sekundaerservern pruefen - NICHT auf dem Primaer!
dig @ns2.example.org example.org SOA +short | awk '{print $3}'
dig @ns2.example.org www.example.org A +short
# Weicht die Seriennummer ab, ist die Zone nicht uebertragen.
# Protokoll: journalctl -u named | grep -i 'transfer\|xfer'
# Immer ueberpruefen, was im Cache steckt und was tatsaechlich
# ausgeliefert wird (nicht vom lokalen Resolver!)
dig @8.8.8.8 www.example.org A
dig @1.1.1.1 www.example.org A
dig +trace www.example.org
Prüfen: der Ablauf
# 1. Zonendatei syntaktisch pruefen - VOR dem Laden
named-checkzone example.org /etc/bind/zones/example.org.zone
# Ausgabe beim Erfolg: "example.org.zone: loaded serial 2026092601"
# Fehler werden mit Zeilennummer gemeldet.
# 2. Konfiguration pruefen
named-checkconf
named-checkconf -z # alle Zonen laden und pruefen
# 3. Laden
rndc reload
journalctl -u named -n 30 --no-pager
# 4. Vom zustaendigen Server direkt abfragen (+norecursion!)
dig @ns1.example.org example.org SOA +norecurse
dig @ns1.example.org www.example.org A +norecurse
# Ohne +norecurse koennte eine zwischengespeicherte Antwort
# den falschen Eindruck erwecken.
dig @ns1.example.org example.org AXFR | head -20
# Zonenuebertragung - funktioniert nur, wenn erlaubt.
# Das ist auch der Test fuer Sekundaerserver.
# 5. Ueber die Oeffentlichkeit pruefen
dig +short NS example.org
dig +short www.example.org
dig +short MX example.org
dig +short TXT example.org
dig +dnssec www.example.org
# 6. Nach der Umstellung: TTL-Erwartung
# Alte Eintraege bleiben bis zum Ablauf der TTL im Cache der Resolver.
# Deshalb: TTL VOR der Umstellung senken (z. B. 5 Minuten),
# umstellen, warten, danach wieder erhoehen.
Absichten des Zoneninhalts: Split-Horizon
# Fuer interne und externe Sicht unterschiedliche Antworten:
# Extern: www -> oeffentliche Adresse
# Intern: www -> interne Adresse (oder anderes Ziel)
# Umsetzung ueber zwei Zonendateien mit gleichem Namen
# auf unterschiedlichen Servern (view in BIND).
# Fallstrick: Ein Name, der intern anders aufgeloest wird,
# muss sorgfaeltig gepflegt werden. Weichen beide Fassungen
# auseinander, ist die Fehlersuche muehsam - weil der Fehler
# von der Herkunft der Abfrage abhaengt.
# Pruefen deshalb IMMER gegen einen oeffentlichen Resolver UND
# gegen den eigenen internen Server, nie nur gegen einen.
Betriebsregeln
- Zonendateien im Versionsverwaltungssystem halten. Wer eine Zone per Hand ändert, weiß in drei Monaten nicht mehr, was wann geändert wurde.
- Serial erhöhen ist Pflicht. Am besten automatisch aus dem Datum erzeugen.
- Zwei Nameserver in unterschiedlichen Netzen. Ein zweiter Nameserver in derselben Region oder beim selben Anbieter hilft bei einem Teilausfall nicht.
- TTL bewusst wählen. Kurz (300) bei Diensten, die umziehen sollen – lang (86400) bei stabilen Einträgen. Kurze TTL bedeutet mehr Last.
- DNSSEC in Betracht ziehen. Verhindert Antwortmanipulation. Erfordert disziplinierte Schlüsselverwaltung – ein Fehler dort kann die gesamte Domain unerreichbar machen.
- Keine zusammengefassten Wildcards ohne Not. Ein Wildcard verdeckt Tippfehler und lässt unbeabsichtigte Namen erreichbar werden.
- CNAME nicht überstrapazieren. Ein CNAME auf einen dynamischen Zielnamen bricht die gesamte Kette, wenn dort ein Fehler auftritt.
- Prüfen nach der Übertragung, nicht nach dem Speichern. Die Sekundärserver und ein öffentlicher Resolver sind die eigentliche Kontrolle.
Die häufigsten Fehler
- Fehlender Punkt am Ende.
www IN CNAME www.example.org(ohne Punkt) wird zuwww.example.org.example.org. Der Klassiker. - Serial nicht erhöht. Siehe oben.
- CNAME am Zonenursprung. Unzulässig – dort stehen SOA und NS.
- CNAME neben anderen Einträgen. Ein Name mit CNAME darf keinen weiteren Eintrag haben.
- Klammern falsch gesetzt. Eine vergessene schließende Klammer im SOA-Eintrag führt dazu, dass die Datei unerwartet weiterläuft – mit verwirrenden Fehlermeldungen.
- Tab statt Leerzeichen vergessen. Nicht zwingend ein Fehler, aber die Ursache für schwer lesbare Fehlermeldungen.
- Keine Klammer- und Längenprüfung vor dem Laden.
named-checkzonekostet eine Sekunde und verhindert Ausfälle. - Port 53 blockiert. Wenn Sekundärserver die Zone nicht abholen können, ist nicht die Zone falsch – sondern UDP/TCP 53 von der Gegenstelle blockiert. Zuerst die Erreichbarkeit prüfen.
Verwandte Grundlagen: DNS, DHCP, DNSSEC, dig und nslookup.