DynDNS

So you want to setup DynDNS?

Mein Internetprovider hat leider die Angewohnheit jede Nacht die Verbindung neu zu verbinden. Das hat zur Folge, dass der Router jeden Tag eine neue IP Adresse hat. Wenn man etwas selber hosten möchte ist das natürlich ein riesiges Problem.

Eine weit verbreitete Lösung ist DynDNS, also ein dynamischer DNS Eintrag, der dem Router folgt. Router haben meist eine Funktion um DynDNS zu benutzen. Dazu trägt man eine URL in den Router ein, die der Router alle paar Minuten aufruft. Der Service auf der anderen Seite nimmt die IP vom Router und updated den DNS Eintrag über eine API oder ähnliches.

Sowas kostet natürlich ein bisschen Geld und wenn man schon einen Server bezahlt kann man das auch selber basteln. In diesem Blogpost fasse ich zusammen was ich bisher gemacht habe.

Erster Versuch

Bis vor ein paar Monaten hat mein DNS Provider noch keine API um Einträge upzudaten. Die Alternative ist einen DNS-Slave Eintrag zu erstellen. Das heisst, dass ich einen eigenen DNS Server aufsetze und der Provider macht einen Lookup wenn es Zeit ist den Eintrag zu aktualisieren.

Halt, warum hostest du denn nicht selber dein DNS?

Ja das wäre möglich, aber Denic hat die Vorgabe, dass jede Domain zwei DNS Server vorweisen muss. Das ist mir dann doch zu viel Aufwand.

Den Server zum DynDNS Eintrag aufsetzen gibt es zum Glück auch schon. Hier hat jemand ein Python Projekt erstellt, das zusammen mit einem Bind9 DNS Server funktioniert. Und es gibt ein paar Blogeinträge, die den Vorgang gut dokumentieren, hier und hier.

Mein größter Fehler war eigentlich den TTL (Time to Live) Wert zu hoch zu setzen. So kamen die Updates immer erst nach ein paar Stunden. Am besten setzt man ihn auf 60 Sekunden.

Ein bisschen undurchsichtig war dann das sftdyn Tool doch. Man konfiguriert den Service in der Datei /etc/sftdyn/conf, wobei die Datei selber ein Python Skript ist. Das heisst, der Code zum Updaten der DNS Einträge ist in der Datei direkt drin, was ein bisschen schräg ist. Eine Sample Datei ist auf Github. Merke, die Befehle um einen DNS Eintrag zu ändern sind wie folgt:

nsupdate -l
> update delete <dyndns> A
> update add <dyndns> 30 A <ip>
> send

Damit hat man schonmal ein funktionierendes Setup für DynDNS. Aber geht das vielleicht einfacher?