Zonefile
Das Zonefile enthält die Konfiguration des Domain Name Service (DNS) einer Domain.
Im Zonefile wird hinterlegt, welche Hostnamen innerhalb einer Domain existieren, auf welche IP-Adressen diese zeigen und welches Mailsystem für eine Domain zuständig ist.
Das Standardzonefile ist für jede Domain unter /etc/bind/pri.example.com
zu finden.
Es ist möglich, ein eigenes Zonefile für eine Domain einzusetzen. Dabei können und sollen Platzhalter verwendet werden, die es ermöglichen, einen jeweils spezifischen Teil eines Zonefile zu ändern.
Das expandierte Standardzonefile
$TTL 6H
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:5bfc:0
_imap._tcp.example.com. IN SRV 1 0 143 xyz00.hostsharing.net.
_imaps._tcp.example.com. IN SRV 2 0 993 xyz00.hostsharing.net.
_pop3._tcp.example.com. IN SRV 3 0 110 xyz00.hostsharing.net.
_pop3s._tcp.example.com. IN SRV 4 0 995 xyz00.hostsharing.net.
_submission._tcp.example.com. IN SRV 0 0 587 xyz00.hostsharing.net.
_autodiscover._tcp.example.com. IN SRV 0 0 443 example.com.
autodiscover.example.com. IN A 0.0.0.0
autodiscover.example.com. IN AAAA ::
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:5bfc:0
*.example.com. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
Platzhalter
Platzhalter expandiert zu
{DEFAULT_ZONEFILE} {HEADER}
{SOA_RR}
{NS_RR}
{MX_RR}
{A_RR}
{AAAA_RR}
{MAILSERVICES_RR}
{AUTODISCOVER_RR}
{SPF_RR}
{DKIM_RR}
{WILDCARD_MX_RR}
{WILDCARD_A_RR}
{WILDCARD_AAAA_RR}
{WILDCARD_SPF_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_IP4NUMBER}
{AAAA_RR} {DOM_HOSTNAME}. IN AAAA {DOM_IP6NUMBER}
{MAILSERVICES_RR} _imap._tcp.{DOM_HOSTNAME}. IN SRV 1 0 143 {PAC_HOSTNAME}.
_imaps._tcp.{DOM_HOSTNAME}. IN SRV 2 0 993 {PAC_HOSTNAME}.
_pop3._tcp.{DOM_HOSTNAME}. IN SRV 3 0 110 {PAC_HOSTNAME}.
_pop3s._tcp.{DOM_HOSTNAME}. IN SRV 4 0 995 {PAC_HOSTNAME}.
_submission._tcp.{DOM_HOSTNAME}. IN SRV 0 0 587 {PAC_HOSTNAME}.
{AUTODISCOVER_RR} _autodiscover._tcp.{DOM_HOSTNAME}. IN SRV 0 0 443 {DOM_HOSTNAME}.
autodiscover.{DOM_HOSTNAME}. IN A 0.0.0.0
autodiscover.{DOM_HOSTNAME}. IN AAAA ::
{SPF_RR} {DOM_HOSTNAME}. IN TXT "v=spf1 include:spf.hostsharing.net -all"
{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_IP4NUMBER}
{WILDCARD_AAAA_RR} *.{DOM_HOSTNAME}. IN AAAA {DOM_IP6NUMBER}
{WILDCARD_SPF_RR} *.{DOM_HOSTNAME}. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
{DKIM_RR} default._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; s=email; p=MIIB..."
{TTL} 6H
{SOA_HOSTNAME} <HIVE>.hostsharing.net
{SOA_EMAIL} hostmaster.hostsharing.net
{SIO} <SEKUNDEN>
{REFRESH} 6H
{RETRY} 1H
{EXPIRE} 1W
{MINIMUM} 1H
Folgende Werte werden von Hostsharing verwaltet:
<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,
z.B. example.com
<IPv4>
für die der Domain zugewiesene IPv4-Adresse
<IPv6>
für die der Domain zugewiesene IPv6-Adresse
<HIVE>
für den Server, auf dem die Domain gehostet ist, z.B. h20
<PAC>
für das Paket, dem die Domain zugeordnet ist, z.B. xyz00
Expansion der Platzhalter
Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONEFILE} wird in drei Schritten folgendermaßen expandiert. Zunächst werden die komplexen Platzhalter ersetzt. :
{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_IP4NUMBER}
{DOM_HOSTNAME}. IN AAAA {DOM_IP6NUMBER}
_imap._tcp.{DOM_HOSTNAME}. IN SRV 1 0 143 {PAC_HOSTNAME}.
_imaps._tcp.{DOM_HOSTNAME}. IN SRV 2 0 993 {PAC_HOSTNAME}.
_pop3._tcp.{DOM_HOSTNAME}. IN SRV 3 0 110 {PAC_HOSTNAME}.
_pop3s._tcp.{DOM_HOSTNAME}. IN SRV 4 0 995 {PAC_HOSTNAME}.
_submission._tcp.{DOM_HOSTNAME}. IN SRV 0 0 587 {PAC_HOSTNAME}.
_autodiscover._tcp.{DOM_HOSTNAME}. IN SRV 0 0 443 {DOM_HOSTNAME}.
autodiscover.{DOM_HOSTNAME}. IN A 0.0.0.0
autodiscover.{DOM_HOSTNAME}. IN AAAA ::
{DOM_HOSTNAME}. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
*.{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_IP4NUMBER}
*.{DOM_HOSTNAME}. IN AAAA {DOM_IP6NUMBER}
*.{DOM_HOSTNAME}. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
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.
_imap._tcp.<FQDN>. IN SRV 1 0 143 <PAC>.hostsharing.net.
_imaps._tcp.<FQDN>. IN SRV 2 0 993 <PAC>.hostsharing.net.
_pop3._tcp.<FQDN>. IN SRV 3 0 110 <PAC>.hostsharing.net.
_pop3s._tcp.<FQDN>. IN SRV 4 0 995 <PAC>.hostsharing.net.
_submission._tcp.<FQDN>. IN SRV 0 0 587 <PAC>.hostsharing.net.
_autodiscover._tcp.<FQDN>. IN SRV 0 0 443 <FQDN>.
autodiscover.<FQDN>. IN A 0.0.0.0
autodiscover.<FQDN>. IN AAAA \:\:
<FQDN>. IN A <IPv4>
<FQDN>. IN AAAA <IPv6>
<FQDN>. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
*.<FQDN>. IN MX 30 mail1.hostsharing.net.
*.<FQDN>. IN MX 30 mail2.hostsharing.net.
*.<FQDN>. IN MX 30 mail3.hostsharing.net.
*.<FQDN>. IN A <IPv4>
*.<FQDN>. IN AAAA <IPv6>
*.<FQDN>. IN TXT "v=spf1 include:spf.hostsharing.net ?all"
Eigenes Zonefile
Es kann für jede aufgeschaltete Domain jeweils ein eigenes Zonefiles angelegt werden. In der Regel ist dies nur bei folgenden Anforderungen notwendig:
- Webseiten zu einer Domain oder Sub-Domain bei einem anderen Hoster oder auf einem eigenen Server anbieten
- Dienste (z.B. E-Mail) bei einem anderen Anbieter betreiben
In eigenen Zonefiles sollten Platzhalter verwendet werden.
Diese Platzhalter ermöglichen das Ändern der DNS-Konfiguration seitens Hostsharing, ohne dass der Domain-Admin sein Zonefile anpassen muss.
Das Zonefile für die Domain example.com
wird im Verzeichnis ~/doms/example.com/etc/
als Datei pri.example.com
abgelegt und einige Minuten nach dem Speichern automatisch aktiv.
Das unsachgemäße Erstellen oder Fehler im eigenen Zonefile können zur Nichterreichbarkeit der Domain und zum Verlust von E-Mails führen!
Im Wiki der Mitglieder finden sich Beispiele für eigene Zonefiles.
Kontrolle der Änderungen
Durchgeführte Änderungen am Zonefile können mit Hilfe der Logdatei named.log überprüft werden:
$ tail -f /var/log/named/named.log
$ tail -f /var/log/named/named.log | grep example.com
Nach einer erfolgreichen Übertragung der DNS Zone zu den drei DNS-Servern finden sich in der Log-Datei etwa die folgenden sechs Zeilen:
18-Dec-2019 12:06:27.997 info: client 83.223.95.201#53191 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
18-Dec-2019 12:06:27.998 info: client 83.223.95.201#53191 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
18-Dec-2019 12:06:28.517 info: client 83.223.78.230#37959 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
18-Dec-2019 12:06:28.568 info: client 176.9.242.51#40371 (example.com): transfer of 'example.com/IN': AXFR-style IXFR started (serial 1576667187)
18-Dec-2019 12:06:28.569 info: client 176.9.242.51#40371 (example.com): transfer of 'example.com/IN': AXFR-style IXFR ended
Zur Überprüfung von Änderungen am Zonefile kann zusätzlich die Seriennummer in den DNS-Servern mit der aktuellen Seriennummer im Zonefile verglichen werden:
$ dig -t SOA @dns1.hostsharing.net example.com
$ cat /etc/bind/pri.example.com
Es findet sich jeweils die Seriennummer (im obigen Log-Auszug die '1576667187') im SOA Record.
Eigenes Zonefile deaktivieren
Im Verzeichnis ~/doms/example.com/etc/
das vorhandene Zonefile (pri.example.com) leeren (0 Bytes).
Das leere Zonefile wird durch einen Robot gelöscht und es gilt das Standardzonefile.