Stel dat je een website hebt gepubliceerd vanuit je thuisnetwerk en je hebt een DNS-record aangemaakt dat wijst naar het publieke IP-adres van je router. Hoe houd je je DNS-record up-to-date wanneer je publieke IP-adres verandert? Misschien moet je overwegen om Cloudflare Dynamic DNS in te stellen.
Internetproviders (ISP’s) wijzen meestal dynamische IP-adressen toe aan hun abonnees, die op elk moment kunnen veranderen. Hierdoor blijft je DNS-record wijzen naar een IP-adres dat niet langer van jou is, en wordt je website ontoegankelijk.
Blijf lezen, want deze handleiding zal je helpen om je DNS-record bij te werken met behulp van de Application Programming Interface (API) van Cloudflare en PowerShell. Laten we aan de slag gaan!
Vereisten
Als je van plan bent om deze handleiding praktisch te volgen, zijn hier de vereisten die je nodig hebt.
- 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.
Gratis top-level domeinen (TLD’s), zoals .ml, .ga, .tk, .cf en .gq, zijn niet van toepassing voor Cloudflare Dynamic DNS-automatisering en zullen niet werken met deze handleiding.
- A Cloudflare account. A free account is enough to use in this tutorial.
- Je moet al je domein aan Cloudflare hebben toegevoegd.
- Je moet al een DNS-record hebben toegevoegd onder je domein in Cloudflare. Het DNS A-record in deze handleiding zal demo.lazyexchangeadmin.cyou zijn met een initiële IP-adres van 0.0.0.0.

Wat is Cloudflare Dynamische DNS?
DNS-records zijn inherent statisch en werken niet goed met dynamische IP-adressen. Nu, om dat probleem op te lossen, moet je dynamische DNS instellen. Gelukkig biedt Cloudflare een API waarmee je DNS-records programmatisch kunt beheren.
Om Cloudflare dynamische DNS in te stellen, moet je een proces uitvoeren op een client binnen je netwerk dat twee hoofdacties uitvoert: het huidige openbare IP-adres van je netwerk ophalen en automatisch het overeenkomstige DNS-record bijwerken.
De onderstaande afbeelding toont het hoog-niveau diagram van hoe de Cloudflare dynamische DNS-update plaatsvindt.

Er zijn veel dynamische DNS-clients beschikbaar om te installeren, voornamelijk voor Linux-systemen, zoals op een Ubuntu-server of Raspberry PI. Er bestaan ook externe dynamische DNS-services die betaald of gratis kunnen zijn. Maar in deze handleiding implementeer je een DNS-updater-script dat wordt uitgevoerd op PowerShell 7.1.
Het verkrijgen van een Cloudflare API Token
Wanneer je de Cloudflare dynamische DNS-record programmatisch bijwerkt, moet je script zich authentiseren bij de Cloudflare API. Alleen dan staat Cloudflare toe dat je wijzigingen aanbrengt in de DNS-records van jouw account.
Cloudflare staat toe dat je API-tokens maakt met voldoende rechten voor het beoogde doel. Vervolgens kun je jouw Cloudflare-accountgebruikersnaam en het resulterende API-token gebruiken om je te authenticeren bij de Cloudflare API.
Volg deze stappen om een Cloudflare API Token aan te maken.
1. Open je browser, ga naar https://dash.cloudflare.com/login/ en log in op je Cloudflare-account.
2. Nadat je bent ingelogd op het Cloudflare-dashboard, klik je op de profielknop in de rechterbovenhoek en klik je op Mijn Profiel.

3. Klik vervolgens op de API Tokens-tablink. Onder de API Tokens-sectie klik je op de knop Token Maken. Het voorbeeld hieronder gaat ervan uit dat je nog geen API-tokens hebt aangemaakt.

4. Op de lijst van API-token sjablonen, klik op het Bewerk zone DNS sjabloon om het te gebruiken. Dit sjabloon stelt u in staat om een API-token te maken met bewerkingsrechten voor alle of geselecteerde DNS-zones in uw account.

5. Onder de Zonebronnen sectie op de Token maken pagina, klik op de rechter dropdown-box en selecteer de DNS-zone om op te nemen in de toegang van dit API-token. Nadat u de DNS-zone heeft gekozen, klik op Doorgaan naar samenvatting.
Optioneel, om de geldigheidsduur van het API-token te beperken, vul de Startdatum en Einddatum in onder de TTL sectie. Indien blanco gelaten, zal het API-token geen vervaldatum hebben.

6. Controleer de samenvatting en zorg ervoor dat de API DNS:Bewerken toestemming heeft voor de eerder geselecteerde DNS-zone. Klik ten slotte op Token maken om het API-token te maken.

7. Nadat u het API-token heeft aangemaakt, kopieer de tokenwaarde en zorg ervoor dat u deze veilig opslaat. Behandel het API-token zoals u een wachtwoord zou behandelen.

8. Ga terug naar het API-tokens tabblad en bevestig het bestaan van het API-token dat u heeft aangemaakt.

Het instellen van het Cloudflare Dynamische DNS Update Script
U heeft nu het Cloudflare-account en het Cloudflare API-token met toestemming om een DNS-zone te bewerken. Wat is de volgende stap? U moet het API-token gebruiken en integreren met een script dat de Cloudflare dynamische DNS-record programmatisch bijwerkt.
Deze tutorial biedt u een werkend PowerShell-script specifiek voor het bijwerken van een DNS-record in Cloudflare.
Het Script Opslaan
Volg de onderstaande stappen om het Cloudflare dynamische DNS PowerShell-script op uw clientcomputer op te slaan.
1. Beslis in welke map u het script wilt opslaan en maak die map aan als deze nog niet bestaat. In dit voorbeeld bevindt de locatie van het script zich in C:\CloudflareDDNS.
2. Open uw code-editor, zoals VSCode, en maak een nieuw PowerShell-scriptbestand genaamd Update-CloudflareDDNS.ps1
. Sla het script op in de map C:\CloudflareDDNS.
3. Kopieer het onderstaande script, plak het in uw code-editor en sla het bestand op. Raadpleeg de inline opmerkingen om te begrijpen wat het script doet.
Het Script Uitvoeren
Nu je het Cloudflare dynamische DNS-update script hebt opgeslagen, wat is de volgende stap? Voordat je het script implementeert, is het essentieel om te testen of de functionaliteit ervan werkt. Het uitvoeren van het script vereist vier details om succesvol te zijn, en dat zijn:
E-mail
– dit is het e-mailadres voor je Cloudflare-account.Token
– de API-token die je eerder hebt aangemaakt vanuit je Cloudflare-account.Domein
– de domeinnaam van het DNS dat het DNS-record bevat dat je wilt bijwerken. (bijv. lazyexchangeadmin.cyou).Record
– het DNS-record dat je wilt bijwerken. (bijv. demo.lazyexchangeadmin.cyou).
Om het script uit te voeren, volg je deze stappen.
1. Open eerst een PowerShell-sessie. Of als je VSCode gebruikt, gebruik dan in plaats daarvan de PowerShell-terminal van VSCode.
2. Voer vervolgens een DNS-recordopzoeking uit om het huidige IP-adres van het DNS-record te bevestigen. Voer hiervoor het Resolve-DnsName
-cmdlet uit, zoals je hieronder kunt zien. Zorg ervoor dat je de volledig gekwalificeerde domeinnaam (FQDN) opgeeft met de -Name
-parameter.
De opdracht zou het DNS-record moeten retourneren dat je hebt opgezocht, inclusief het IP-adres.

3. Voer nu het script Update-CloudflareDDNS.ps1
uit om het DNS-record in Cloudflare bij te werken door de onderstaande opdracht uit te voeren. Zorg ervoor dat je de Email
, Token
, Domein
en Record
aanpast. De onderstaande opdracht gaat ervan uit dat je script zich bevindt in C:\CloudflareDDNS\Update-CloudflareDDNS.ps1.
Het script voert vervolgens de volgende acties uit, zoals te zien is op de onderstaande screenshot.
- Valideert de API-token.
- Vindt het domein met het te updaten DNS-record.
- Vindt het te updaten DNS-record.
- Vergelijkt het IP-adres van het DNS-record met het daadwerkelijke externe of publieke IP-adres.
- Werk het IP-adres van het DNS-record bij in Cloudflare.
- Toont het resultaat van de dynamische DNS-update.

4. Ga terug naar je Cloudflare-dashboard en controleer of het DNS-record het nieuwe IP-adres weergeeft. De onderstaande screenshot laat zien dat het IP-adres is gewijzigd naar de waarde van het externe IP-adres na het uitvoeren van het update-script.

5. Voer tot slot nog een DNS-recordzoekopdracht uit zoals je deed in stap 2 om te bevestigen of het nieuwe IP-adres al openbaar is verspreid.
DNS-recordverspreiding kan enkele minuten, uren of zelfs dagen duren. In dit voorbeeld duurde de verspreiding via Cloudflare slechts minder dan een minuut.

Planning van de Cloudflare Dynamische DNS Update Taak
Op dit moment heb je een werkend script dat je Cloudflare dynamische DNS-record bijwerkt. Maar het handmatig uitvoeren van het script telkens is niet het doel. Je moet ervoor zorgen dat de dynamische DNS-update automatisch op een schema wordt uitgevoerd, zo vaak als nodig is.
Afhankelijk van welk besturingssysteem je gebruikt, varieert de manier waarop je het script inplant om te worden uitgevoerd, zoals een cron-taak in Linux. Deze tutorial zal een geplande taak voor Windows maken die het Cloudflare dynamische DNS-update script elke vijf minuten uitvoert.
Het definiëren van de Actie voor de Geplande Taak
Je geplande taak moet een actie hebben, die je kunt maken door het New-ScheduledTaskAction
cmdlet uit te voeren. In dit voorbeeld is de actie om het Update-CloudflareDDNS.ps1 script uit te voeren met behulp van het PowerShell uitvoerbare bestand pwsh.exe
.
Om dit te doen, open je een nieuwe PowerShell-venster als beheerder. Kopieer en voer vervolgens de onderstaande code uit in PowerShell. Zorg ervoor dat je de $scriptPath
, $Email,
$Token
, $Domain
en $Record
variabelen wijzigt.
Het aanmaken van de Geplande Taaktrigger
Nadat je hebt gedefinieerd wat de taak zal doen, moet je vervolgens een trigger of schema voor de taak maken door het New-ScheduledTaskTrigger
cmdlet uit te voeren. Kopieer de onderstaande code en voer deze uit in PowerShell om een nieuwe taaktrigger aan te maken die elke vijf minuten binnen een periode van tien jaar wordt uitgevoerd.
Het registreren van de nieuwe geplande taak in het systeem
Eindelijk ben je klaar om de nieuwe geplande taak op de computer te registreren. Hiervoor moet je het Register-ScheduledTask
cmdlet uitvoeren, net zoals de onderstaande code. Kopieer de code hieronder en voer deze uit in PowerShell om de geplande taak te registreren.
De resulterende geplande taak wordt uitgevoerd onder het account van lokaal SYSTEM. Voel je vrij om, indien nodig, een ander gebruikersaccount toe te wijzen om de geplande taak uit te voeren.
Zoals je hieronder kunt zien, heeft de opdracht de geplande taak aangemaakt, en de status is gereed. Vanaf dit punt zal het script op regelmatige basis, om de vijf minuten, worden uitgevoerd.

Conclusie
Het up-to-date houden van DNS-records bij veranderingen in dynamische IP-adressen hoeft geen uitdaging te zijn. Je hoeft ook niet te betalen voor een dynamische DNS-service! Door je DNS-zones te beheren in Cloudflare, kun je profiteren van hun API, waardoor je je DNS-records programmatisch kunt bijwerken.
Je hebt in deze tutorial geleerd hoe je een Cloudflare dynamische DNS-record kunt bijwerken met behulp van een combinatie van API-aanroepen, PowerShell 7 en geplande taken. Dit stelt je in staat om je Cloudflare dynamische DNS-update mechanisme eenmaal te configureren en de update automatisch te laten uitvoeren op een interval.
Zou je overwegen om je DNS-zones te beheren met Cloudflare om te profiteren van de voordelen van de API? Of is er een meer handige en toegankelijke manier die je kent?
Source:
https://adamtheautomator.com/cloudflare-dynamic-dns/