Supposons que vous ayez publié un site web depuis votre réseau domestique et que vous ayez créé un enregistrement DNS pointant vers l’adresse IP publique de votre routeur. Comment maintenir à jour votre enregistrement DNS lorsque votre adresse IP publique change ? Il serait peut-être judicieux de mettre en place un service DNS dynamique Cloudflare.
Les fournisseurs de services Internet (FSI) attribuent généralement des adresses IP dynamiques à leurs abonnés, pouvant changer à tout moment. En conséquence, votre enregistrement DNS continue de pointer vers une adresse IP qui n’est plus la vôtre, rendant votre site web inaccessible.
Continuez à lire, car ce tutoriel vous aidera à maintenir à jour votre enregistrement DNS en utilisant l’interface de programmation d’application (API) de Cloudflare et PowerShell. Mettons-nous en marche !
Prérequis
Si vous envisagez de suivre ce tutoriel de manière pratique, voici les exigences dont vous avez besoin.
- 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.
Les domaines de premier niveau (TLD) gratuits tels que .ml, .ga, .tk, .cf et .gq ne sont pas applicables pour l’automatisation du DNS dynamique Cloudflare et ne fonctionneront pas avec ce tutoriel.
- A Cloudflare account. A free account is enough to use in this tutorial.
- Vous devez déjà avoir ajouté votre domaine à Cloudflare.
- Vous devez déjà avoir ajouté un enregistrement DNS sous votre domaine dans Cloudflare. L’enregistrement DNS A dans ce tutoriel sera demo.lazyexchangeadmin.cyou avec une adresse IP initiale de 0.0.0.0.

Qu’est-ce que Cloudflare Dynamic DNS?
Les enregistrements DNS sont intrinsèquement statiques et ne fonctionnent pas bien avec les adresses IP dynamiques. Maintenant, pour résoudre ce problème, vous devrez configurer un DNS dynamique. Heureusement, Cloudflare fournit une API qui vous permet de gérer les enregistrements DNS de manière programmatique.
Pour configurer un DNS dynamique Cloudflare, vous devrez exécuter un processus sur un client à l’intérieur de votre réseau qui effectue deux actions principales : obtenir l’adresse IP publique actuelle de votre réseau et mettre à jour automatiquement l’enregistrement DNS correspondant.
L’image ci-dessous montre le diagramme de haut niveau de la façon dont le flux de mise à jour DNS dynamique de Cloudflare se produit.

De nombreux clients de DNS dynamique sont disponibles à installer, principalement pour les systèmes Linux, comme sur un serveur Ubuntu ou un Raspberry PI. Des services de DNS dynamique tiers existent également, pouvant être payants ou gratuits. Mais dans ce tutoriel, vous déploierez un script de mise à jour DNS qui s’exécute sur PowerShell 7.1.
Obtention d’un jeton d’API Cloudflare
Lors de la mise à jour du DNS dynamique de Cloudflare de manière programmatique, votre script doit s’authentifier auprès de l’API Cloudflare. Ce n’est qu’alors que Cloudflare vous permettra d’apporter des modifications aux enregistrements DNS de votre compte.
Cloudflare vous permet de créer des jetons d’API avec les autorisations nécessaires à leur utilisation. Ensuite, vous pouvez utiliser le nom d’utilisateur de votre compte Cloudflare et le jeton d’API résultant pour vous authentifier auprès de l’API Cloudflare.
Pour créer un jeton d’API Cloudflare, suivez ces étapes.
1. Ouvrez votre navigateur, accédez à https://dash.cloudflare.com/login/ et connectez-vous à votre compte Cloudflare.
2. Après vous être connecté au tableau de bord Cloudflare, cliquez sur le bouton de profil en haut à droite et cliquez sur Mon Profil.

3. Ensuite, cliquez sur le lien de l’onglet Jetons d’API. Sous la section Jetons d’API, cliquez sur le bouton Créer un jeton. L’exemple ci-dessous suppose que vous n’avez pas encore créé de jetons d’API.

4. Sur la liste des modèles de jetons API, cliquez sur le modèle Modifier la zone DNS pour l’utiliser. Ce modèle vous permet de créer un jeton API avec des autorisations de modification pour toutes les zones DNS ou sélectionnées de votre compte.

5. Sous la section Ressources de zone sur la page Créer un jeton, cliquez sur la boîte déroulante la plus à droite et sélectionnez la zone DNS à inclure dans l’accès de ce jeton API. Après avoir choisi la zone DNS, cliquez sur Continuer vers le résumé.
Facultativement, pour limiter la période de validité du jeton API, remplissez les champs Date de début et Date de fin sous la section TTL. S’ils sont laissés vides, le jeton API n’aura pas de date d’expiration.

6. Passez en revue le résumé et assurez-vous que l’API a l’autorisation DNS:Modifier pour la zone DNS précédemment sélectionnée. Enfin, cliquez sur Créer le jeton pour créer le jeton API.

7. Après avoir créé le jeton API, copiez la valeur du jeton et assurez-vous de la stocker en toute sécurité. Traitez le jeton API comme vous traiteriez un mot de passe.

8. Retournez à l’onglet Jetons API et confirmez l’existence du jeton API que vous avez créé.

Configuration du script de mise à jour DNS dynamique Cloudflare
Vous avez maintenant le compte Cloudflare et le jeton API Cloudflare avec l’autorisation de modifier une zone DNS. Et ensuite ? Vous devrez mettre le jeton API à profit et l’intégrer à un script qui mettrait à jour automatiquement l’enregistrement DNS dynamique Cloudflare.
Ce tutoriel vous fournit un script PowerShell fonctionnel spécifiquement pour mettre à jour un enregistrement DNS dans Cloudflare.
Enregistrement du script
Suivez les étapes ci-dessous pour enregistrer le script PowerShell de DNS dynamique Cloudflare sur votre ordinateur client.
1. Décidez dans quel dossier enregistrer le script et créez ce dossier s’il n’existe pas encore. Dans cet exemple, l’emplacement du script est dans C:\CloudflareDDNS.
2. Ouvrez votre éditeur de code, tel que VSCode, et créez un nouveau fichier de script PowerShell appelé Update-CloudflareDDNS.ps1
. Enregistrez le script à l’intérieur du dossier C:\CloudflareDDNS.
3. Copiez le script ci-dessous, collez-le dans votre éditeur de code et enregistrez le fichier. Référez-vous aux commentaires en ligne pour comprendre ce que fait le script.
Exécution du script
Maintenant que vous avez enregistré le script de mise à jour dynamique de DNS Cloudflare, que faire ensuite ? Avant de déployer le script, il est essentiel de tester si sa fonctionnalité fonctionne. L’exécution du script nécessite quatre détails pour réussir, et ce sont les suivants :
Email
– qui est l’adresse e-mail de votre compte Cloudflare.Token
– le jeton API que vous avez précédemment créé à partir de votre compte Cloudflare.Domaine
– le nom de domaine DNS qui contient l’enregistrement DNS que vous souhaitez mettre à jour. (par exemple, lazyexchangeadmin.cyou).Enregistrement
– l’enregistrement DNS que vous souhaitez mettre à jour. (par exemple, demo.lazyexchangeadmin.cyou).
Pour exécuter le script, procédez comme suit.
1. Tout d’abord, ouvrez une session PowerShell. Ou, si vous utilisez VSCode, utilisez plutôt le terminal PowerShell de VSCode.
2. Ensuite, effectuez une recherche d’enregistrement DNS pour confirmer l’adresse IP actuelle de l’enregistrement DNS. Pour ce faire, exécutez la cmdlet Resolve-DnsName
, comme vous pouvez le voir ci-dessous. Assurez-vous de fournir le nom de domaine pleinement qualifié (FQDN) avec le paramètre -Name
.
La commande devrait renvoyer l’enregistrement DNS que vous avez recherché, y compris son adresse IP.

3. Maintenant, invoquez le script Update-CloudflareDDNS.ps1
pour mettre à jour l’enregistrement DNS dans Cloudflare en exécutant la commande ci-dessous. Assurez-vous de modifier les champs Email
, Token
, Domain
et Record
. La commande ci-dessous suppose que votre script se trouve dans C:\CloudflareDDNS\Update-CloudflareDDNS.ps1.
Le script effectue ensuite les actions suivantes, comme vous pouvez le voir sur la capture d’écran ci-dessous.
- Valide le jeton d’API.
- Trouve le domaine contenant l’enregistrement DNS à mettre à jour.
- Trouve l’enregistrement DNS à mettre à jour.
- Compare l’adresse IP de l’enregistrement DNS avec l’adresse IP externe ou publique réelle.
- Met à jour l’adresse IP de l’enregistrement DNS dans Cloudflare.
- Affiche le résultat de la mise à jour du DNS dynamique.

4. Retournez ensuite sur votre tableau de bord Cloudflare et vérifiez si l’enregistrement DNS reflète la nouvelle adresse IP. La capture d’écran ci-dessous montre que l’adresse IP a changé pour la valeur de l’adresse IP externe après l’exécution du script de mise à jour.

5. Enfin, effectuez une autre recherche d’enregistrement DNS comme vous l’avez fait à l’étape 2 pour confirmer si la nouvelle adresse IP est déjà propagée publiquement.
La propagation de l’enregistrement DNS peut prendre plusieurs minutes, heures, voire jours. Dans cet exemple, la propagation de Cloudflare n’a pris que moins d’une minute.

Planification de la tâche de mise à jour dynamique DNS Cloudflare
À ce stade, vous disposez désormais d’un script fonctionnel qui met à jour votre enregistrement DNS dynamique Cloudflare. Mais exécuter le script manuellement à chaque fois n’est pas le but. Vous devez vous assurer que la mise à jour du DNS dynamique s’exécute automatiquement selon un horaire aussi souvent que nécessaire.
En fonction du système d’exploitation que vous utilisez, la façon dont vous planifiez l’exécution du script varie, comme une tâche cron sous Linux. Ce tutoriel créera une tâche planifiée Windows qui exécute le script de mise à jour du DNS dynamique Cloudflare toutes les cinq minutes.
Définition de l’action de la tâche planifiée
Votre tâche planifiée doit avoir une action, que vous pouvez créer en exécutant la cmdlet New-ScheduledTaskAction
. Dans cet exemple, l’action consiste à exécuter le script Update-CloudflareDDNS.ps1 en utilisant le fichier exécutable PowerShell pwsh.exe
.
Pour ce faire, ouvrez une nouvelle fenêtre PowerShell en tant qu’administrateur. Ensuite, copiez et exécutez le code ci-dessous dans PowerShell. Assurez-vous de modifier les variables $scriptPath
, $Email,
$Token
, $Domain
, et $Record
.
Création du déclencheur de la tâche planifiée
Après avoir défini ce que la tâche fera, vous devez ensuite créer un déclencheur ou un calendrier pour la tâche en exécutant la cmdlet New-ScheduledTaskTrigger
. Copiez le code ci-dessous et exécutez-le dans PowerShell pour créer un nouveau déclencheur de tâche qui s’exécute toutes les cinq minutes pendant une durée de dix ans.
Enregistrement de la nouvelle tâche planifiée dans le système
Enfin, vous êtes prêt à enregistrer la nouvelle tâche planifiée sur l’ordinateur. Pour ce faire, vous devrez exécuter la cmdlet Register-ScheduledTask
, de la même manière que le code ci-dessous. Copiez le code ci-dessous et exécutez-le dans PowerShell pour enregistrer la tâche planifiée.
La tâche planifiée résultante s’exécutera sous le compte local SYSTEM. N’hésitez pas à attribuer un compte utilisateur différent pour exécuter la tâche planifiée si nécessaire.
Comme vous pouvez le voir ci-dessous, la commande a créé la tâche planifiée, et le statut est prêt. À partir de ce point, le script s’exécutera à intervalles de cinq minutes.

Conclusion
Bien sûr! Voici la traduction en français de votre texte:
Garder les enregistrements DNS à jour avec les changements d’adresses IP dynamiques ne doit pas être un défi. Vous n’avez pas non plus besoin de payer pour un service DNS dynamique ! En gérant vos zones DNS dans Cloudflare, vous pouvez tirer parti de leur API, ce qui vous permet de mettre à jour vos enregistrements DNS de manière programmatique.
Vous avez appris dans ce tutoriel comment mettre à jour un enregistrement DNS dynamique Cloudflare en utilisant une combinaison d’appels API, de PowerShell 7 et de tâches planifiées. Tout cela vous permet de configurer votre mécanisme de mise à jour DNS dynamique Cloudflare une fois et de le laisser s’exécuter à intervalles réguliers sans surveillance.
Envisageriez-vous de gérer vos zones DNS avec Cloudflare pour profiter des avantages de son API ? Ou connaissez-vous une méthode plus pratique et accessible ?
Source:
https://adamtheautomator.com/cloudflare-dynamic-dns/