Service | màj auto IPv6 | Commentaires |
dynu.com | N | J'arrive à mettre l'IPv6 à la main dans l'interface de gestion. J'ai essayé linuxserver/ddclient (https://hub.docker.com/r/linuxserver/ddclient) avant de réaliser que le support IPv6 est en draft (https://github.com/ddclient/ddclient/blob/master/docs/ipv6-design-doc.md). |
duckdns.org | O | Fonctionne avec un script curl en crontab. L'image Docker fonctionne par défaut en IPv4. Fonctionne avec curl. |
ipv64.net | O | l'interface est en allemand, j'ai réussi tant bien que mal à me créer un record DNS. Fonctionne avec curl. |
#!/bin/bash
# duckdns-ipv6.sh
# Example
# ~/duckdns/duckdns-ipv6.sh mydomain.duckdns.org 00000000-0000-0000-0000-000000000000
#
# Only IPv6 at the moment
basedir=$(dirname $0)
domain=$1
token=$2
logfile=${basedir}/duckdns.log
service=.duckdns.org
mintokenlength=30
expectedformat=00000000-0000-0000-0000-000000000000
currentdate=$(date -Is)
lastipv6file=${basedir}/lastipv6.txt
if [ -z "${logfile}" ]; then
echo "empty log file name"
exit 1
fi
# check TLD
if [[ "${domain}" != *"${service}"* ]]; then
echo -e "${currentdate} Expected format : mydomain${service}" >>${logfile}
exit 1
fi
# min length
if [ ${#token} -lt ${mintokenlength} ]; then
echo -e "${currentdate} Expected format : ${expectedformat}" >>${logfile}
exit 1
fi
# contains - separator
if [[ "${token}" != *"-"* ]]; then
echo -e "${currentdate} Expected format : ${expectedformat}" >>${logfile}
exit 1
fi
# get ip
ipv6addr=$(curl -6 -s "https://api6.ipify.org")
if [ -z "${ipv6addr}" ]; then
echo -e "${currentdate} empty IPv6 address" >>${logfile}
exit 1
fi
apiurl="https://www.duckdns.org/update?domains=${domain}&token=${token}&ipv6=${ipv6addr}"
if [ ! -f "$lastipv6file" ]; then
# update and store the last known IPv6 address
curlresult=$(curl -s ${apiurl})
echo -e "${currentdate} set ${apiurl} ${curlresult}" >>${logfile}
echo ${ipv6addr} >${lastipv6file}
exit 0
fi
echo -e "$lastipv6file exists." >>${logfile}
lastipv6value=$(<${lastipv6file})
if [[ "${lastipv6value}" == "${ipv6addr}" ]]; then
# IPv6 unchanged : don't call the api
echo -e "${currentdate} $ipv6addr unchanged." >>${logfile}
else
# IPv6 has changed
curlresult=$(curl -s ${apiurl})
echo -e "${currentdate} update ${apiurl} ${curlresult}" >>${logfile}
echo ${ipv6addr} >${lastipv6file}
fi
exit 0
#!/bin/bash
~/duckdns/duckdns-ipv6.sh mydomain.duckdns.org 00000000-0000-0000-0000-000000000000
# At minute 0 every 4 hours
0 */4 * * * ~/duckdns/duck.sh >/dev/null 2>&1
2023-08-12T00:00:01+02:00 https://www.duckdns.org/update?domains=mydomain.duckdns.org&token=00000000-0000-0000-0000-000000000000&ipv6=0000:0000:0000:0000:0000:0000:0000:0000 OK
2023-08-12T04:00:01+02:00 https://www.duckdns.org/update?domains=mydomain.duckdns.org&token=00000000-0000-0000-0000-000000000000&ipv6=0000:0000:0000:0000:0000:0000:0000:0000 OK
2023-08-13T16:00:02+02:00 0000:0000:0000:0000:0000:0000:0000:0000 unchanged
ip addr show dev ${interface} | grep global | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
J'ai réussis à faire la MàJ Auto sur Dynu.com à partir d'un petit script php qui appelle curl, vérifie dans ma base de donnée locale si update et si c'est le cas update la base et appelle une api dynu.com
En revanche, je ne sais pas pourquoi, si j'ai une adresse IP V4 dynu.com la renvoie et si je mets rien ça me dit "cannot resolve" ?
Mais je ne suis pas pro de IPv6
ip -j -6 a show up scope global -mngtmpaddr dev ${interface} | jq -r ".[] .addr_info.[].local | select( . != null )"
ip -br -6 a show up scope global -mngtmpaddr dev ${interface} | tr -s ' '| cut -d" " -f3 | cut -d/ -f1
il faudrait plus de contexte / details ?
la résolution dns local ne marche peut-etre pas en IPv6 ?
En revanche, ce que je ne sais pas faire, c'est forcer tous les services qui utilisent ce sous-domaine (genre sftp, ou bien openvpn) à utiliser cette adresse IPv6. Lorsque je fais un ping ou traceroute vers ce sous domaine, ça ne résoud pas.
Après j'aurai d'autres problèmes à résoudre: mon réseau à qq adresse IP fixes en IPv4. Comment ça marche en IPv6 ? Je vois bien que l'adresse IPv6 contient une partie propre à Starlink, mais que le reste est sur mon réseau local. Dois-je créer un DHCP IPv6 ? Etc.. c'est pas clair pour moi
Si tu essais de transposer ce que tu fais en IPv4 a IPv6 c'est le meilleur moyen de se planter...C'est vraiment différent.
quel mécanisme détermine la partie droite de l'adresse IPv6, surtout l'adresse de sous-réseau ? Est-ce mon routeur Asus qui le détermine ? Est-ce que c'est fixe ?
Et finalement, mon routeur asus a une adresse IPv6 légèrement différente des machines sur mon réseau. Les deux premiers groupes hexa sont identiques, mais pas le troisième :-(
(je teste en, faisant curl ifcongif.net
As-tu avancé depuis la dernière fois ?