Gérer un serveur perso avec un nom de domaine et une ip dynamique chez Gandi

Avoir un serveur perso c’est bien. Avoir un nom de domaine perso c’est bien.

Tant qu’on a une ip fixe tout se passe bien. On règle son DNS pour que le domaine dirige vers l’ip fixe, et hop en a accès au serveur via le nom de domaine. Par contre, quand on a une ip dynamique, c’est bien plus galère. On ne peut pas aller changer la configuration DNS tous les jours pour gérer le changement automatique de l’ip.

Il existe une solution plutôt satisfaisante, même si elle n’est pas parfaite. Dans mon cas, ça fonctionne avec les services de Gandi, je ne sais pas si tout est possible avec d’autres providers (il faut avoir accès à une redirection web).

Pré-requis

La première étape est de mettre en place un service tel que ceux de « no-ip.com » ou « dyndns.org ». C’est gratuit et ça fonctionne bien. Le principe est d’indiquer notre ip dynamique actuelle aux serveurs dns du fournisseur choisi. On a donc accès à son serveur en utilisant un nom de domaine « exemple.no-ip.com » ou « exemple.dyndns.org ».

Il faut pour cela utiliser soit un programme sur le serveur, soit le configurer dans son routeur ADSL, je ne vais pas détailler la procédure ici, il existe de bons tutoriels sur le net. Je vais supposer que vous avez choisi « exemple.dyndns.org ».

Le fonctionnement habituel d’un DNS

Normalement, quand on a un nom de domaine, par exemple « domaine.fr », on met une entrée DNS de type « A », de ce type là :

@ 10800 IN A 217.70.184.38

« domaine.fr » sera alors dirigé vers l’ip « 217.70.184.38 »

Si on veut faire une redirection, on utilise un enregistrement de type « CNAME », comme ceci :

mail 10800 IN CNAME mail.provider.com.

« mail.domaine.fr » sera alors redirigé vers « mail.provider.com », quel que soit son ip.

La problématique

On peut donc penser qu’il suffit de mettre une redirection de « domaine.fr » vers « exemple.dyndns.org » pour que nos problèmes soient réglés, comme cela :

@ 10800 IN CNAME exemple.dyndns.org.

Le problème, c’est que les noms de domaine de second niveau (le « @ ») ne supportent pas les enregistrements de type « CNAME ». Seuls les enregistrements de troisième niveau et plus le permettent.

Ma solution

La solution que j’ai trouvé est la suivante. On redirige « www.domaine.fr » vers « exemple.dyndns.org » :

www 10800 IN CNAME exemple.dyndns.org.

De cette manière, si vous tapez « http://www.domaine.fr » dans votre navigateur web, vous tomberez bien sur votre site.
Ensuite, utilisez le service de redirection web de Gandi, et redirigez « http://domaine.fr » vers « http://www.domaine.fr », de manière directe et permanente. Ainsi, votre site web sera disponible si les gens oublient de mettre le « www » (personnellement je ne le mets jamais, mais c’est volontaire).

N’oubliez pas le point à la fin des lignes de configuration sinon ça ne fonctionnera pas. Ensuite, ne mettez pas 10800, ça correspond à un TTL de 3h (10800 secondes), donc un serveur dns accédant à cet enregistrement le gardera 3 heures avant de redemander sa valeur. Au moment où votre ip changera, il faudrait que le dns change instantanément, donc mettez un TTL de 0 secondes (on ne peut le faire que dans l’interface avancée).

www 0 IN CNAME exemple.dyndns.org.

Les limites de ma solution

Ma solution ne fonctionne que pour le protocole http. vous ne pourrez pas faire du ssh, du ftp, ou tout autre protocole vers « domaine.fr ». Vous devrez soit utiliser « www.domaine.fr », soit ajouter des redirections depuis « ssh.domaine.fr » ou « ftp.domaine.fr » (c’est clairement plus propre que d’utiliser « www »), mais ça ne devrait pas gêner vos utilisateurs, et si vous choisissez bien vos alias dns de manière logique, ça n’en sera que plus efficace.

Voilà, j’espère que ce petit tutoriel aidera certaines personnes.

blogroll

social