Verwalten der Zonendaten: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(jetzt nutzbar)
K (Link Kerndoku)
 
(84 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{HSDoku-Links}}
{{Kerndoku|https://www.hostsharing.net/doc/managed-operations-platform/zonefile/}}


 
Das Zonenfile für eine Domain enthält die Konfiguration des Domain Name Service ([[DNS]]), d.h. der [[Nameserver]] der Domain. Es wird hinterlegt, welche Hostnamen innerhalb der Domain existieren und auf welche IP-Adressen diese zeigen. Außerdem wird hierüber auch gesteuert, an welches System Mails für die Domain geliefert werden sollen. Für einfache und unkomplizierte Änderungen bitte in [[Simple Zonefile Howto]] schauen.
Das Zonenfile für eine Domain enthält die Konfiguration des Domain Name Service (DNS), d.h. der Nameserver der Domain. Es wird hinterlegt, welche Hostnamen innerhalb der Domain existieren und auf welche IP-Adressen diese zeigen. Außerdem wird hierüber auch gesteuert, an welches System Mails für die Domain geliefert werden sollen.


{{Textkasten|rot|Achtung|Aufgrund der zentralen Bedeutung sollten Änderungen nur mit Vorsicht vorgenommen werden, da eine fehlerhafte Einstellung dazu führen kann, dass die Webseite nicht mehr im Internet abgerufen werden kann oder Mails verloren gehen!}}
{{Textkasten|rot|Achtung|Aufgrund der zentralen Bedeutung sollten Änderungen nur mit Vorsicht vorgenommen werden, da eine fehlerhafte Einstellung dazu führen kann, dass die Webseite nicht mehr im Internet abgerufen werden kann oder Mails verloren gehen!}}


== Aktives Zonefile ==


== aktives Zonefile ==
Die gerade aktive Konfiguration einer Domain example.com ist in /etc/bind/pri.example.com zu finden ([[Zonefile]]).


Das gerade aktive Konfiguration einer Domain example.com ist in /etc/bind/pri.example.com zu finden (Zonefile).
Im Standardfall sieht es vollständig expandiert wie folgt aus:


Es sieht standardmäßig in etwa wie folgt aus:
<pre><nowiki>example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (
                1303649373      ; serial secs since Jan 1 1970
                6H              ; refresh (>=10000)
                1H              ; retry (>=1800)
                1W              ; expire
                1H              ; minimum
)


<pre><nowiki>
example.com.    IN      NS      dns1.hostsharing.net.
$TTL 4H
example.com.    IN      NS      dns2.hostsharing.net.
example.org. IN SOA dns1.hostsharing.net. hostmaster.hostsharing.net. (
example.com.   IN     NS      dns3.hostsharing.net.
1242748945 ; serial secs since Jan 1 1970
 
6H ; refresh (>=10000)
example.com.    IN      MX      30 mailin1.hostsharing.net.
1H ; retry (>=1800)
example.com.    IN      MX      30 mailin2.hostsharing.net.
1W ; expire
example.com.    IN      MX      30 mailin3.hostsharing.net.
1H ; minimum
 
)
example.com.    IN      A      83.223.95.160
example.com.    IN      AAAA    2a01:37:1000::53df:5fa0:0


IN NS dns1.hostsharing.net.
example.com.   IN     TXT    "v=spf1 include:spf.hostsharing.net ?all"
IN NS dns2.hostsharing.net.
IN NS dns3.hostsharing.net.


IN MX 30 xyz00.hostsharing.net.
*.example.com.  IN     MX     30 mailin1.hostsharing.net.
IN MX 80 backupmx.hostsharing.net.
*.example.com.  IN     MX     30 mailin2.hostsharing.net.
*.example.com.  IN      MX      30 mailin3.hostsharing.net.


IN A 83.223.95.30
*.example.com.  IN     A       83.223.95.160
*.example.com.  IN      AAAA    2a01:37:1000::53df:5fa0:0


www IN A 83.223.95.30
*.example.com.  IN     TXT    "v=spf1 include:spf.hostsharing.net ?all"
ftp IN A 83.223.95.30
pop3 IN A 83.223.95.30
mail IN A 83.223.95.30
mysql IN A 83.223.95.30
pgsql IN A 83.223.95.30
*.example.org.  IN A 83.223.95.30
</nowiki></pre>
</nowiki></pre>


Der erste Block SOA definiert die "Start Of Authority" Ressource. Der wichtigste Eintrag hier ist die Seriennummer. Diese wird von den DNS-Servern benutzt, um eine Änderung zu erkennen. Deshalb muss diese Nummer bei jeder Anpassung erhöht werden, sonst wird die Änderung nicht vollständig im Internet verbreitet. Der konkrete Wert ist nicht wichtig, so dass man durchaus auch einfach die dort stehende Zahl um eins erhöhen kann. In der Regel verwenden wir hier die Anzahl der Sekunden seit 1970, die für den Platzhalter {SIO} eigetragen wird.
== Logfile und Kontrolle==


== Änderungen ==
Die Logfiles des Nameservers sind im Verzeichnis /var/log/named einsehbar. Das aktuelle Log wird unter dem Namen named.log angelegt. Dieses wird beim Neustart des DNS-Servers immer neu angelegt und zeigt bei einer erfolgreichen Änderung etwa folgenden Inhalt:


Domainadmins können Änderungen beauftragen. Dafür ist ein vollständiges Zonefile im Konfigurationsverzeichnis etc der Domain abzulegen.
  Oct 11 18:32:21.400 info: zone example.org/IN: loaded serial 1065889567
  Oct 11 18:32:21.435 info: zone example.org/IN: sending notifies (serial 1065889567)
  Oct 11 18:32:21.755 info: client 213.133.116.2#57100: transfer of 'example.org/IN':
  AXFR-style IXFR started
  Oct 11 18:32:22.264 info: client 62.75.149.27#45282: transfer of 'example.org/IN':
  AXFR-style IXFR started
 
Die Zeilen bedeuten jeweils:
 
* Das geänderte Zonefile wurde vom DNS-Server erfolgreich geladen
* Der lokale Server sendet eine Benachrichtigung an die Secondaries, damit diese die Änderung ebenfalls übernehmen können.


Am besten man beginnt mit der folgenden unversellen Vorlage. Sie enthält Platzhalter, die bei der Übernahme der Konfiguration vom HS Robot automatsch mit den aktuellen werten ersetzt werden:
Tippfehler oder falsche Angaben im Zonefile werden hier ebenfalls gemeldet.


<pre>
<pre>
$TTL {TTL}
  -------- Original-Nachricht --------
{DOM_HOSTNAME}. IN SOA {HS_DNS1_HOSTNAME}. hostmaster.hostsharing.net. (
  Betreff: [Global] DNS Zonenfile Änderungen
                {SIO} ; serial secs since Jan 1 1970  
  Datum: Thu, 4 Mar 2010 08:30:34 +0100
                6H              ; refresh (>=10000)
 
                1H              ; retry (>=1800)
  Moin Moin,
                1W              ; expire
 
                1H              ; minimum
  aus gegebenem Anlass: Immer wieder kommt es vor, dass jemand sein
                        )
  Zonenfile ändert, und es (scheinbar) funktioniert. Tage oder Wochen
; please read https://wiki.hostsharing.net/index.php?title=Domains:Verwalten_der_Zonendaten
  später dann sind die Domains nicht mehr erreichbar und es heißt "in den
                        IN     NS     {HS_DNS1_HOSTNAME}.
  letzten ... Tagen/Wochen habe ich aber gar nichts mehr geändert". Das mag
                        IN     NS     {HS_DNS2_HOSTNAME}.
  auch gut sein - ist mir auch selbst schon passiert, gerade wenn es um
                        IN     NS     {HS_DNS3_HOSTNAME}.
  "mal eben schnell noch ... " ging.
                        IN     MX 30 mail
 
                        IN     MX 80  {MX2_HOSTNAME}.
  Nur ist der Fehler dann aber schon vor Tagen/Wochen passiert, und solange
                        TXT "v=spf1 +a +mx ~all"
  die Datensätze nicht abgelaufen (expired) sind, sind sie - die alten -
; see http://spf.pobox.com/ for details on spf record
  noch im DNS System vorhanden. Die neuen aber, die aus der o.g. Änderung,
                        IN      A      {DOM_IPNUMBER}
  sind bei einem Fehler im Zonenfile nie ins DNS System hinein gekommen!
www                    IN     A       {DOM_IPNUMBER}
 
ftp                    IN      A      {FTP_IPNUMBER}
  Was also tun? Zunächst kann man nach einer Änderung in einer
pop3                    IN     A      {POP3_IPNUMBER}
  Shell beobachten, ob es zu Fehlermeldungen kommt:
imap                    IN     A      {IMAP_IPNUMBER}
 
mail                    IN      A      {SMTP_IPNUMBER}
  tail -f /var/log/named/named.log
mysql                  IN     A      {MYSQL_IPNUMBER}
 
pgsql                  IN      A      {PGSQL_IPNUMBER}
  oder ggf nur Zeilen, in denen die eigene Domain (z.B. example.com)
*.{DOM_HOSTNAME}.       IN     A       {DOM_IPNUMBER}
  vorkommt:
 
  tail -f /var/log/named/named.log | grep example.com
 
  Diese Log-Datei ist daher genau aus diese Grunde auch auf dem
  Server lesbar.
 
  Auch sollte die in den DNS-Servern befindliche Seriennummer mit der
  aktuellen in der Zonendatei verglichen werden:
 
  dig -t SOA @dns1 example.com | grep '^example.com.*SOA' | awk '{ print $7 }'
 
  grep serial /etc/bind/pri.example.com | awk '{ print $1 }' 
</pre>
 
== Eigenes Zonenfile ==
 
Wer ein eigenes Zonefile installieren möchte, um diverse Anwendungsfälle zu realisieren (Verweise auf extern gelagerte Subdomains, Anbindung externer Server, Verwendung eigener Mailserver), kann '''pro Domain''' ein eigenes Zonefile erstellen. Dieses befindet sich im Verzeichnis '''~/doms/example.com/etc''' mit den Namen '''pri.example.com''' (example.com steht hier als Beispiel für den wahren Domainnamen). Ein Neuanlegen oder eine Änderung dieser Datei führt zu einer baldigen Änderung der Nameservereinträge für die Domain.
 
{{Textkasten|rot|Warnung!|Das nicht sachgemäße Erstellen eines eigenen Zonefiles kann zur Nichterreichbarkeit der eigenen Domain und zum Verlust von Mails führen!}}
 
Eine Anleitung für die eher einfachen und oft gewünschten Änderungen findet sich in [[Simple Zonefile Howto]].
 
Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern der DNS-Konfiguration, ohne dass der Domain-Admin sein Zonefile anpassen muss.
 
=== Komplexe Platzhalter ===
 
<pre>
{DEFAULT_ZONEFILE} :=
{HEADER}
{SOA_RR}
{NS_RR}
{MX_RR}
{A_RR}
{WILDCARD_MX_RR}
{WILDCARD_A_RR}
 
{HEADER} :=
$TTL {TTL}
 
{SOA_RR} :=
{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
{SIO} ; serial secs since Jan 1 1970
{REFRESH} ; refresh (>=10000)
{RETRY} ; retry (>=1800)
{EXPIRE} ; expire
{MINIMUM} ; minimum
)
 
{NS_RR} :=
{DOM_HOSTNAME}. IN NS {DNS1_HOSTNAME}.
{DOM_HOSTNAME}. IN NS {DNS2_HOSTNAME}.
{DOM_HOSTNAME}. IN NS {DNS3_HOSTNAME}.
 
{MX_RR} :=
{DOM_HOSTNAME}. IN MX 30 {MX1_HOSTNAME}.
{DOM_HOSTNAME}. IN MX 30 {MX2_HOSTNAME}.
{DOM_HOSTNAME}. IN MX 30 {MX3_HOSTNAME}.
 
{A_RR} :=
{DOM_HOSTNAME}. IN A {DOM_IPNUMBER}
 
{WILDCARD_MX_RR} :=
*.{DOM_HOSTNAME}. IN MX 30 {MX1_HOSTNAME}.
*.{DOM_HOSTNAME}. IN MX 30 {MX2_HOSTNAME}.
*.{DOM_HOSTNAME}. IN MX 30 {MX3_HOSTNAME}.
 
{WILDCARD_A_RR} :=
*.{DOM_HOSTNAME}. IN A {DOM_IPNUMBER}
</pre>
</pre>


=== Atomare Platzhalter ===


<pre>
{TTL} := 6H
{SOA_HOSTNAME} := <HIVE>.hostsharing.net
{SOA_EMAIL}:= hostmaster.hostsharing.net
{SIO} := <SEKUNDEN>
{REFRESH} := 6H
{RETRY} := 1H
{EXPIRE} := 1W
{MINIMUM} := 1H


Nach jeder Änderung an einem selbstverwalteten Zonefile muss eine Datei /home/doms/example.com/etc/zonefile.upd angelegt, bzw. deren Zeitstempel aktualisiert werden.  
{DNS1_HOSTNAME} := dns1.hostsharing.net
{DNS2_HOSTNAME} := dns2.hostsharing.net
{DNS3_HOSTNAME} := dns3.hostsharing.net


touch /home/doms/example.com/etc/zonefile.upd
{MX1_HOSTNAME} := mailin1.hostsharing.net
{MX2_HOSTNAME} := mailin2.hostsharing.net
{MX3_HOSTNAME} := mailin3.hostsharing.net


Dann dauert es noch einige Minuten, bis die Änderungen von unserem DNS-Servern übernommen werden. Bis die DNS-Caches der Welt eine Änderung mitbekommen, kann es natürlich noch etwas länger dauern. (Entsprechend der Zeitangaben im oberen Teil des zuvor aktiven Zonefiles.)
{DOM_HOSTNAME} := <FQDN>
{DOM_IPNUMBER} := <IP>


'''Hinweis:'''
{DKIM_RR}      :=      <siehe https://wiki.hostsharing.net/index.php?title=DKIM>
{SPF_RR}      :=      "v=spf1 include:spf.hostsharing.net ?all"


Wenn man ein eigenes Zonefile in /home/doms/example.org/etc löscht, bleibt in den HS Nameservern der letzte Stand erhalten! Falls man für eine Domain wieder ein Hostsharing-Standard-Zonefile haben möchte, muss man ein leeres (= 0 Bytes) Zonefile anlegen:


echo -n > /home/doms/example.org/etc/pri.example.org
</pre>


Das -n ist wichtig, sonst ist die Datei nicht wirklich leer und es gibt Fehlermeldungen!
Hierbei stehen
* <Sekunden> für die Anzahl der Sekunden, welche seit dem 01.01.1970 vergangen sind
* <FQDN> für den vollständigen, qualifizierten Domainnamen der Domain
* <IP> für die der Domain zugewiesene IP-Adresse


== Logfile ==
Diese Werte werden von Hostsharing verwaltet.


Die Logfiles des Nameservers sind im Verzeichnis /var/log/named einsehbar. Das aktuelle Log wird unter dem Namen named.log angelegt. Dieses wird beim Neustart des DNS-Servers immer neu angelegt und zeigt bei einer erfolgreichen Änderung etwa folgenden Inhalt:
=== Expansion der Platzhalter ===


  Oct 11 18:32:21.400 info: zone example.org/IN: loaded serial 1065889567
Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird folgermaßen expandiert.
  Oct 11 18:32:21.435 info: zone example.org/IN: sending notifies (serial 1065889567)
  Oct 11 18:32:21.755 info: client 213.133.116.2#57100: transfer of 'example.org/IN': AXFR-style IXFR started
  Oct 11 18:32:22.264 info: client 62.75.149.27#45282: transfer of 'example.org/IN': AXFR-style IXFR started


Die Zeilen bedeuten jeweils:
Zunächst werden die komplexen Platzhalter ersetzt:


* Das geänderte Zonefile wurde vom DNS-Server erfolgreich geladen
<pre>
* Der lokale Server sendet eine Benachrichtigung an die Secondaries, damit diese die Änderung ebenfalls übernehmen können.
$TTL {TTL}
* Die Secondaries 213.133.116.2 und 62.75.149.27 holen die geänderten Daten ab. (Pro Secondary jeweils ein Eintrag.)


Tippfehler oder falsche Angaben im Zonefile werden hier ebenfalls gemeldet.
{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
{SIO} ; serial secs since Jan 1 1970
{REFRESH} ; refresh (>=10000)
{RETRY} ; retry (>=1800)
{EXPIRE} ; expire
{MINIMUM} ; minimum
)


{DOM_HOSTNAME}. IN NS {DNS1_HOSTNAME}.
{DOM_HOSTNAME}. IN NS {DNS2_HOSTNAME}.
{DOM_HOSTNAME}. IN NS {DNS3_HOSTNAME}.


== Platzhalter für eigene Zonenfiles ==
{DOM_HOSTNAME}. IN MX 30 {MX1_HOSTNAME}.
{DOM_HOSTNAME}. IN MX 30 {MX2_HOSTNAME}.
{DOM_HOSTNAME}. IN MX 30 {MX3_HOSTNAME}.


Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern von IP Adressen und Hostnamen, ohne das jeder Domainadmin seine Zonefiles anpassen muß. Insbesondere wird das Verschieben von Paketen zwischen physikalischen Hosts damit vereinfacht.
{DOM_HOSTNAME}. IN A {DOM_IPNUMBER}


*.{DOM_HOSTNAME}. IN MX 30 {MX1_HOSTNAME}.
*.{DOM_HOSTNAME}. IN MX 30 {MX2_HOSTNAME}.
*.{DOM_HOSTNAME}. IN MX 30 {MX3_HOSTNAME}.


; {PAC_IPNUMBER} : IP NUmmer des [[Hives]] in dem sich das [[Paket]] befindet
*.{DOM_HOSTNAME}. IN A {DOM_IPNUMBER}
; {PAC_HOSTNAME} : Hostname ([[Hive]])
</pre>
; {DOM_IPNUMBER} : IP-Nummer
; {DOM_HOSTNAME} :
; {MYSQL_IPNUMBER}
; {MYSQL_HOSTNAME}
; {PGSQL_IPNUMBER}
; {PGSQL_HOSTNAME}


Anschließend werden die atomaren Platzhalter ersetzt:


; {FTP_IPNUMBER}
<pre>
; {FTP_HOSTNAME}
$TTL 6H
 
; {SMTP_IPNUMBER}
; {SMTP_HOSTNAME}
; {POP3_IPNUMBER}
; {POP3_HOSTNAME}
; {IMAP_IPNUMBER}
; {IMAP_HOSTNAME}


; {PAC_DNS_MASTER}
<FQDN>. IN SOA <HIVE>.hostsharing.net. hostmaster.hostsharing.net. (
; {HS_DNS1_IPNUMBER}
<SEKUNDEN> ; serial secs since Jan 1 1970
; {HS_DNS2_IPNUMBER}
6H ; refresh (>=10000)
; {HS_DNS3_IPNUMBER}
1H ; retry (>=1800)
; {HS_DNS1_HOSTNAME}
1W ; expire
; {HS_DNS2_HOSTNAME}
1H ; minimum
; {HS_DNS3_HOSTNAME}
)


; {TTL}
<FQDN>. IN NS dns1.hostsharing.net.
; {SIO} : Timestamp (Millisekunden)
<FQDN>. IN NS dns2.hostsharing.net.
<FQDN>. IN NS dns3.hostsharing.net.


; {MX1_IPNUMBER}
<FQDN>. IN MX 30 mail1.hostsharing.net.
; {MX1_HOSTNAME}
<FQDN>. IN MX 30 mail2.hostsharing.net.
; {MX2_IPNUMBER}
<FQDN>. IN MX 30 mail3.hostsharing.net.
; {MX2_HOSTNAME}


Die Hostnamen verstehen sich allesamt ohne den in Zonenfiles oft benötigten abschließenden Punkt.  
<FQDN>. IN A <IP>


Es wird dringend empfohlen, in eigenen Zonenfiles diese Platzhalter zu verwenden. Nur so können Domains bei Änderungen von IP Nummern oder anderen Umstrukturierungen weiter erreichbar bleiben, ohne selbst auf solche Ankündigungen und Ereignisse achten zu müssen und Anpassungen selber vornehmen zu müssen.
*.<FQDN>. IN MX 30 mail1.hostsharing.net.
*.<FQDN>. IN MX 30 mail2.hostsharing.net.
*.<FQDN>. IN MX 30 mail3.hostsharing.net.


*.<FQDN>. IN A <IP>
</pre>


== Das Zonefile deaktivieren/zurücksetzen ==


In ~/doms/example.com/etc das vorhandene Zonefile (pri.example.com) komplett leeren (ist dann 0 Bytes groß). Dann kommt der Robot vorbei, löscht pri.example.com und setzt alles auf Standardwerte zurück.


----
[[Kategorie:HSDoku]]
[[Kategorie:HSDoku]]
[[Kategorie:Domains]]
[[Kategorie:Domains]]
[[Kategorie:Baustelle]]
[[Kategorie:Zonefile]]
[[Kategorie:DNS]]

Aktuelle Version vom 18. März 2024, 09:09 Uhr




Das Zonenfile für eine Domain enthält die Konfiguration des Domain Name Service (DNS), d.h. der Nameserver der Domain. Es wird hinterlegt, welche Hostnamen innerhalb der Domain existieren und auf welche IP-Adressen diese zeigen. Außerdem wird hierüber auch gesteuert, an welches System Mails für die Domain geliefert werden sollen. Für einfache und unkomplizierte Änderungen bitte in Simple Zonefile Howto schauen.

Achtung

Aufgrund der zentralen Bedeutung sollten Änderungen nur mit Vorsicht vorgenommen werden, da eine fehlerhafte Einstellung dazu führen kann, dass die Webseite nicht mehr im Internet abgerufen werden kann oder Mails verloren gehen!


Aktives Zonefile

Die gerade aktive Konfiguration einer Domain example.com ist in /etc/bind/pri.example.com zu finden (Zonefile).

Im Standardfall sieht es vollständig expandiert wie folgt aus:

example.com. IN SOA h00.hostsharing.net. hostmaster.hostsharing.net. (
                1303649373      ; serial secs since Jan 1 1970
                6H              ; refresh (>=10000)
                1H              ; retry (>=1800)
                1W              ; expire
                1H              ; minimum
)

example.com.    IN      NS      dns1.hostsharing.net.
example.com.    IN      NS      dns2.hostsharing.net.
example.com.    IN      NS      dns3.hostsharing.net.

example.com.    IN      MX      30 mailin1.hostsharing.net.
example.com.    IN      MX      30 mailin2.hostsharing.net.
example.com.    IN      MX      30 mailin3.hostsharing.net.

example.com.    IN      A       83.223.95.160
example.com.    IN      AAAA    2a01:37:1000::53df:5fa0:0

example.com.    IN      TXT     "v=spf1 include:spf.hostsharing.net ?all"

*.example.com.  IN      MX      30 mailin1.hostsharing.net.
*.example.com.  IN      MX      30 mailin2.hostsharing.net.
*.example.com.  IN      MX      30 mailin3.hostsharing.net.

*.example.com.  IN      A       83.223.95.160
*.example.com.  IN      AAAA    2a01:37:1000::53df:5fa0:0

*.example.com.  IN      TXT     "v=spf1 include:spf.hostsharing.net ?all"

Logfile und Kontrolle

Die Logfiles des Nameservers sind im Verzeichnis /var/log/named einsehbar. Das aktuelle Log wird unter dem Namen named.log angelegt. Dieses wird beim Neustart des DNS-Servers immer neu angelegt und zeigt bei einer erfolgreichen Änderung etwa folgenden Inhalt:

 Oct 11 18:32:21.400 info: zone example.org/IN: loaded serial 1065889567
 Oct 11 18:32:21.435 info: zone example.org/IN: sending notifies (serial 1065889567)
 Oct 11 18:32:21.755 info: client 213.133.116.2#57100: transfer of 'example.org/IN': 
 AXFR-style IXFR started
 Oct 11 18:32:22.264 info: client 62.75.149.27#45282: transfer of 'example.org/IN': 
 AXFR-style IXFR started

Die Zeilen bedeuten jeweils:

  • Das geänderte Zonefile wurde vom DNS-Server erfolgreich geladen
  • Der lokale Server sendet eine Benachrichtigung an die Secondaries, damit diese die Änderung ebenfalls übernehmen können.

Tippfehler oder falsche Angaben im Zonefile werden hier ebenfalls gemeldet.

  -------- Original-Nachricht --------
  Betreff: [Global] DNS Zonenfile Änderungen
  Datum: Thu, 4 Mar 2010 08:30:34 +0100
  
  Moin Moin,
  
  aus gegebenem Anlass: Immer wieder kommt es vor, dass jemand sein
  Zonenfile ändert, und es (scheinbar) funktioniert. Tage oder Wochen
  später dann sind die Domains nicht mehr erreichbar und es heißt "in den
  letzten ... Tagen/Wochen habe ich aber gar nichts mehr geändert". Das mag
  auch gut sein - ist mir auch selbst schon passiert, gerade wenn es um
  "mal eben schnell noch ... " ging.
  
  Nur ist der Fehler dann aber schon vor Tagen/Wochen passiert, und solange
  die Datensätze nicht abgelaufen (expired) sind, sind sie - die alten -
  noch im DNS System vorhanden. Die neuen aber, die aus der o.g. Änderung,
  sind bei einem Fehler im Zonenfile nie ins DNS System hinein gekommen!
  
  Was also tun? Zunächst kann man nach einer Änderung in einer
  Shell beobachten, ob es zu Fehlermeldungen kommt:
  
  tail -f /var/log/named/named.log 
  
  oder ggf nur Zeilen, in denen die eigene Domain (z.B. example.com)
  vorkommt:
  
  tail -f /var/log/named/named.log | grep example.com
  
  Diese Log-Datei ist daher genau aus diese Grunde auch auf dem
  Server lesbar.
  
  Auch sollte die in den DNS-Servern befindliche Seriennummer mit der
  aktuellen in der Zonendatei verglichen werden:
  
  dig -t SOA @dns1 example.com | grep '^example.com.*SOA' | awk '{ print $7 }'
  
  grep serial /etc/bind/pri.example.com | awk '{ print $1 }'  

Eigenes Zonenfile

Wer ein eigenes Zonefile installieren möchte, um diverse Anwendungsfälle zu realisieren (Verweise auf extern gelagerte Subdomains, Anbindung externer Server, Verwendung eigener Mailserver), kann pro Domain ein eigenes Zonefile erstellen. Dieses befindet sich im Verzeichnis ~/doms/example.com/etc mit den Namen pri.example.com (example.com steht hier als Beispiel für den wahren Domainnamen). Ein Neuanlegen oder eine Änderung dieser Datei führt zu einer baldigen Änderung der Nameservereinträge für die Domain.

Warnung!

Das nicht sachgemäße Erstellen eines eigenen Zonefiles kann zur Nichterreichbarkeit der eigenen Domain und zum Verlust von Mails führen!


Eine Anleitung für die eher einfachen und oft gewünschten Änderungen findet sich in Simple Zonefile Howto.

Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern der DNS-Konfiguration, ohne dass der Domain-Admin sein Zonefile anpassen muss.

Komplexe Platzhalter

{DEFAULT_ZONEFILE} :=
	{HEADER}
	{SOA_RR}
	{NS_RR}
	{MX_RR}	
	{A_RR}
	{WILDCARD_MX_RR}
	{WILDCARD_A_RR}

{HEADER} :=
	$TTL {TTL}

{SOA_RR} :=
	{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
		{SIO}		; serial secs since Jan 1 1970
		{REFRESH}	; refresh (>=10000)
		{RETRY}		; retry (>=1800)
		{EXPIRE}	; expire
		{MINIMUM}	; minimum
		)

{NS_RR} :=
	{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.
	{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.
	{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.

{MX_RR} :=
	{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.
	{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.
	{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.

{A_RR} :=
	{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}

{WILDCARD_MX_RR} :=
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.
	*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.

{WILDCARD_A_RR} :=
	*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}

Atomare Platzhalter

{TTL} :=		6H
{SOA_HOSTNAME} :=	<HIVE>.hostsharing.net
{SOA_EMAIL}:=		hostmaster.hostsharing.net
{SIO} :=		<SEKUNDEN>
{REFRESH} :=		6H
{RETRY} :=		1H
{EXPIRE} :=		1W
{MINIMUM} :=		1H

{DNS1_HOSTNAME} :=	dns1.hostsharing.net
{DNS2_HOSTNAME} :=	dns2.hostsharing.net
{DNS3_HOSTNAME} :=	dns3.hostsharing.net

{MX1_HOSTNAME} :=	mailin1.hostsharing.net
{MX2_HOSTNAME} :=	mailin2.hostsharing.net
{MX3_HOSTNAME} :=	mailin3.hostsharing.net

{DOM_HOSTNAME} :=	<FQDN>
{DOM_IPNUMBER} := 	<IP>

{DKIM_RR}      :=       <siehe https://wiki.hostsharing.net/index.php?title=DKIM>
{SPF_RR}       :=       "v=spf1 include:spf.hostsharing.net ?all"


Hierbei stehen

  • <Sekunden> für die Anzahl der Sekunden, welche seit dem 01.01.1970 vergangen sind
  • <FQDN> für den vollständigen, qualifizierten Domainnamen der Domain
  • <IP> für die der Domain zugewiesene IP-Adresse

Diese Werte werden von Hostsharing verwaltet.

Expansion der Platzhalter

Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird folgermaßen expandiert.

Zunächst werden die komplexen Platzhalter ersetzt:

$TTL {TTL}

{DOM_HOSTNAME}. IN SOA {SOA_HOSTNAME}. {SOA_EMAIL}. (
	{SIO}		; serial secs since Jan 1 1970
	{REFRESH}	; refresh (>=10000)
	{RETRY}		; retry (>=1800)
	{EXPIRE}	; expire
	{MINIMUM}	; minimum
	)

{DOM_HOSTNAME}.		IN	NS	{DNS1_HOSTNAME}.
{DOM_HOSTNAME}.		IN	NS	{DNS2_HOSTNAME}.
{DOM_HOSTNAME}.		IN	NS	{DNS3_HOSTNAME}.

{DOM_HOSTNAME}.		IN	MX	30 {MX1_HOSTNAME}.
{DOM_HOSTNAME}.		IN	MX	30 {MX2_HOSTNAME}.
{DOM_HOSTNAME}.		IN	MX	30 {MX3_HOSTNAME}.

{DOM_HOSTNAME}.		IN	A	{DOM_IPNUMBER}

*.{DOM_HOSTNAME}.	IN	MX	30 {MX1_HOSTNAME}.
*.{DOM_HOSTNAME}.	IN	MX	30 {MX2_HOSTNAME}.
*.{DOM_HOSTNAME}.	IN	MX	30 {MX3_HOSTNAME}.

*.{DOM_HOSTNAME}.	IN	A	{DOM_IPNUMBER}

Anschließend werden die atomaren Platzhalter ersetzt:

$TTL 6H

<FQDN>. IN SOA <HIVE>.hostsharing.net. hostmaster.hostsharing.net. (
	<SEKUNDEN>	; serial secs since Jan 1 1970
	6H		; refresh (>=10000)
	1H		; retry (>=1800)
	1W		; expire
	1H		; minimum
	)

<FQDN>.		IN	NS	dns1.hostsharing.net.
<FQDN>.		IN	NS	dns2.hostsharing.net.
<FQDN>.		IN	NS	dns3.hostsharing.net.

<FQDN>.		IN	MX	30 mail1.hostsharing.net.
<FQDN>.		IN	MX	30 mail2.hostsharing.net.
<FQDN>.		IN	MX	30 mail3.hostsharing.net.

<FQDN>.		IN	A	<IP>

*.<FQDN>.	IN	MX	30 mail1.hostsharing.net.
*.<FQDN>.	IN	MX	30 mail2.hostsharing.net.
*.<FQDN>.	IN	MX	30 mail3.hostsharing.net.

*.<FQDN>.	IN	A	<IP>

Das Zonefile deaktivieren/zurücksetzen

In ~/doms/example.com/etc das vorhandene Zonefile (pri.example.com) komplett leeren (ist dann 0 Bytes groß). Dann kommt der Robot vorbei, löscht pri.example.com und setzt alles auf Standardwerte zurück.