Files
SavaneWiki/docs/Savaneprod/2025-04-03-infomaniak_dyndns.md
jf c57cb0414e
All checks were successful
continuous-integration/drone/push Build is passing
Update docs/Savaneprod/2025-04-03-infomaniak_dyndns.md
2025-04-11 12:45:30 +02:00

3.6 KiB

title, summary, author, date
title summary author date
Mise à jour automatique de l'adresse IP publique dans l'entrée DNS A chez infomaniak DynDNS parce qu'on est des amateurs, hein.
JF
2025-04-03

Mettre à jour une adresse IP publique dynamique (a.k.a l'ip de la box) pour son nom de domaine avec Infomaniak

Avant, savaneprod.fr n'était pas chez Infomaniak (OVH puis Gandi) et à ma connaissance il n'existait pas la solution que propose Infomaniak. Il fallait utiliser ddclient ou un équivalent. Il se trouve que Synology implémente un équivalent graphique (c'est probablement la même chose sous le capot). Jusqu'à présent j'utilisais ce qui est décrit dans cette page : Mise à jour automatique de l'adresse IP publique dans l'entrée DNS A chez infomaniak. Synology implémente ovh en natif. Pour Gandi il fallait bidouiller un peu, et pour Infomaniak, encore plus.

Sauf que, biais classique du "c'est comme ça qu'on a fait jusqu'à présent". Je n'avais pas lu la FAQ Infomaniak jusqu'au bout : Utiliser DynDNS par API Infomaniak .

Hallelujah ! Un truc méga simple que tu peux utiliser partout sans rien avoir à installer. Excepté curl.

Il suffit donc d'un mini script à faire exécuter via la crontab. Avec Synology c'est différent mais pas beaucoup plus compliqué avec le Planificateur de tâches.

Créer les identifiants DynDNS pour un domaine :

  1. Aller sur le Manager : https://manager.infomaniak.com
  2. Dans la rubriques Domaines
  3. Cliquer sur le domaine qui doit recevoir les mises à jour d'adresse IP dynamique.
  4. Depuis la barre latérale (gauche), aller dans la rubrique Dynamic DNS
  5. AJOUTER UN DYNAMIC DNS
  6. Il faut créer un nouveau compte et un mot de passe. Arbitrairement selon tes considérations.

Déploiement du script de mise à jour de l'adresse IP

Création du script

Créer un fichier, par exemple dyndns_with_infomaniak.sh avec le contenu ci-dessous. Puis lui appliquer la permission d'exécution chmod u+x ddns.sh. Il faudra également créer un fichier dyndns_with_infomaniak.var avec les variables de domaines et identifiants.

#!/usr/bin/bash

DOMAINS=("fqdn1" "fqdn2")
USERNAME="default_username"
PASSWORD="default_password"

source /root/dyndns_with_infomaniak.var

echo "$(date +%Y-%m-%d\ %H:%M)"

for d in "${DOMAINS[@]}"; do
  OUTPUT=$(curl https://$USERNAME:$PASSWORD@infomaniak.com/nic/update?hostname=$d)
  if [[ $? -ne 0 ]]
  then
    echo $OUTPUT
  else
    echo "$OUTPUT for $d"
  fi
done

echo "------------------------"

exit 1

Faire exécuter le script régulièrement par le système

La crontab

crontab -e

⚠️ ça édite la crontab du compte utilisateurice courant. Pour le faire avec root, préfixer la commande avec le fameux sudo.

Dans la crontab j'ai ajouté la ligne suivante :

*/10 * * * * /root/dyndns_with_infomaniak.sh>>/var/log/dyndns_with_infomaniak.log

Ça me fait toujours mal à la tête de lire la programmation d'un "cron job". Dans le cas présent ça exécute le script toute les 10 minutes (ouais on sauve pas des vies, hein), à toutes heures de la journée, tous les jours du mois, tous les mois, tous les jours de la semaine. Si t'as envie de jouer, il exite Crontab guru. On voit également que la Standard output de l'exécution du script est redirigée vers un fichier de journalisation (log file en anglais) /var/log/ddns.log.