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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.