DDNS facile avec Cloudflare

Lorsque l’on veut auto héberger un service derrière sa box internet c’est un peu casse tête, et cela principalement à cause de la pénurie d’adresses IP. En effet les FAI ne fournissent aux particuliers que des adresses dynamiques, avec des baux variables et c’est pour cela que l’on peut garder une adresses plusieurs jours comme plusieurs mois.

C’est maintenant que le problème intervient, si on souhaite héberger un serveur accessible depuis le web on a besoin d’une adresse IP fixe. Et c’est ici que le DynamicDNS ou DDNS est utile, il permet de suivre les changements d’IP de votre box et de les lier à chaque changement à un domaine spécifique (ex : mabox.ddns.com).

Bien que très pratiques c’est hébergement imposent une chose : ne pas choisir son nom de domaine. Plus exactement on peut choisir le sous-domaine du domaine de l’hébergeur que l’on a choisit. Par exemple en étant chez DuckDNS le domaine imposé est « duckdns.org » et donc ma box sera accessible via « mabox.duckdns.org ». Cela fera très bien l’affaire mais si on veut utiliser son domaine « mabox.fr » cela sera impossible.

Mais comment faire alors ?

Chez Cloudflare il y la possibilité de mettre à jour l’enregistrement DNS de notre domaine automatiquement. Pour cela rien de plus simple, exécuter régulièrement un script qui va mettre à jour l’enregistrement voulu.

Oui mais j’ai un domaine qui n’est pas enregistré chez Cloudflare, comment faire ?

Pas de problème de ce côté là on peut aisément transférer son domaine d’un autre hébergeur chez Cloudflare via l’option « Transfer Domains » dans son compte Cloudflare.


Le script en question

Le script est disponible sur le github de KOp1-Git. Voici la commande pour récupérer le fichier « cloudflare-template.sh » :

wget https://raw.githubusercontent.com/K0p1-Git/cloudflare-ddns-updater/main/cloudflare-template.sh

On a donc téléchargé le script dans le répertoire actif, ce n’est pas obligatoire mais il vaut mieux le renommer :

mv cloudflare-template.sh cloudflare-ddns-updater.sh

On peut ensuite lui attribuer un droit d’exécution :

chmod +x cloudflare-ddns-updater.sh

Pour que notre script fonctionne il faut le rediriger vers le bon domaine, le bon compte, et le bon enregistrement DNS. On doit donc le modifier :

nano cloudflare-ddns-updater.sh

Au début du document il y donc un paragraphe où l’on doit renseigner nos informations (ici je ne marques que les champs nécéssaires) :

auth_email="[email protected]"
auth_method="global"
auth_key="ici votre clé api"
zone_identifier="ici votre zone identifier"
record_name="www.mabox.fr"
ttl="3600"
proxy="false"
sitename="Ma Box"

Pour récupérer sa clé API global (auth_key) il faut se rendre : https://dash.cloudflare.com/profile/api-tokens

Pour la clé zone_identifier il faut aller cliquer sur son domaine et cherche « API » et récupérer le Zone ID.

Il n’y a plus qu’à enregistrer le fichier (ctrl+x puis « y » et entrée pour nano).

Activer le script

Maintenant que tout est correctement renseigné il faut activer notre script. Pour cela on doit éditer une nouvelle tâche cron :

crontab -e

On y ajoute la ligne : (attention à bien renseigner le chemin vers le script)

* * * * * /bin/bash /chemin/vers/cloudflare-ddns-updater.sh

Et on finit par relancer cron :

/etc/init.d/cron reload

Et voilà ! Possibilité de faire tourner ça sur une VM, Container ou sur un SBC type Raspberry PI. Il n’y à plus qu’a supprimer les DynDNS tiers et à profiter !

Florent
Florent

Passionné de nouvelles technologies depuis mon enfance j'aime partager mes avis, connaissances ou expériences dans ce domaine.

Articles: 13

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *