dns

[Synology] Distribuer un service DDNS grâce à votre serveur et Gandi

Cet article a été rédigé il y a 5 années ! Il commence à dater, mais n'est pas forcément obsolète.. Lisez-le en gardant cela en tête !
Bonjour, L’API Gandi est un outil merveilleux ! Voyez dans cet article comment procéder pour permettre à vos amis de se débarrasser de DynDNS, No-IP, etc.. Et proposer vous même un service DDNS. C’est facile, et ça ne coûte rien.. !   /!\ Article réécrit le 25/04/2014 Je n’ai jamais trouvé les offres gratuites DynDNS très fiables. De plus, j’étais constamment spamé par mail.. Et puis après payer $30 (Offre perso) Je trouve ça honteux.. En sachant qu’un domaine c’est 15€ chez Gandi par exemple.. Après avoir découvert l’API Gandi, j’ai donc eu l’idée de proposer à des amis un service ddns pour leur simplifier la vie ! Et leur montrer que les services DynDNS,.. on peut aussi faire sans de nos jours, même si on a des IP Dynamiques.. Aujourd’hui, je souhaiterai donc vous présenter la procédure, si jamais vous souhaitez faire de même 😉 Remarque : on a pas besoin d’avoir un Syno si l’on comprend le concept et que l’on a un compte Gandi 🙂 C’est pourquoi je vais détaillé les actions à effectuer pour installer l’apigandi, néanmoins vous trouverez pour les utilisateurs Syno le paquet geasy en fin d’article ! Leur permettant d’installer le système et ajouter de nouveau utilisateurs !

I) Mise en place de la Gandi API

Pour cette partie, je vous conseille déjà de suivre mon premier article sur la mise en place d’un nom de domaine avec la Gandi API. En effet, avant de comprendre dans la généralité ce qu’est la Gandi API et comment l’on va organiser cela, il vaut mieux déjà avoir vu le cas particulier de mon premier article. Une fois cela fait, supprimer le dossier /Volume1/homes/admin/gandyn, s’il existe, si vous avez suivi le premier article en entier. Pensez donc à sauvegarder votre apikey avant toute chose pour éviter d’avoir à la chercher !! 🙂 Je pense que permettre à votre client d’accéder à la Gandi API est une très mauvaise chose.. C’est pourquoi il vous faudra séparer récupération de l’ip sur le serveur et la mise à jour de cette derniers dans les zones dns. Tout se passera dans le dossier admin qui devra être bien entendu sécurisé
chmod -R 711 /volume1/homes/admin
A présent, il va falloir lancer les commandes suivantes, pour installer la nouvelle api généralisée :
cd /volume1/homes/admin/ wget http://partage.gauss-it.net/syno/apigandi/apigandi_service.zip && unzip apigandi_service.zip chmod -R 755 apigandi_service && chown -R admin:users apigandi_service mv apigandi_service apigandi
Une fois cela fait, rentrez dans le dossier. Vous y trouverez :
  • un fichier apikey, où mettre votre clef
  • un fichier maindomain, où mettre votre nom de domaine (expl : gauss-it.net à mettre dans maindomain)
  • un fichier update_api, qui exécute tour à tour les dossiers clients et votre dossier principal
  • un dossier my_domain, qui est la structure gandyn permettant de mettre à jour UNIQUEMENT votre domaine principal. Ce dossier est à renommer du nom mis dans le fichier maindomain (dans mon expl gauss-it.net)
A présent passons à la partie suivante, nous allons voir comment rajouter des clients dans notre service de DDNS.  

II) Création de l’utilisateur sur votre serveur

Un utilisateur, client du service de ddns, devra être créé. Ainsi qu’un groupe spécial. Chez moi, le groupe s’appelle network, pour qu’ils aient un status spécial par rapport aux autres membres !! Si jamais un virtualhost existe déjà avec le même nom que votre client, le virtualhost sera surplanté par votre client. C’est pourquoi l’utilisateur ne pourra pas choisir n’importe quel nom et c’est donc à vous de l’autoriser ou le changer si nécessaire ! Une fois l’utilisateur créé sur votre serveur, il faut que vous ajoutiez une entrée dans le fichier de zone de votre compte gandi
sous-domain 300 IN A 1.2.3.4
Sinon vous aurez une erreur du type :

Traceback (most recent call last):

  File "src/gandyn.py", line 160, in <module>

    main(sys.argv, globals(), locals())

  File "src/gandyn.py", line 142, in main

    previous_ip_address = gandi_updater.get_record_value()

  File "src/gandyn.py", line 53, in get_record_value

    )[0][‘value’]

IndexError: list index out of range

  Et lancez le script ./update_api pour être sûr que tout fonctionne ! N’hésitez pas à regarder votre fichier de zone et les logs de chaque utilisateur du service dans le dossier <user>/logs/gandyn.log  

III) Création du lien client-serveur

À présent, l’idée est simple. Créer un lien entre votre serveur et celui de la personne dont l’IP est dynamique. Pour cela, il faudra donc préparer le serveur distant, ainsi que le votre.
  1. Créer une paire ssh sur le serveur distant pour se passer de l’authentification par mot de passe.
  2. Autoriser la clef ssh sur votre serveur
  3. Envoyer l’ip courante du serveur distant au votre, régulièrement. (expl : vérification toutes les heures, puis envoie si nécessaire)
Pour cela, j’ai créé un petit script disponible ici : http://partage.gauss-it.net/syno/apigandi/update_ddns et permettant d’envoyer l’ip de l’ordinateur client vers un serveur distant. (n’oubliez pas de changer le chmod !) Il va falloir dans un premier temps modifier comme indiqué dans le fichier update_ddns, les différentes variables. De plus, pour pour automatiser l’envoi veuillez lancez les commandes suivantes :
apt-get install crontab scp crontab -e # et ajouter la commande "0 */1   *   *   *   ~/update_ddns"
  Une fois cela fait le serveur distant vous fournira son adresse ip actuelle dans le fichier /volume1/homes/<user>/extip. Il ne vous reste plus qu’à créer le dossier pour votre nouvel utilisateur dans /volume1/homes/admin/apigandi. Ce que nous allons voir dès à présent !! 🙂  

IV) Finalisation de l’installation du service

a. Mise en place d’un nouveau client

Pour ce faire lancez simplement les commandes suivantes, pour chaque nouvel utilisateur : cd /volume1/homes/admin wget http://partage.gauss-it.net/syno/apigandi/apigandi_client.zip  && unzip apigandi_client.zip chmod -R 755 apigandi_client && chown -R admin:users apigandi_client Commencez par changer le nom du dossier "apigandi_client"  par le nom de l’utilisateur nouvellement créé. Puis entrez dans le dossier et modifier le fichier subdomain, en indiquant le nom du sous-domaine que vous voulez utiliser (uniquement le sous-domaine : machin.gauss-it.net -> machin à mettre dans le fichier subdomain).    

b. Automatisation des requêtes gandyn

Le script-shell ‘update_api’ va chercher les dossiers de chaque client dans /volume1/homes/admin/apigandi/ et lancer la mise à jour de leur ip dans le fichier de zones. Ce script permet de n’avoir à écrire qu’une crontab sur l’interface du DSM (perso j’ai opté pour un update toutes les 4 heures) et la voici en image ! 🙂 crontab_gandyn     Conclusion, Comme je le disais en début d’article, voici la commande d’installation de l’apigandi pour Geasy, n’hésitez pas à la lancer à chaque nouvel utilisateur. Avec ce petit article vous êtes à présent en mesure de distribuer votre propre service de DDNS pour vos amis, et ainsi peut-etre aussi rentabiliser votre nom de domaine ! 🙂

Laisser un commentaire

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