Dynamisches DNS einrichten mit Cloudflare auf Raspberry Pi 4 – ddclient

Update am 25.06.2024: Seit dem Schreiben dieses Artikels hat jemand ein Script dafür geschrieben, das ihr hier findet: https://github.com/K0p1-Git/cloudflare-ddns-updater . Danke für die Info an tesztszerverem.hu!
Bei einem Heimserver, wenn man den jeweiligen Dienst auch aus dem Internet erreichen möchte (z. B. OpenVPN), sollte man einen dynamischen DNS-Eintrag einrichten. Dieser Artikel beschreibt die kombinierte Einrichtung von Cloudflare und ddclient.
Zuerst erstellen wir einen ‘A’-Eintrag mit einer falschen IP-Adresse (um später zu sehen, ob das Update erfolgreich war) sowie mit einer TTL von 5 Minuten.
Auf dem Raspberry Pi laden wir einen Fork des Programms „ddclient„ herunter, ein Daemon, der im Hintergrund läuft und (im Standardfall) alle 5 Minuten die öffentliche IP-Adresse abfragt und die Änderungen über die Cloudflare-API dorthin pusht.
Installieren wir die erforderlichen Pakete:
apt-get install perl libdata-validate-ip-perl apt-get install libjson-any-perl
Die neueste Version von ddclient finden wir hier. Diese herunterladen, entpacken und in den Ordner wechseln:
wget https://github.com/ddclient/ddclient/archive/v3.9.0.tar.gz tar -xzvf v3.9.0.tar.gz cd ddclient-3.9.0
Danach kopieren wir das ausführbare Programm an seinen üblichen Ort:
cp ddclient /usr/sbin/
Erstellen wir die erforderlichen Ordner, kopieren die Konfigurationsdateien und beginnen mit der Bearbeitung:
mkdir /etc/ddclient mkdir /var/cache/ddclient cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf vim /etc/ddclient/ddclient.conf
In der Konfigurationsdatei können wir die Mail-bezogenen Zeilen auskommentieren (mail= & mail-failure=), und am Ende Folgendes einfügen und mit unseren eigenen Daten ergänzen:
use=web ssl=yes protocol=cloudflare, server=api.cloudflare.com/client/v4, zone=teszt-elek.hu, login=tesztelek@cloudflarefiok.com password=CloudflareGlobalAPIkey dynamischereintrag.teszt-elek.hu,
Den API-Schlüssel können wir auf der Cloudflare API-Token-Seite einsehen, es muss kein neuer Token erstellt werden, wir benötigen den „Global API Key“. Danach überprüfen wir, ob die Konfiguration korrekt ist, mit folgendem Befehl:
ddclient -daemon=0 -debug -verbose -noquiet
Danach richten wir den ddclient-Daemon als Systemdienst ein, damit er automatisch startet und seine Aufgaben im Hintergrund erledigt:
cp sample-etc_rc.d_init.d_ddclient.ubuntu /etc/init.d/ddclient update-rc.d ddclient defaults systemctl start ddclient systemctl status ddclient
Wenn wir damit fertig sind, überprüfen wir, ob der DNS-Eintrag auf der Cloudflare-Seite aktualisiert wurde?