From 6ac980b18ed7625b9f21dab5d9d9226abd3c6425 Mon Sep 17 00:00:00 2001 From: jf Date: Thu, 3 Apr 2025 16:37:29 +0200 Subject: [PATCH] Add docs/Savaneprod/2025-04-03-infomaniak_dyndns.md --- .../2025-04-03-infomaniak_dyndns.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/Savaneprod/2025-04-03-infomaniak_dyndns.md diff --git a/docs/Savaneprod/2025-04-03-infomaniak_dyndns.md b/docs/Savaneprod/2025-04-03-infomaniak_dyndns.md new file mode 100644 index 0000000..ca04dfe --- /dev/null +++ b/docs/Savaneprod/2025-04-03-infomaniak_dyndns.md @@ -0,0 +1,64 @@ +--- +title: "Mise à jour automatique de l'adresse IP publique dans l'entrée DNS A chez infomaniak" +summary: "DynDNS parce qu'on est des amateurs, hein." +author: + - JF +date: 2025-04-03 +--- +# Mettre à jour une adresse IP publique dynamique (a.k.a l'ip de la box) pour son nom de domain avec Infomaniak + +Avant, savaneprod.fr n'était pas chez Infomaniak (OVH puis Gandi) et à ma connaissance il n'existait pas la solution proposée par Infomaniak. Il fallait utiliser [ddclient](https://ddclient.net/) 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](2024-02-29-customized-dyndns-for-synology.md). 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 : https://www.infomaniak.com/fr/support/faq/2376/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 `ddns.sh` avec le contenu ci-dessous. Puis lui appliquer la permission d'exécution `chmod u+x ddns.sh` + +```bash +#!/usr/bin/bash + +DOMAINS=("fqdn.tld" "domaine.truc") +TIME="$(date +%Y-%m-%d\ %H:%M)" +# À définir dans l'interface Infomaniak +# Domaine => domain.truc => Dynamic DNS => Ajouter un Dynamic DNS +USERNAME="xxxxxxx" +PASSWORD="xxxxxxx" + +echo "$TIME" +for d in "${DOMAINS[@]}"; do + echo "$(curl https://$USERNAME:$PASSWORD@infomaniak.com/nic/update?hostname=$d) for $d" +done + +echo "------------------------" + +exit 1 +``` + +### Faire exécuter le script régulièrement par le système +#### La crontab + +```bash +crontab -e +``` +:warning: ç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 : +```crontab +*/10 * * * * /root/ddns.sh>>/var/log/ddns.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](https://crontab.guru/#*/10_*_*_*_*). +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*.