DynDNS selbst bauen - die eigene Lösung in der AWS Cloud
Viele Jahre lang habe ich einen bekannten kostenfreien DynDNS-Dienst genutzt. Doch wie so oft in der Tech-Welt, änderten sich die Rahmenbedingungen: Der Dienst wurde irgendwann kostenpflichtig. Für mich war das der Anlass, nach einer Alternative zu suchen. Doch trotz intensiver Recherche konnte ich nichts finden, das meinen Anforderungen entsprach.
Das brachte mich auf eine spannende Idee: Warum nicht eine eigene DynDNS-Lösung entwickeln?
Erste Schritte: Meine erste Lösung mit BIND
Zunächst habe ich eine Lösung mit dem DNS-Server BIND umgesetzt. Das funktionierte zwar, aber der Betrieb eines eigenen Servers brachte zusätzlichen Aufwand mit sich. Insbesondere der Betriebssupport und die Wartung des Servers waren nicht ideal für meine Anforderungen.
Der nächste Schritt: Eine Cloud-basierte Lösung
Ich beschloss, die gesamte Lösung in die Cloud zu verlegen, um mich von der Serververwaltung zu befreien. Das Ergebnis ist ein System, das vollständig in der AWS Cloud läuft und alle Anforderungen an einen flexiblen DynDNS-Dienst erfüllt.
Die Kernkomponenten dieser Lösung sind:
- Route53 DNS-Zone: Hier werden die DNS-Einträge verwaltet.
- Lambda-Funktion: Eine serverlose Funktion, die dynamisch DNS-Einträge aktualisieren kann.
- API Gateway: Über eine HTTP-API kann die Lambda-Funktion aufgerufen werden.
Das API-Gateway bietet zudem die Möglichkeit, die API mithilfe eines API-Keys abzusichern. Durch diese Architektur benötige ich keinen eigenen Server – alles läuft serverlos in der AWS Cloud.
So funktioniert die Lösung
Wenn ein neuer Eintrag in der DNS-Zone angelegt oder geändert werden soll, kann die Lambda-Funktion über das API-Gateway per HTTP-Request aufgerufen werden. Dank der Integration mit Route53 wird der gewünschte DNS-Eintrag automatisch angepasst. Der Einsatz des API-Gateways ermöglicht zudem eine optionale Absicherung der API durch einen API-Key, sodass nur autorisierte Anfragen zugelassen werden.
Nachbauen leicht gemacht
Wer sich diese Lösung genauer ansehen möchte, findet den kompletten Code auf GitHub: Hier geht’s zum Repository.
Um die Lösung zu deployen, sind folgende Tools erforderlich:
- Node.js
- Python
- AWS CDK (Cloud Development Kit)
- Docker
Mit diesen Werkzeugen kann die Lösung einfach in die eigene AWS-Umgebung ausgerollt werden.
Feedback erwünscht!
Ich hoffe, meine Lösung inspiriert euch oder hilft euch bei euren eigenen Projekten. Wenn ihr Feedback, Verbesserungsvorschläge oder Fragen habt, würde ich mich sehr freuen, von euch zu hören!