Configurer un tunnel 6to4 IPv4-vers-IPv6 sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à configurer un tunnel IPv4-vers-IPv6 6to4 dans un environnement Linux. Cet exercice pratique vous guidera à travers le processus d'activation de la connectivité IPv6 sur un réseau IPv4 existant, un mécanisme de transition clé pour les administrateurs réseau. Vous utiliserez des outils standard en ligne de commande Linux pour construire et vérifier un tunnel fonctionnel à partir de zéro.

En suivant un processus étape par étape, vous préparerez d'abord une adresse IPv4 publique conceptuelle pour simuler un scénario réel. Vous créerez ensuite une interface de tunnel SIT (Simple Internet Transition), lui attribuerez une adresse IPv6 au format 6to4, et ajouterez une route IPv6 par défaut via un relais 6to4 public. Pour conclure le laboratoire, vous testerez la connectivité IPv6 de bout en bout via le tunnel nouvellement configuré en utilisant la commande ping6.

Préparer le tunneling avec une adresse IPv4 publique conceptuelle

Dans cette étape, vous découvrirez l'exigence fondamentale pour le tunneling 6to4 : une adresse IPv4 publique. Nous allons explorer comment identifier l'adresse IP de votre système et pourquoi nous utiliserons une adresse spéciale et conceptuelle pour cet exercice de laboratoire.

Le tunneling 6to4 est un mécanisme de transition qui encapsule les paquets IPv6 dans des paquets IPv4, leur permettant de transiter sur l'Internet IPv4. Pour que cela fonctionne dans un scénario réel, votre système (le point d'extrémité du tunnel) doit disposer d'une adresse IPv4 publique afin que d'autres appareils sur Internet puissent lui renvoyer du trafic. Dans un environnement de laboratoire ou domestique typique, votre ordinateur se trouve souvent derrière un routeur utilisant la traduction d'adresses réseau (NAT) et possède une adresse IPv4 privée, qui n'est pas accessible depuis l'Internet public.

Tout d'abord, vérifions l'adresse IPv4 réelle attribuée à votre interface réseau dans cet environnement de laboratoire. Vous pouvez le faire en utilisant la commande ip a combinée avec grep pour filtrer les adresses IPv4.

Exécutez la commande suivante dans votre terminal :

ip a | grep inet

Vous verrez une sortie similaire à la suivante, listant les adresses IPv4 et IPv6 sur votre système. Notez que les adresses IPv4 sont privées, et non publiques.

    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
    inet 172.16.50.33/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
    inet6 fe80::216:3eff:fe01:236f/64 scope link
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

Comme vous pouvez le constater, les adresses listées sont privées (comme 172.16.50.33) ou de bouclage (127.0.0.1). Elles ne peuvent pas être utilisées comme point d'extrémité public pour un tunnel 6to4. Pour simuler une configuration réelle, nous utiliserons une adresse IPv4 publique conceptuelle. Pour ce laboratoire, nous utiliserons 192.0.2.1. Cette adresse fait partie d'un bloc spécifiquement réservé à la documentation et aux exemples (RFC 5737), garantissant qu'elle n'entre pas en conflit avec de véritables adresses IP publiques. Toutes les étapes suivantes utiliseront cette adresse de substitution pour construire notre configuration de tunnel.

Créer une interface de tunnel SIT avec la commande ip tunnel

Dans cette étape, vous allez créer l'interface de tunnel virtuelle qui servira de base à notre tunnel 6to4. Nous utiliserons la commande ip, un utilitaire puissant sous Linux pour la configuration réseau.

La commande ip tunnel est utilisée pour créer, gérer et supprimer des interfaces de tunnel. Pour le 6to4, nous avons besoin d'un type de tunnel spécifique appelé sit, qui signifie "Simple Internet Transition". Ce mode encapsule les paquets IPv6 directement dans des paquets IPv4, ce qui est le mécanisme central du 6to4.

Maintenant, créons une interface de tunnel nommée tun6to4. Nous la configurerons en utilisant l'adresse IPv4 publique conceptuelle 192.0.2.1 que nous avons identifiée à l'étape précédente.

Exécutez la commande suivante dans votre terminal. Vous avez besoin de sudo car la création d'interfaces réseau est une opération privilégiée.

sudo ip tunnel add tun6to4 mode sit local 192.0.2.1 remote any

Décomposons cette commande :

  • sudo ip tunnel add tun6to4: Cette partie demande au système d'ajouter une nouvelle interface de tunnel nommée tun6to4.
  • mode sit: Ceci spécifie le mode d'encapsulation. sit est le mode correct pour le tunneling 6to4.
  • local 192.0.2.1: Ceci définit l'adresse IPv4 source des paquets du tunnel. C'est le point d'extrémité "local" de notre tunnel, que nous simulons avec notre IP publique conceptuelle.
  • remote any: C'est une partie cruciale du mécanisme 6to4. Elle indique au système que le tunnel peut se connecter à n'importe quel point d'extrémité distant. En pratique, cela signifie qu'il enverra le trafic à une adresse "anycast" bien connue pour un routeur relais 6to4, qui transmettra ensuite le trafic à l'Internet IPv6.

Après avoir exécuté la commande, vous pouvez vérifier que l'interface de tunnel a été créée. Utilisez la commande ip tunnel show :

ip tunnel show

La sortie devrait confirmer la création et la configuration de votre nouvelle interface tun6to4. Vous pourriez également voir une interface sit0 par défaut, que vous pouvez ignorer pour ce laboratoire.

sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16
tun6to4: ipv6/ip remote any local 192.0.2.1 ttl inherit 6rd-prefix 2002::/16

Vous pouvez également voir la nouvelle interface en exécutant à nouveau ip a, mais elle n'aura pas encore d'adresses IP attribuées. Nous nous en occuperons à l'étape suivante.

Attribuer une adresse IPv6 au format 6to4 à l'interface de tunnel

Dans cette étape, vous allez configurer l'interface tun6to4 que vous venez de créer en lui attribuant une adresse IPv6 spéciale au format 6to4. Cette adresse n'est pas arbitraire ; elle est dérivée directement de l'adresse IPv4 publique du point d'extrémité du tunnel.

Le schéma d'adressage 6to4 est conçu pour être automatique. Il utilise un préfixe IPv6 désigné, 2002::/16. Les 32 bits qui suivent ce préfixe sont remplis avec l'adresse IPv4 publique, convertie en format hexadécimal. Cela crée un préfixe IPv6 /48 unique pour toute organisation disposant d'au moins une adresse IPv4 publique.

Calculons la représentation hexadécimale de notre adresse IPv4 conceptuelle, 192.0.2.1 :

  • 192 en décimal correspond à c0 en hexadécimal.
  • 0 en décimal correspond à 00 en hexadécimal.
  • 2 en décimal correspond à 02 en hexadécimal.
  • 1 en décimal correspond à 01 en hexadécimal.

En combinant ces éléments, la représentation hexadécimale de 192.0.2.1 est c000:0201. Par conséquent, notre préfixe 6to4 unique est 2002:c000:0201::/48.

Maintenant, nous allons attribuer une adresse IPv6 spécifique de ce préfixe à notre interface tun6to4. Nous utiliserons la première adresse du premier sous-réseau, 2002:c000:0201::1/64. Exécutez la commande suivante pour attribuer l'adresse :

sudo ip -6 addr add 2002:c000:0201::1/64 dev tun6to4

Après avoir créé l'interface et attribué une adresse, l'interface est toujours dans un état "DOWN" par défaut. Vous devez la mettre "UP" pour la rendre opérationnelle. Utilisez la commande ip link set pour cela :

sudo ip link set tun6to4 up

Enfin, vérifions que l'interface est active et possède la bonne adresse IPv6. Utilisez la commande ip a et recherchez l'interface tun6to4 :

ip a

Vous devriez voir une sortie incluant l'interface tun6to4, maintenant active et configurée avec l'adresse IPv6. Notez que le numéro d'interface (par exemple, 5:) peut varier, et vous pourriez voir d'autres interfaces comme docker0 ou sit0.

5: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 192.0.2.1 brd 0.0.0.0
    inet6 ::192.0.2.1/96 scope global
       valid_lft forever preferred_lft forever
    inet6 2002:c000:201::1/64 scope global
       valid_lft forever preferred_lft forever

Remarquez qu'en plus de l'adresse 2002:... que vous avez configurée, le système a automatiquement ajouté une adresse IPv6 compatible IPv4 (::192.0.2.1/96). C'est un comportement attendu.

Ajouter une route IPv6 par défaut via l'adresse relais 6to4

Dans cette étape, vous allez configurer le dernier élément du puzzle pour la connectivité sortante : une route par défaut. Le simple fait d'avoir une adresse IP sur l'interface tun6to4 n'est pas suffisant ; votre système doit savoir où envoyer le trafic IPv6 destiné à l'Internet mondial. Nous allons le diriger vers un routeur relais 6to4 spécial.

Le 6to4 s'appuie sur des routeurs relais publics qui connectent le monde 6to4 à l'Internet IPv6 natif. Ces routeurs écoutent le trafic encapsulé sur une adresse IPv4 anycast spécifique et bien connue : 192.88.99.1. Lorsque notre système envoie un paquet IPv6 à une destination externe, il l'encapsule dans un paquet IPv4 et l'envoie à cette adresse relais. Le relais décompresse ensuite le paquet et le transmet sur le réseau IPv6.

Pour configurer cela, nous allons ajouter une route IPv6 par défaut en utilisant la commande ip -6 route add. Exécutez la commande suivante dans votre terminal :

sudo ip -6 route add default via ::192.88.99.1 dev tun6to4

Analysons la commande :

  • default: Ceci spécifie que la route est la "passerelle par défaut" pour tout trafic IPv6 qui ne correspond pas à une route plus spécifique dans la table de routage.
  • via ::192.88.99.1: Ceci définit la passerelle de saut suivant. La syntaxe ::192.88.99.1 est une manière spéciale de représenter une adresse IPv4 dans un contexte IPv6, indiquant au système d'envoyer le trafic à l'adresse IPv4 192.88.99.1.
  • dev tun6to4: Ceci indique explicitement au système d'utiliser notre interface tun6to4 pour cette route.

Maintenant, vous pouvez vérifier que la table de routage IPv6 a été correctement mise à jour. Exécutez la commande suivante :

ip -6 route show

La sortie devrait maintenant inclure une route par défaut pointant vers le relais 6to4 via votre interface de tunnel. La sortie exacte peut varier légèrement, mais l'élément clé est la ligne default.

::1 dev lo proto kernel metric 256 pref medium
::/96 dev tun6to4 proto kernel metric 256 pref medium
2002:c000:201::/64 dev tun6to4 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via ::192.88.99.1 dev tun6to4 metric 1024 pref medium

Avec cette route en place, votre système est maintenant entièrement configuré pour envoyer du trafic IPv6 via le tunnel 6to4 simulé.

Tester la connectivité IPv6 via le tunnel avec ping6

Dans cette étape, vous allez tenter de tester votre tunnel 6to4 nouvellement configuré en envoyant du trafic IPv6 vers une destination publique. Nous utiliserons la commande ping6, qui est l'équivalent IPv6 de l'utilitaire familier ping.

L'objectif est de voir si notre système peut envoyer un paquet IPv6, le faire encapsuler dans un paquet IPv4, l'envoyer au relais 6to4, puis le transmettre à sa destination finale. Nous utiliserons l'option -I avec ping6 pour spécifier que le trafic doit provenir de notre interface tun6to4.

Essayons de pinger un hôte bien connu prenant en charge IPv6, tel que ipv6.google.com. L'option -c 4 limitera la commande à l'envoi de seulement 4 paquets.

Exécutez la commande suivante dans votre terminal :

ping6 -c 4 -I tun6to4 ipv6.google.com

Résultat attendu et explication

Vous verrez la commande échouer, avec une sortie indiquant que la destination est inaccessible. C'est le résultat attendu, et cette partie du laboratoire est uniquement à des fins de démonstration.

PING ipv6.google.com(sfo03s32-in-x0e.1e100.net (2607:f8b0:4005:814::200e)) from 2002:c000:201::1 tun6to4: 56 data bytes
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=1 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=2 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=3 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=4 Destination unreachable: Address unreachable

--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3253ms

Cet échec ne signifie pas que vous avez mal configuré quoi que ce soit. Vous avez configuré avec succès le côté client d'un tunnel 6to4. L'échec est attendu dans cet environnement de laboratoire pour deux raisons principales :

  1. Environnement de laboratoire : La machine virtuelle LabEx ne possède pas d'adresse IPv4 publique réelle. Nous avons utilisé une adresse conceptuelle (192.0.2.1) pour la configuration. Le relais 6to4 ne peut pas renvoyer de réponse à cette adresse non routable.
  2. Infrastructure obsolète : L'infrastructure publique de relais 6to4 (à l'adresse anycast 192.88.99.1) est largement obsolète et n'est plus maintenue sur l'Internet moderne. Les opérateurs réseau sont passés à des mécanismes de transition IPv6 plus robustes et sécurisés tels que l'IPv6 natif, le 6rd et le DS-Lite.

L'objectif principal de ce laboratoire est de vous enseigner le concept et la syntaxe de configuration d'un mécanisme de tunneling historique important de l'IPv4 vers l'IPv6, ce qui est un sujet abordé dans les certifications réseau comme le CompTIA Network+.

Résumé

Dans ce laboratoire, vous avez appris à configurer un tunnel 6to4 IPv4-vers-IPv6 sous Linux. Vous avez commencé par comprendre l'exigence fondamentale du tunneling 6to4 : une adresse IPv4 publique. Après avoir identifié l'adresse IP privée dans l'environnement de laboratoire, vous avez adopté une adresse IPv4 publique conceptuelle (192.0.2.1) pour simuler un scénario réel. Vous avez ensuite utilisé la commande ip tunnel pour créer une interface de tunnel SIT (Simple Internet Transition), qui sert de point d'extrémité pour encapsuler les paquets IPv6 dans l'IPv4.

Une fois l'interface de tunnel établie, vous avez construit et attribué une adresse IPv6 au format 6to4, qui est dérivée par programme de l'adresse IPv4 publique conceptuelle. Pour diriger le trafic IPv6 à travers le tunnel, vous avez ajouté une route IPv6 par défaut pointant vers l'adresse anycast du relais 6to4. Enfin, vous avez testé la configuration à l'aide de la commande ping6. Le test a échoué comme prévu, ce qui a confirmé que si votre configuration locale était correcte, l'infrastructure publique de relais 6to4 n'est plus largement disponible, démontrant ainsi une raison clé pour laquelle cette technologie est maintenant considérée comme historique.