Das eigene DynDNS

Wie man sich so etwas selber bauen kann.

Geschrieben von Thomas Hackbarth am 02.01.2016

Viele Jahre habe ich einen bekannten kostenfreien DynDNS Service genutzt. Vor einiger Zeit wurde dieser Dienst leider kostenpflichtig, so dass ich mir eine Alternative überlegte: Warum baut man so etwas nicht einfach selber? Da mich diese Frage interessiert hat, habe ich einmal angefangen.

Der erste Schritt bestand aus der Installation eines Name-Servers. Da ich einen Root-Server zur Verfügung habe, konnte ich diesen dort installieren. Wie viele andere Systeme verwende ich dafür auch BIND. Damit ich die im Name-Server abgelegten Daten auch ändern kann, habe ich zusätzlich nsupdate installiert.

Der zweite Schritt war schon etwas schwieriger, denn er bestand aus der Konfiguration des Servers. Die Konfiguration bestand aus zwei Teilen. Im ersten Teil habe ich eine neue Zone für meinen DynDNS anzulegen. Eine kleine Beschreibungen, wie so eine Zonendatei aufgebaut ist, ist hier zu finden. Diese muss dann nur noch in die BIND-Konfiguration aufgenommen werden. Dazu kann man einen, wie folgt aufgebauten Block in die Datei /etc/bind/named.conf eingetragen werden.

zone "<domain.tld>" {
  type master;
  file "<pfad zur zonendatei>";
  allow-update { key "<id eines schluessels>"; };
};

Dabei entspricht die domain.tld der in der Zonendatei angegeben Domain (Beispiel: thackbarth.net). Neben dem Pfad zur Zonendatei muss nur noch eine Schlüssel-Id angegeben werden. Der Schlüssel muss ebenfalls in der Datei registriert werden. Dies sieht ungewähr so aus:

key "<id eines schluessels>" {
  algorithm <gewählter algorithmus>;
  secret "<erstellter schlüssel>";
};

Erstellt wird der Schlüssel mit dem Tool dnssec-keygen.

Der letzte Schritt besteht darin, eine Möglichkeit zu schaffen, damit die Änderung der IP-Adresse an den Name-Server weitergegeben werden kann. Ich habe dazu ein PHP-Skript geschrieben, das aufgerufen werden kann und das dann mit Hilfe des Tools nsupdate den Name-Server ändert.

Hier eine Version des Skriptes, die nur PHP und eine kleine DNS-Bibliothek benötigt:

Link zum Update-Skript

In dieser Datei müssen nur noch die Platzhalter in spitzen Klammern ausgetauscht werden.