Configurer et vérifier les adresses IPv6 sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les compétences fondamentales pour configurer et vérifier les adresses IPv6 sur un système Linux. En utilisant des outils modernes en ligne de commande, vous acquerrez une expérience pratique des tâches essentielles de la gestion réseau IPv6, de l'inspection à la configuration statique et aux tests de connectivité. Ce laboratoire se concentre sur l'utilisation de la commande ip de la suite iproute2 et de l'utilitaire ping6, qui sont standards dans les distributions Linux modernes comme Ubuntu 22.04.

Vous commencerez par utiliser la commande ip a pour découvrir les adresses IPv6 de bouclage (loopback) et locales de lien (link-local) configurées automatiquement sur vos interfaces réseau. Ensuite, vous attribuerez manuellement une adresse globale unicast statique à une interface. Enfin, vous utiliserez la commande ping6 pour vérifier la connectivité réseau aux adresses de bouclage, locales de lien et globales unicast nouvellement configurées, confirmant ainsi que votre configuration IPv6 fonctionne correctement.

Découvrir les adresses de lien local et de bouclage avec ip a

Dans cette étape, vous apprendrez comment découvrir les adresses IPv6 qui sont automatiquement configurées sur votre système. Les distributions Linux modernes, y compris Ubuntu 22.04, ont l'IPv6 activé par défaut. Nous utiliserons la commande ip, qui est l'outil moderne et recommandé pour la configuration et l'inspection réseau sous Linux.

Tout d'abord, inspectons les interfaces réseau et leurs adresses assignées. La commande ip a est un raccourci pour ip address.

  1. Ouvrez un terminal. Votre répertoire par défaut est ~/project.
  2. Exécutez la commande ip a pour lister toutes les interfaces réseau et leurs adresses.
ip a

Vous verrez une sortie similaire à celle ci-dessous. Les noms d'interface exacts (comme eth0) et les adresses peuvent varier, mais la structure sera la même.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
       valid_lft 1892159972sec preferred_lft 1892159972sec
    inet6 fe80::216:3eff:fe00:5472/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:89:01:6f:fc brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

Maintenant, analysons la sortie pour identifier les adresses IPv6 clés :

  • Adresse de bouclage (Loopback Address) : Regardez l'interface nommée lo. C'est l'interface virtuelle de bouclage, utilisée pour tester la pile réseau sur la machine locale. Vous verrez l'adresse IPv6 ::1/128. C'est l'adresse de bouclage IPv6, équivalente à 127.0.0.1 en IPv4. Le scope host indique qu'elle n'est valide qu'au sein de l'hôte lui-même.

  • Adresse locale de lien (Link-Local Address) : Regardez votre interface réseau principale (par exemple, eth0, enp0s3). Vous trouverez une adresse inet6 qui commence par fe80::. C'est votre adresse locale de lien. Elle est automatiquement attribuée à chaque interface activée pour l'IPv6 et est utilisée pour la communication uniquement sur le segment réseau local (par exemple, votre LAN Ethernet local). Le scope link confirme que cette adresse n'est valide que sur le lien local et n'est pas routable sur Internet.

Vous avez maintenant identifié avec succès les deux types fondamentaux d'adresses IPv6 configurées automatiquement sur votre système.

Ajouter une adresse globale unicast statique avec ip addr add

Dans cette étape, vous allez configurer manuellement une adresse Global Unicast (GUA) sur votre interface réseau. Alors que les adresses locales de lien sont utilisées pour la communication sur le segment réseau local, les GUA sont l'équivalent IPv6 des adresses IPv4 publiques. Elles sont globalement uniques et routables sur Internet.

Pour ce laboratoire, nous utiliserons une adresse du bloc 2001:db8::/32, qui est spécifiquement réservé à la documentation et aux exemples. Cela garantit que nous n'utilisons pas accidentellement une adresse Internet réelle et déjà utilisée.

  1. Nous allons ajouter la GUA statique 2001:db8:acad::1/64 à l'interface eth0. Le /64 indique la longueur du préfixe, ce qui est standard pour la plupart des LAN. Nous avons besoin de sudo car la modification des interfaces réseau nécessite des privilèges administratifs.

    sudo ip -6 addr add 2001:db8:acad::1/64 dev eth0
    
    • Note : Cette modification est temporaire et sera supprimée si vous redémarrez le système. Pour une configuration permanente sur Ubuntu, vous modifieriez généralement les fichiers dans /etc/netplan/, mais cela sort du cadre de ce laboratoire.
  2. Maintenant, vérifiez que la nouvelle GUA a été attribuée avec succès. Exécutez à nouveau la commande ip a pour inspecter vos interfaces réseau.

    ip a
    

    Vous devriez maintenant voir la nouvelle adresse listée sous l'interface eth0. Notez le scope global, qui indique qu'il s'agit d'une adresse routable.

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159959sec preferred_lft 1892159959sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever
    

Vous avez attribué avec succès une GUA IPv6 statique à votre interface réseau. Dans la prochaine étape, nous testerons la connectivité à cette nouvelle adresse.

Tester la connectivité à la boucle locale et à la GUA avec ping6

Dans cette étape, vous utiliserez l'utilitaire ping6 pour tester la connectivité IPv6. Cette commande est l'équivalent IPv6 de la commande ping familière et est essentielle pour le diagnostic réseau. Nous allons vérifier que votre pile IPv6 locale fonctionne correctement et que l'adresse Global Unicast (GUA) que vous avez configurée à l'étape précédente répond.

Tout d'abord, testons la pile IPv6 locale en pingant l'adresse de bouclage.

  1. Pinguez l'adresse de bouclage IPv6 ::1. Nous utiliserons l'option -c 3 pour envoyer seulement 3 paquets au lieu de pinger indéfiniment.

    ping6 -c 3 ::1
    

    Un test réussi montrera que les paquets sont envoyés et reçus avec 0% de perte de paquets, confirmant que votre pile IPv6 locale est opérationnelle.

    PING ::1(::1) 56 data bytes
    64 bytes from ::1: icmp_seq=1 ttl=64 time=0.026 ms
    64 bytes from ::1: icmp_seq=2 ttl=64 time=0.021 ms
    64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms
    
    --- ::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2030ms
    rtt min/avg/max/mdev = 0.021/0.027/0.035/0.005 ms
    

Ensuite, testons la GUA que vous avez attribuée manuellement à l'interface eth0. Cela confirme que l'interface est correctement configurée et écoute sur cette adresse.

  1. Pinguez la GUA 2001:db8:acad::1 que vous avez ajoutée à l'étape précédente.

    ping6 -c 3 2001:db8:acad::1
    

    Similaire au test de bouclage, un résultat réussi montrera des réponses de l'adresse, confirmant qu'elle est correctement attribuée et accessible sur l'hôte.

    PING 2001:db8:acad::1(2001:db8:acad::1) 56 data bytes
    64 bytes from 2001:db8:acad::1: icmp_seq=1 ttl=64 time=0.028 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=2 ttl=64 time=0.037 ms
    64 bytes from 2001:db8:acad::1: icmp_seq=3 ttl=64 time=0.038 ms
    
    --- 2001:db8:acad::1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2034ms
    rtt min/avg/max/mdev = 0.028/0.034/0.038/0.004 ms
    

Vous avez maintenant vérifié avec succès la connectivité à la fois à l'adresse de bouclage et à votre adresse Global Unicast configurée manuellement.

Dans cette étape, vous apprendrez comment tester la connectivité à une adresse de lien local. Comme vous l'avez découvert précédemment, ces adresses commencent par fe80:: et ne sont valides que sur un seul segment réseau (le "lien"). Parce qu'elles ne sont pas globalement uniques, vous devez fournir des informations supplémentaires à la commande ping6 pour spécifier quelle interface réseau doit être utilisée pour envoyer le ping. C'est ce qu'on appelle l'"indice de zone" ou "scope ID".

Tout d'abord, vous devez retrouver l'adresse de lien local de votre interface eth0.

  1. Exécutez la commande ip a et identifiez l'adresse inet6 commençant par fe80:: pour l'interface eth0.

    ip a show eth0
    

    La sortie ressemblera à ceci. Vous devez copier l'adresse (par exemple, fe80::xxxx:xxff:fexx:xxxx).

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159869sec preferred_lft 1892159869sec
        inet6 2001:db8:acad::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe00:5472/64 scope link
           valid_lft forever preferred_lft forever
    
  2. Maintenant, pinguez cette adresse de lien local. Pour spécifier l'indice de zone, vous ajoutez % suivi du nom de l'interface (eth0) à l'adresse. Remplacez YOUR_LINK_LOCAL_ADDRESS par l'adresse réelle que vous venez de trouver.

    ping6 -c 3 YOUR_LINK_LOCAL_ADDRESS%eth0
    

    Par exemple, si votre adresse était fe80::216:3eff:fe00:5472, la commande serait : ping6 -c 3 fe80::216:3eff:fe00:5472%eth0

    Un ping réussi confirme que l'interface répond à son adresse de lien local.

    PING fe80::216:3eff:fe00:5472%eth0(fe80::216:3eff:fe00:5472%eth0) 56 data bytes
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=1 ttl=64 time=0.031 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=2 ttl=64 time=0.030 ms
    64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=3 ttl=64 time=0.030 ms
    
    --- fe80::216:3eff:fe00:5472%eth0 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2028ms
    rtt min/avg/max/mdev = 0.030/0.030/0.031/0.000 ms
    

    Si vous oubliez la partie %eth0, la commande échouera car le système ne saura pas quelle interface utiliser pour la destination de lien local. Cette syntaxe spéciale est un concept clé dans la gestion des adresses IPv6 de lien local.

Résumé

Dans ce laboratoire, vous avez appris à effectuer des tâches fondamentales de configuration et de vérification IPv6 sur un système Linux en utilisant la suite de commandes ip. Vous avez commencé par utiliser ip a pour inspecter les interfaces réseau, identifiant avec succès l'adresse de bouclage IPv6 attribuée automatiquement (::1) sur l'interface lo et l'adresse de lien local (précédée de fe80::) sur l'interface réseau principale. Vous avez ensuite procédé à la configuration manuelle d'une adresse Global Unicast (GUA) statique sur l'interface principale à l'aide de la commande ip addr add.

Pour valider la configuration, vous avez utilisé l'utilitaire ping6. Vous avez confirmé que la pile réseau locale était opérationnelle en pingant l'adresse de bouclage et avez vérifié que la GUA statique était correctement attribuée et accessible. Enfin, vous avez appris l'exigence spécifique pour tester les adresses de lien local, qui implique l'utilisation de la syntaxe %interface avec ping6 pour spécifier explicitement l'indice de zone (interface sortante), une étape nécessaire en raison de la portée "lien" (link scope) de ces adresses.