DNS dynamique (DynDNS) avec Gandi

Puisque je me relance dans l’auto-hébergement, je vais avoir besoin de pouvoir accéder à mon serveur depuis l’exterieur, notamment en HTTP(S).

Pour ce faire, et comme je n’ai pas la chance d’avoir une IP fixe, il faut que je puisse mettre à jour régulièrement l’IP de ma connexion internet à la maison auprès de mon registrar.

A l’époque de ehia.org, j’utilisais DynDNS, mais il semble que l’offre ait été modifiée depuis.

Je suis tombé sur un script bash (voir sources ci-dessus) qui me permettra de me passer d’un service externe pour mettre à jour mes enregistrement DNS.

A noter que ma version ci-dessous est légèrement modifiée pour gérer l’IPv6

#!/bin/bash
# This script gets the external IP of your systems then connects to the Gandi
# LiveDNS API and updates your dns record with the IP.

# Gandi LiveDNS API KEY
API_KEY="[redacted]"

# Domain hosted with Gandi
DOMAIN="redacted.com"

# Subdomain to update DNS
SUBDOMAIN="subdomain"

# Get external IP address
EXT_IP=$(curl -s ifconfig.me)

#Get the current Zone for the provided domain
CURRENT_ZONE_HREF=$(curl -s -H "X-Api-Key: $API_KEY" https://dns.api.gandi.net/api/v5/domains/$DOMAIN | jq -r '.zone_records_href')

# Update the A Record of the subdomain using PUT
curl -D- -X PUT -H "Content-Type: application/json" \
        -H "X-Api-Key: $API_KEY" \
        -d "{\"rrset_name\": \"$SUBDOMAIN\",
             \"rrset_type\": \"AAAA\",
             \"rrset_ttl\": 1200,
             \"rrset_values\": [\"$EXT_IP\"]}" \
        $CURRENT_ZONE_HREF/$SUBDOMAIN/AAAA