Angenommen, Sie haben eine Website aus Ihrem Heimnetzwerk veröffentlicht und einen DNS-Eintrag erstellt, der auf die öffentliche IP-Adresse Ihres Routers verweist. Wie halten Sie Ihren DNS-Eintrag aktuell, wenn sich Ihre öffentliche IP-Adresse ändert? Möglicherweise sollten Sie in Betracht ziehen, eine dynamische DNS von Cloudflare einzurichten.
Internetdienstanbieter (ISP) weisen ihren Abonnenten in der Regel dynamische IP-Adressen zu, die sich jederzeit ändern können. Dadurch bleibt Ihr DNS-Eintrag auf eine IP-Adresse verweisen, die nicht mehr Ihnen gehört, und Ihre Website wird unzugänglich.
Lesen Sie weiter, denn dieses Tutorial wird Ihnen helfen, Ihren DNS-Eintrag mithilfe der Anwendungsprogrammierschnittstelle (API) von Cloudflare und PowerShell aktuell zu halten. Legen wir los!
Voraussetzungen
Wenn Sie dieses Tutorial praktisch umsetzen möchten, benötigen Sie die folgenden Voraussetzungen.
- A computer with PowerShell 7.1 where you’ll run the Cloudflare dynamic DNS update script. This tutorial will use a Windows 10 computer.
- A script editor of your choice. This tutorial will use Visual Studio Code v1.59.1 (recommended).
- A domain that you already own. The example domain in this tutorial is lazyexchangeadmin.cyou.
Kostenlose Top-Level-Domains (TLD) wie .ml, .ga., .tk, .cf und .gq sind für die automatische Cloudflare Dynamic DNS nicht geeignet und funktionieren nicht mit diesem Tutorial.
- A Cloudflare account. A free account is enough to use in this tutorial.
- Du musst bereits deine Domain zu Cloudflare hinzugefügt haben.
- Du musst bereits einen DNS-Eintrag unter deiner Domain in Cloudflare hinzugefügt haben. Der DNS-A-Eintrag in diesem Tutorial wird demo.lazyexchangeadmin.cyou mit der anfänglichen IP-Adresse 0.0.0.0 sein.

Was ist Cloudflare Dynamic DNS?
DNS-Einträge sind von Natur aus statisch und funktionieren nicht gut mit dynamischen IP-Adressen. Um dieses Problem zu lösen, musst du dynamisches DNS einrichten. Glücklicherweise bietet Cloudflare eine API, mit der du DNS-Einträge programmgesteuert verwalten kannst.
Um Cloudflare Dynamic DNS einzurichten, musst du einen Prozess auf einem Client in deinem Netzwerk ausführen, der zwei Hauptaufgaben erledigt: die aktuelle öffentliche IP-Adresse deines Netzwerks abrufen und den entsprechenden DNS-Eintrag automatisch aktualisieren.
Das folgende Bild zeigt das High-Level-Diagramm, wie der Cloudflare Dynamic DNS Update-Ablauf erfolgt.

Es gibt viele dynamische DNS-Clients, die installiert werden können, hauptsächlich für Linux-Systeme wie ein Ubuntu-Server oder Raspberry Pi. Es gibt auch Drittanbieter-DNS-Dienste, die kostenpflichtig oder kostenlos sein können. In diesem Tutorial verwenden Sie jedoch ein DNS-Updater-Skript, das unter PowerShell 7.1 ausgeführt wird.
Erhalten eines Cloudflare API-Tokens
Wenn Sie den Cloudflare Dynamic DNS-Eintrag programmgesteuert aktualisieren möchten, muss sich Ihr Skript bei der Cloudflare-API authentifizieren. Nur dann erlaubt Ihnen Cloudflare, Änderungen an den DNS-Einträgen in Ihrem Konto vorzunehmen.
Cloudflare ermöglicht Ihnen das Erstellen von API-Tokens mit ausreichenden Berechtigungen für diesen Zweck. Sie können dann Ihren Cloudflare-Benutzernamen und das resultierende API-Token verwenden, um sich bei der Cloudflare-API zu authentifizieren.
Um ein Cloudflare API-Token zu erstellen, befolgen Sie diese Schritte.
1. Öffnen Sie Ihren Browser, navigieren Sie zu https://dash.cloudflare.com/login/ und melden Sie sich in Ihrem Cloudflare-Konto an.
2. Nach dem Anmelden im Cloudflare-Dashboard klicken Sie auf die Profilschaltfläche in der oberen rechten Ecke und klicken Sie auf Mein Profil.

3. Klicken Sie als Nächstes auf den Link API Tokens. Klicken Sie unter dem Abschnitt API Tokens auf die Schaltfläche Token erstellen. Das folgende Beispiel geht davon aus, dass Sie bisher noch keine API-Tokens erstellt haben.

4. Klicken Sie auf der Liste der API-Token-Vorlagen auf die Vorlage „Zone-DNS bearbeiten“, um sie zu verwenden. Diese Vorlage ermöglicht es Ihnen, ein API-Token mit Bearbeitungsberechtigung für alle oder ausgewählte DNS-Zonen in Ihrem Konto zu erstellen.

5. Unter dem Abschnitt „Zonenressourcen“ auf der Seite „Token erstellen“ klicken Sie auf das rechte Dropdown-Feld und wählen Sie die DNS-Zone aus, die in den Zugriff dieses API-Tokens einbezogen werden soll. Nachdem Sie die DNS-Zone ausgewählt haben, klicken Sie auf „Weiter zur Zusammenfassung“.
Optional: Um den Gültigkeitszeitraum des API-Tokens einzuschränken, füllen Sie das Feld „Startdatum“ und „Enddatum“ im Abschnitt „TTL“ aus. Wenn Sie diese Felder leer lassen, hat das API-Token kein Ablaufdatum.

6. Überprüfen Sie die Zusammenfassung und stellen Sie sicher, dass die API die Berechtigung „DNS:Edit“ für die zuvor ausgewählte DNS-Zone hat. Klicken Sie abschließend auf „Token erstellen“, um das API-Token zu erstellen.

7. Nachdem Sie das API-Token erstellt haben, kopieren Sie den Token-Wert und stellen Sie sicher, dass Sie ihn sicher aufbewahren. Behandeln Sie das API-Token wie ein Passwort.

8. Gehen Sie zur Registerkarte „API-Tokens“ zurück und bestätigen Sie die Existenz des von Ihnen erstellten API-Tokens.

Einrichten des Cloudflare Dynamic DNS Update Scripts
Sie haben jetzt das Cloudflare-Konto und das Cloudflare-API-Token mit Bearbeitungsberechtigung für eine DNS-Zone. Was kommt als Nächstes? Sie müssen das API-Token verwenden und es mit einem Skript integrieren, das den Cloudflare Dynamic DNS-Eintrag programmgesteuert aktualisiert.
Dieses Tutorial bietet Ihnen ein funktionierendes PowerShell-Skript speziell zum Aktualisieren eines DNS-Eintrags in Cloudflare.
Speichern des Skripts
Befolgen Sie die folgenden Schritte, um das PowerShell-Skript für dynamisches DNS in Cloudflare auf Ihrem Client-Computer zu speichern.
1. Entscheiden Sie, in welchen Ordner Sie das Skript speichern möchten, und erstellen Sie diesen Ordner, wenn er noch nicht vorhanden ist. In diesem Beispiel befindet sich das Skript im Ordner C:\CloudflareDDNS.
2. Öffnen Sie Ihren Code-Editor, z. B. VSCode, und erstellen Sie eine neue PowerShell-Skriptdatei namens Update-CloudflareDDNS.ps1
. Speichern Sie das Skript im Ordner C:\CloudflareDDNS.
3. Kopieren Sie das unten stehende Skript, fügen Sie es in Ihren Code-Editor ein und speichern Sie die Datei. Lesen Sie die Inline-Kommentare, um zu verstehen, was das Skript tut.
Das Skript ausführen
Nachdem Sie das Cloudflare-Dynamic-DNS-Aktualisierungsskript gespeichert haben, was kommt als nächstes? Bevor Sie das Skript bereitstellen, ist es wichtig, zu testen, ob seine Funktionalität funktioniert. Zum Ausführen des Skripts sind vier Details erforderlich, und das sind:
E-Mail
– dies ist die E-Mail-Adresse für Ihr Cloudflare-Konto.Token
– das API-Token, das Sie zuvor aus Ihrem Cloudflare-Konto erstellt haben.Domain
– der DNS-Domänenname, der den DNS-Eintrag enthält, den Sie aktualisieren möchten. (z. B. lazyexchangeadmin.cyou).Record
– der DNS-Eintrag, den Sie aktualisieren möchten. (z. B. demo.lazyexchangeadmin.cyou).
Um das Skript auszuführen, gehen Sie wie folgt vor.
1. Öffnen Sie zunächst eine PowerShell-Sitzung. Oder verwenden Sie, wenn Sie VSCode verwenden, stattdessen das VSCode PowerShell-Terminal.
2. Führen Sie als Nächstes eine DNS-Eintragssuche durch, um die IP-Adresse des aktuellen DNS-Eintrags zu bestätigen. Führen Sie dazu das Resolve-DnsName
-Cmdlet aus, wie unten gezeigt. Stellen Sie sicher, den vollqualifizierten Domänennamen (FQDN) mit dem -Name
-Parameter anzugeben.
Der Befehl sollte den DNS-Eintrag zurückgeben, den Sie gesucht haben, einschließlich seiner IP-Adresse.

3. Nun, rufen Sie das Skript Update-CloudflareDDNS.ps1
auf, um den DNS-Eintrag in Cloudflare zu aktualisieren, indem Sie den folgenden Befehl ausführen. Stellen Sie sicher, dass Sie die Werte für Email
, Token
, Domain
und Record
ändern. Der Befehl geht davon aus, dass sich Ihr Skript unter C:\CloudflareDDNS\Update-CloudflareDDNS.ps1 befindet.
Das Skript führt dann die folgenden Aktionen durch, wie im Screenshot unten zu sehen.
- Validiert das API-Token.
- Findet die Domain mit dem zu aktualisierenden DNS-Eintrag.
- Sucht den zu aktualisierenden DNS-Eintrag.
- Vergleicht die IP-Adresse des DNS-Eintrags mit der tatsächlichen externen oder öffentlichen IP-Adresse.
- Aktualisiert die IP-Adresse des DNS-Eintrags in Cloudflare.
- Zeigt das Ergebnis der dynamischen DNS-Aktualisierung an.

4. Gehen Sie zurück zu Ihrem Cloudflare-Dashboard und überprüfen Sie, ob der DNS-Eintrag die neue IP-Adresse widerspiegelt. Der Screenshot unten zeigt, dass sich die IP-Adresse nach dem Ausführen des Update-Skripts auf die externe IP-Adresse geändert hat.

5. Führen Sie abschließend eine weitere DNS-Aufzeichnungsabfrage wie in Schritt 2 durch, um zu bestätigen, ob die neue IP-Adresse bereits öffentlich propagiert wurde.
Die Propagierung des DNS-Eintrags kann mehrere Minuten, Stunden oder sogar Tage dauern. In diesem Beispiel hat die Cloudflare-Propagierung weniger als eine Minute gedauert.

Planung der Cloudflare Dynamic DNS Update-Aufgabe
An diesem Punkt haben Sie jetzt ein funktionierendes Skript, das Ihren Cloudflare Dynamic DNS-Eintrag aktualisiert. Das Skript manuell jedes Mal auszuführen ist jedoch nicht das Ziel. Sie müssen sicherstellen, dass die Dynamic DNS-Aktualisierung automatisch gemäß einem Zeitplan erfolgt, so oft wie nötig.
Je nachdem, welches Betriebssystem Sie verwenden, variiert die Art und Weise, wie Sie das Skript planen, wie beispielsweise ein Cron-Job in Linux. In diesem Tutorial wird eine geplante Aufgabe für Windows erstellt, die das Cloudflare Dynamic DNS-Aktualisierungsskript alle fünf Minuten ausführt.
Festlegen der Aktion für die geplante Aufgabe
Ihre geplante Aufgabe muss eine Aktion haben, die Sie mit dem Befehl New-ScheduledTaskAction
erstellen können. In diesem Beispiel besteht die Aktion darin, das Skript Update-CloudflareDDNS.ps1 mit der PowerShell-Ausführungsdatei pwsh.exe
auszuführen.
Öffnen Sie dazu ein neues PowerShell-Fenster als Administrator. Kopieren Sie den unten stehenden Code in PowerShell und führen Sie ihn aus. Stellen Sie sicher, dass Sie die Variablen $scriptPath
, $Email,
$Token
, $Domain
und $Record
ändern.
Erstellen des Auslösers für die geplante Aufgabe
Nachdem Sie definiert haben, was die Aufgabe tun wird, müssen Sie als nächstes einen Auslöser oder Zeitplan für die Aufgabe erstellen, indem Sie das New-ScheduledTaskTrigger
-Cmdlet ausführen. Kopieren Sie den folgenden Code und führen Sie ihn in PowerShell aus, um einen neuen Aufgaben-Auslöser zu erstellen, der alle fünf Minuten innerhalb eines Zeitraums von zehn Jahren ausgeführt wird.
Registrieren der neuen geplanten Aufgabe im System
Endlich sind Sie bereit, die neue geplante Aufgabe auf dem Computer zu registrieren. Dazu müssen Sie das Register-ScheduledTask
-Cmdlet ausführen, genau wie der folgende Code. Kopieren Sie den untenstehenden Code und führen Sie ihn in PowerShell aus, um die geplante Aufgabe zu registrieren.
Die resultierende geplante Aufgabe wird unter dem lokalen SYSTEM-Konto ausgeführt. Fühlen Sie sich frei, einem anderen Benutzerkonto zuzuweisen, um die geplante Aufgabe bei Bedarf auszuführen.
Wie unten zu sehen ist, hat der Befehl die geplante Aufgabe erstellt, und der Status ist bereit. Von diesem Punkt an wird das Skript in einem Fünf-Minuten-Intervall ausgeführt.

Abschluss
Halten Sie DNS-Einträge mit Änderungen der dynamischen IP-Adressen auf dem neuesten Stand, muss keine Herausforderung sein. Sie müssen auch nicht für einen dynamischen DNS-Dienst bezahlen! Durch das Verwalten Ihrer DNS-Zonen in Cloudflare können Sie von deren API profitieren und Ihre DNS-Einträge programmgesteuert aktualisieren.
Sie haben in diesem Tutorial gelernt, wie Sie einen dynamischen Cloudflare-DNS-Eintrag mithilfe von API-Aufrufen, PowerShell 7 und geplanten Aufgaben aktualisieren können. All dies ermöglicht es Ihnen, Ihren Cloudflare-dynamischen DNS-Aktualisierungsmechanismus einmal zu konfigurieren und das Update in regelmäßigen Intervallen unbeaufsichtigt laufen zu lassen.
Würden Sie in Betracht ziehen, Ihre DNS-Zonen mit Cloudflare zu verwalten, um die Vorteile seiner API zu nutzen? Oder kennen Sie eine bequemere und zugänglichere Möglichkeit?
Source:
https://adamtheautomator.com/cloudflare-dynamic-dns/