Inhalt

Cloudflare DynDNS

Vorwort

Die meisten Internetanschlüsse verfügen über dynamische IP Adressen, das heißt in unregelmäßigen Abständen erhalten alle Nutzer neue Adressen. Um zuhause gehostete Dienste weiterhin zu erreichen, muss die neue IP Adresse im DNS hinterlegt werden. Mein DNS Anbieter ist Cloudflare, deshalb werde ich via verfügbarer API darauf zugreifen und im Falle einer Änderung meine neue Heimadresse im System hinterlegen. Somit bleiben meine Cloud, VPN oder Webserver erreichbar, sollte sich meine IP Adresse durch Router Neustart geändert haben.

Realisiert wird dies mithilfe eines Bash Skriptes. Dieses muss mit den nötigen Informationen ausgestattet werden und wird anschließend mithilfe eines Cronjobs in festgelegten Intervallen erneut ausgeführt.

Installation

Zu Beginn muss lediglich das Github Repository heruntergeladen werden, dies geschieht über folgenden Befehl:

1
git clone https://github.com/K0p1-Git/cloudflare-ddns-updater.git

Im Anschluss daran wird das enthaltene Template kopiert und umbenannt:

1
cp cloudflare-template.sh cloudflare-prod.sh

Danach werden die benötigten Zugangsdaten editiert:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# The email used to login 'https://dash.cloudflare.com'
auth_email=""                                      
# Set to "global" for Global API Key or "token" for Scoped API Token 
auth_method="token"                                
# Your API Token or Global API Key
auth_key=""                                        
# Can be found in the "Overview" tab of your domain
zone_identifier=""                                 
# Which record you want to be synced
record_name=""                                     
# Set the proxy to true or false
proxy=false                                        

Nun zur Erklärung:

  • Der erste Parameter »auth_email« beinhaltet die Mailadresse, welche für den Login zum Cloudflare Account benutzt wird.
  • Als »auth_method« stehen zwei Optionen zur Verfügung. Aus Gründen der Sicherheit sollte für das Projekt ein eigener Token erstellt werden. Den entsprechenden Token kann man via »Profil« -> »API-Token« -> »Token erstellen« anfordern. Als Vorlage kann das Template zum Verwalten der Zonen-DNS verwendet werden. Innerhalb der Vorlage kann die Domain spezifiziert werden und anschließend erhalten wir den Token, welchen wir an unser Skript als Parameter »auth_key« übergeben.
  • Der »Zone Identifier« ist im Deutschen Dashboard die »Zonen-ID« und lässt sich im »Überblick« Reiter unter API -> Zonen-ID finden.
  • Der »record_name« beschreibt die gewünschte (Sub-)Domain, welche bei Änderung der IP Adresse aktualisiert werden soll.
  • Zuletzt kann definiert werden, ob der Traffic durch den Cloudflare Proxy geleitet werden soll, oder nicht. Die Einträge müssen hierfür als ›true‹ oder ›false‹ definiert werden.

Jetzt wird das Skript noch ausführbar gemacht:

1
chmod +x cloudflare-prod.sh

Danach kann der passende Cronjob erstellt werden. Hierfür gibt es bei Bedarf auch Hilfeseiten zur Erstellung.

INFO: Da das Skript keinerlei erhöhte Rechte erfordert kann es als normaler User ausgeführt werden und sollte keinesfalls mit root-Rechten gestartet werden.

1
crontab -e
1
*/5 * * * * /pfad/zum/skript/cloudflare-prod.sh >/dev/null 2>&1

In meinem Beispiel Cronjob wird das Skript alle 5 Minuten ausgeführt.