Une migration dâun rĂ©seau vers IP-v6 sur une infrastructure complexe, implique quâil ne sera probablement pas possible de se passer dâIP-v4 instantanĂ©ment.
Lâobjectif doit ĂȘtre de se passer dâIP-v4, mais voilĂ , il y aura certainement pas tout de disponible en IP-v6 durant le processus de migration.
Les processus automatisĂ©s risquent particuliĂšrement dâĂȘtre sensibles Ă ce changement, il faut donc ĂȘtre capable de dĂ©tecter si le support IPv6 est disponible sur une machine.
Pour cela, je vous propose lâutilisation de cette suite de commandes :
ip -6 -json addr | jq length # si le résultat est 0, pas de support IPv6
Cela nĂ©cessite dâavoir les commandes ip et jq. Si nĂ©cessaire aller voir les billets existant qui traite de ces commandes : ip, jq.
LâidĂ©e de cette suite de commande est de compter le nombre dâadresses IPv6 disponibles sur la machine.
ip -6 addr
donne la liste des IPv6 de la machine-json
converti la sortie au formatJSON
|
transfert la sortie pour la commande prĂ©cĂ©dente dans lâentrĂ©e de la commande suivante.jq lenght
compte le nombre dâentrĂ©e dans le tableau, formellement câestjq '. | length'
.
Vous pouvez adapter la commande pour vĂ©rifier lâexistence du support IP-v4 :
ip -4 -json addr | jq length # si le résultat est 0, pas de support IPv4
Notez que la boucle locale nâest pas prise en compte lorsque les paramĂštres -4 ou -6 sont utilisĂ©s.
Dans le cas oĂč vous avez plusieurs interfaces rĂ©seaux (notamment Wifi + RJ45) vous voudrez peut-ĂȘtre vous assurer que toutes les cartes rĂ©seaux supportent le protocole choisi.
Notez Ă©galement quâil est possible dâavoir les interfaces supportant IP-v4 et IP-v6 Ă lâaide de :
ip -4 -6 -json addr
Une dĂ©tection peut se faire Ă lâaide de quelque chose comme ça (je vous laisse optimiser et adapter Ă vos besoins) :
function init_IP_support {
local ipv6_count=
ipv6_count="$( ip -6 -json addr | jq length )"
local ipv4_count=
ipv4_count="$( ip -4 -json addr | jq length )"
local ipv4_ipv6_count=
ipv4_ipv6_count="$( ip -4 -6 -json addr | jq length )"
if [ "${ipv4_count}" = "${ipv4_ipv6_count}" ] ; then
declare -gr IP_V4_V6_SAME_SUPPORT='true'
else
declare -gr IP_V4_V6_SAME_SUPPORT='false'
fi
if [ "${ipv6_count}" = '0' ] ; then
declare -gr IP_V6='false'
else
declare -gr IP_V6='true'
fi
if [ "${ipv4_count}" = '0' ] ; then
declare -gr IP_V4='false'
else
declare -gr IP_V4='true'
fi
}
init_IP_support
echo "IP_V4=${IP_V4}"
echo "IP_V6=${IP_V6}"
echo "IP_V4_V6_SAME_SUPPORT=${IP_V4_V6_SAME_SUPPORT}"
LâintĂ©rĂȘt de ce code est de dĂ©tecter les machines ayant une configuration Ă©trange, en particulier si ${IP_V4}
et ${IP_V6}
valent true
et que ${IP_V4_V6_SAME_SUPPORT}
contient false
.
Attention le fait quâune machine supporte IP-v6 ne veut pas dire que toute sa configuration soit valide, en particulier il faut sâassurer que le bon DNS
soit utilisé.
Références
኿