Schlagwort-Archive: BIND

BIND9 Fehlermeldung: „zone skraus.local/IN: journal rollforward failed: journal out of sync with zone“

Symptome

Der Nameserver löst nicht mehr auf und liefert folgende Fehlermeldung:

Dies kann schnell behoben werden…

Behebung

Nameserver anhalten, Journale entfernen, Nameserver neustarten:

Das wars.

Have fun!

Installation eines lokalen DNS Servers (CentOS)

Einleitung

DNS steht für Domain Name System und dient dazu, Rechnernamen in IP-Adressen zu übersetzen.  Im nachfolgenden Beitrag wir beschrieben, wie zwei DNS Server unter CentOS aufgesetzt werden.

Benötigte Pakete

Wir installieren BIND als Nameserver.

Konfiguration

Die Konfiguration erfolgt in mehreren Dateien. Zunächst werden grundlegende Einstellungen in /etc/named.conf vorgenommen. Hier ist eine beispielhafte Konfiguration, die einige Kommentare enthält:

Nun müssen die in der Konfiguration angegebenen Zone Files erstellt werden.

Zone Files erstellen

forward lookup zone – /var/named/forward.krausix

Die forward lookup zone dient zum Auflösen von Domainnamen zu IP-Adressen.  Wir erstellen die Datei /var/named/forward.krausix mit folgendem Inhalt:

Nun muss noch die reverse lookup zone konfiguriert werden.

Reverse lookup zone – /var/named/reverse.krausix

Die reverse lookup zone dient dem umgekehrten Weg, hiermit werden also zu IP-Adressen Domainnamen zugeordnet. Wir erstellen die Daten /var/named/reverse.krausix:

Hiermit ist die Konfiguration abgeschlossen. Wenn keine Tippfehler unterlaufen sind, kann BIND nun gestartet werden.

Firewall anpassen

Damit Anfragen nicht geblockt werden, muss die Firewall noch entsprechend angepasst werden.

Weiter gehts mit Start und Test…

Start und Test

Zunächst wird der DNS Server gestartet und so konfiguriert, dass er auch nach einem Reboot erneut gestartet wird.

Abschließend kann ein Test erfolgen:

Funktioniert dies, geht es weiter mit dem Slave DNS Server.

Slave DNS Server

Die Konfiguration erfolgt analog der oben beschriebenen Konfiguration des Masters, lediglich bei IP-Adresse und Zonenkonfiguration gibt es geringfügige Abweichungen. Hier /etc/named.conf:

Damit ist die Konfiguration vollständig. Da die Zonen des Masters genutzt werden, müssen keine Zonefiles erstellt werden.

 Start und Test

Auch für Firewalling, Start und Test kann wie oben beschrieben verfahren werden. Um nach dem Start zu prüfen, ob der Transfer funktioniert, kann in /var/log/messages nachgesehen werden oder das Slave Verzeichnis geprüft werden, dort liegen nach dem Start die Zonefiles:

Have fun!

 

Eigener dynamischer DNS-Dienst

Vorwort

Die meisten privaten DSL-Anschlüsse bedienen sich eines dynamischen IP-Adresspools und wechseln die IP-Adresse ca. alle 24 Stunden. Hierbei wird kurz die DSL-Verbindung abgebaut. Beim erneuten Wiederaufbau bezieht das DSL-Modem eine neue IP-Adresse. Dies ist auch als Zwangstrennung bekannt. Wenn nun von außen auf solch einen Anschluss zugegriffen werden soll, muss die IP-Adresse bekannt sein. Hilfsweise gibt es Dienste, bei denen man Subdomains registrieren kann, die die eigene IP-Adresse bei einer DNS-Anfrage zurückliefern. Bei Änderung der Adresse, teilt ein Client dies mit und bei erneuter DNS-Anfrage wird die dann aktualisierte IP-Adresse zurückgeliefert.

Anlässlich der unlängst auf heise.de veröffentlichten Nachricht, dyn.com stelle in kürze den kostenlosen Dienst ein, stehe ich vor der Entscheidung, auf einen anderen kostenlosen Dienst umzusteigen oder einen vergleichbaren Service selbst zu implementieren.

Wie wird nun ein solcher Dienst aufgesetzt, der auf dem eigenen root- oder V-Server läuft?

Voraussetzungen

Ein eigener Server mit eigener Namensauflösung ist Pflicht. Im Beispiel nutze ich BIND9 als DNS-Server, er soll die Zone dyn.krausix.de verwalten. Im DNS-Server des Anbieters wird eine entsprechende Zonendelegation eingerichtet. Ferner benötigen wir einen Webserver, MySQL und PHP.

DNS-Konfiguration

Zonendelegation

Im DNS des Providers wird ein Resource Record erstellt, der die Verwaltung der Subdomain „dyn“  an den DNS-Server unter „krausix.de“ delegiert.

Dies sieht dann etwa so aus:

Dies bewirkt, dass die Zone „dyn“ unter der Domain „krausix.de“ an die angegebenen Nameserver „ns1.krausix.de“ bzw. „ns1.dyn.krausix.de“ delegiert wird. Diese sind also authoritativ zuständig für DNS-Anfragen an „dyn.krausix.de“, wobei „ns1.dyn.krausix.de“ die Besonderheit bildet, dass der Nameserver sich selbst nicht auflösen kann. Abhilfe schafft der nachfolgende A-Record, hiermit wird erreicht, dass der Host „ns1.dyn.krausix.de“ bei der Namensauflösung die o.g. IPv4-Adresse bekommt. für IPv6-Adressen wird ein AAAA-Record genutzt.

BIND9, DDNS einrichten

Wir nutzen ddns-confgen, ein Werkzeug zum Erstellen eines Schlüssels und passenden Konfigurationen zum dynamischen Aktualisieren von DNS-Einträgen des Nameservers.

Die Option -z führt ddns-confgen hierbei im „zone mode“ aus, die damit erzeugte Konfiguration erlaubt Updates für alle Subdomains der Zone dyn.krausix.de, das Ergebnis sieht dann wie folgt aus:

Diese Anweisungen müssen im Anschluss umgesetzt werden, wir übernehmen die obige Konfiguration leicht abgewandelt in named.conf oder besser in named.conf.local, die Update Policy passen wir so an, dass Updates lediglich auf A-Records beschränkt sind:

Inhalt:

Ferner schreiben wir den Key in eine separate Datei:

Inhalt:

Für die Forwardlookup-Zone legen wir eine entsprechende Zonendatei an:

Inhalt:

Test Nameserver

Nameserver zunächst neustarten:

Sofern BIND fehlerfrei wieder startet erstellen wir einen DNS-Eintrag und fragen diesen später ab.

Die Zeile server ns1.krausix.de kann normalerweise entfallen, sobald wie oben beschrieben die Zonendelegation eingerichtet ist. Solange ns1.krausix.de  jedoch nicht authoritativ Nameserver für die Zone dyn.krausix.de ist, wird sie benötigt.

Abfragen mit dig:

Auch hier kann im Normalfall @ns1.krausix.de entfallen.

Ergebnis:

DNS-Update per bash-Skript

TODO

MySQL

TODO

Webschnittstelle

TODO