Verwalten der Zonendaten: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
Zeile 201: Zeile 201:


Anschließend werden die atomaren Platzhalter, welche sich aus dem vorstehenden Zwischenschritt ergeben, ersetzt.
Anschließend werden die atomaren Platzhalter, welche sich aus dem vorstehenden Zwischenschritt ergeben, ersetzt.
<pre>
$TTL 6H
<FQDN>. IN SOA dns.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>
</pre>


== Beispiele ==
== Beispiele ==

Version vom 10. Mai 2011, 14:27 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.

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!


Achtung

Das Standardzonefile und die gültigen Platzhalter ändern sich in Kürze. Die Dokumentation wird derzeit aktualisiert.


aktives Zonefile

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

Es sieht standardmäßig in etwa wie folgt aus:

$TTL 6H
example.com. IN SOA dns.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      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

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} (s. unten) eingetragen wird.

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.
  • 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.

 -------- 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 }'  

Platzhalter für eigene Zonenfiles

Folgende Platzhalter können und sollten in eigenen Zonenfiles verwendet werden. Sie ermöglichen uns das Ändern von IP-Adressen und Hostnamen, ohne daß jeder Domainadmin seine Zonefiles anpassen muss.

Komplexe Platzhalter

$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}.

{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} :=	dns.hostsharing.net
{SOA_EMAIL}:=		hostmaster.hostsharing.net
{SIO} :=		<Sekunden seit 01.01.1970>
{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 der Domain>
{DOM_IPNUMBER} := 	<IP der Domain>

Die Hostnamen verstehen sich allesamt ohne den in Zonenfiles oft benötigten abschließenden Punkt.

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.

Expansion der Platzhalter

Der Platzhalter für das Gesamtzonefile {DEFAULT_ZONFILE} wird in zwei Schritten folgermaß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_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, welche sich aus dem vorstehenden Zwischenschritt ergeben, ersetzt.

$TTL 6H

<FQDN>. IN SOA dns.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>

Beispiele

Domain Delegation

HowTo: erläutern.

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