Gérer un domaine dynamique DynDNS avec Debian 🔗

Posted by Médéric Ribreux 🗓 In blog/Debian/

#auto-hébergement #debian

Introduction

Comme ce blog est hébergé à la maison et que je n'ai pas envie d'y accéder avec une adresse IP, j'utilise un service de DNS dynamique. Pour faire simple, ce système permet d'attribuer dynamiquement un nom DNS à une adresse IP. Ce service est souvent gratuit, ce qui lui confère un certain intérêt !

Toutefois, ces services gratuits sont plutôt orientés vers le dynamic DNS. Si on dispose d'une IP fixe, comme chez moi, il n'y a plus de dynamisme. Du coup, au bout d'un certain temps, les services de DNS dynamique estiment que la machine n'est plus disponible, car elle n'a jamais manifesté de changement d'adresse IP. Pour éviter les erreurs, ils envoient un email 5 jours avant pour réactiver le compte. Pour ma part, ça fait des mois que je le fais à la main et c'est assez pénible car ça arrive finalement assez souvent.

Mais heureusement, une solution existe sur notre distribution préférée: ddclient, un programme destiné à gérer ces histoires d'adresses IP dynamiques. Voyons comment l'utiliser au mieux…

Installation

Il convient avant tout d'installer le bousin.

Munissez-vous des éléments suivants car dpkg va vous poser des questions:

Ensuite, un simple:

aptitude install ddclient

Fonctionnement sur Debian

ddclient est avant tout un script Perl. C'est pour ça qu'il dépend du paquet perl5. Du coup, il est simple à gérer. Sa configuration est située dans un seul fichier nommé /etc/ddclient.conf. On peut l'utiliser de plusieurs manières:

A priori, par défaut, Debian configure ddclient comme un démon.

Ma configuration

ddclient étant un client versatile pour un nombre important de fournisseurs de DNS dynamiques, sa configuration est loin d'être triviale. Il y a des options générales mais certaines sont également présentes dans le fichier /etc/default/ddclient (notamment la variable daemon_interval qui précise la fréquence de MAJ).

Le principe de configuration est le suivant:

Dans mon cas, mon problème est que l'IP de la machine qui fait office de serveur n'est pas celle qui est publique. En effet, cette machine est située derrière un routeur qui fait du NAT. Seuls certains ports sont ouverts sur cette IP et le routeur passe les requêtes à la bonne machine en fonction de ces ports. L'adresse IP que le serveur connaît est donc celle qui est locale (réseau derrière le routeur).

Ainsi, pour que ddclient fonctionne, il est indispensable qu'il puisse récupérer l'adresse publique du routeur. Là où ddclient est performant, c'est qu'il sait interroger les services de dyndns.org pour récupérer l'information. Il faut indiquer qu'on va utiliser l'interface web et indiquer que la requête web est web=checkip.dyndns.org/.

Voici donc un aperçu de ma configuration qui marche:

# Variables générales:
pid=/var/run/ddclient.pid

# Méthode de détermination de l'adresse IP:
use=web, web=checkip.dyndns.org/

# Choix du protocole et indication des paramètres:
protocol=dyndns2
static=yes
server=members.dyndns.org
login=votre_login_qui_tue
password='votre_password_qui_tue'
votre_domaine.qui_tue.org

Pour plus d'informations sur les options de configuration, je vous invite à lire le fichier /usr/share/doc/ddclient/examples/sample-etc_ddclient.conf.gz qui est sans doute plus complet que ce qu'on peut trouver sur le site Web de ddclient.

Gestion du offline

Dyndns permet de router votre adresse DNS dynamique vers une page web temporaire indiquant que le serveur est éteint. Malheureusement, ddclient ne le prend pas en compte ! C'est dommage, ça serait bien de mettre en place une telle commande: lorsque le service web du serveur s'arrête ou avant que sa connexion PPP se termine, il pourrait être intéressant de signaler au fournisseur du service DNS Dynamique de router vers une page qui indique que le site est offline. M'en vais voir si c'est possible…

Références