cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

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 format JSON
  • | 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’est jq '. | 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

ᦿ


ℹ 2006 - 2021 | 🏠 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog