Dyndns mit IPv4 & IPv6 für Strato

Dyndns mit IPv4 und IPv6 scheint immer noch etwas zu sein, was nicht funktionieren darf. Das viel mir auf, als ich meinen Server mit beiden IP-Versionen laufen lassen wollte. Hintergrund war, dass der Provider meines Bruders nur noch IPv6-Adressen vergibt und auf IPv4 für Privatkunden vollständig verzichtet. Ich finde das durchaus unterstützenswert, schließlich ist ja sehr gut bekannt, dass IPv4 nicht annähernd den aktuellen Bedarf an IP-Adressen decken kann. Da ich selbst beides am Router zur Verfügung habe, aber auch Freunde habe, bei denen der Provider noch nichts von IPv6 gehört zu haben scheint, wollte ich für meinen Webserver eine Lösung mit IPv4 und IPv6 einrichten.

Gesagt, getan: Apache lauscht jetzt auf IPv6, beantwortet aber auch noch IPv4 und die Fitzbox will beim einrichten von Portforwarding für HTTP und HTTPS sowieso gleich IPv6 mit verwenden, also was soll schon schief gehen. Es müsste man ja nur noch der DynDNS-Client so einrichten, dass er auch beide Adressen updatet. Ich setze bisher ddclient ein, die Standardlösung unter Ubuntu. Dieser Client unterstützt sowohl IPv4, als auch IPv6 separat. Wie man beide zusammen nutzt, steht leider nicht in der Dokumentation. Wenn man ip= und ipv6= in logischer Kombination verwendet, wird nur gesetzt, was weiter unten in der Konfiguration steht. Wenn man beides hintereinander separat updatet, bleibt nur die zuletzt gesetzte IP erhalten. Dass dieses Verhalten von ddclient frustrierend ist, dürfte verständlich sein und da hab ich mich gefragt, was man denn machen müsste, um die IP manuell anzupassen…

Ein eigener Updater

Relativ schnell findet man bei Strato eine URL, über die das Updaten von IPv4 und IPv6 möglich sei. Das funktionierte sogar sofort, als ich das per Terminal ausprobierte, also sollte das Update auch mit ein wenig Python möglich sein. Der Plan dazu war folgender:

Die notwendigen Konfigurationsdaten, ähnlich wie im ddclient, werden in eine Konfigurationsdatei geschrieben. Notwendig ist dazu noch das IPv6-Suffix des betreffenden Geräts, das man aber aus der Fritzbox dem Bereich für die Portfreigabe entnehmen kann. Das Python-Programm ruft dann die externen IP-Adressen ab und vergleicht sie mit den über DNS aufgelösten Adressen für die Domain. Stimmen sie nicht überein, wird ein Update von IPv4 UND IPv6 in einem EINZELNEN Request durchgeführt. Alles zusammen habe ich in einem kleinen Repo auf GitHub liegen.

Mittlerweile ist der Updater seit einem halben Jahr bei mir im Einsatz. Ein kleiner Bugfix war bis jetzt notwendig, da ich vergessen hatte, dass es ja sein kann, dass noch gar keine IP im DNS hinterlegt ist… Aber davon ab funktionieren die Updates einwandfrei.


Beitrag veröffentlicht

in

von