Transition de l’IPv4 vers l’IPv6

Nourelhouda Boutahar Etude - Recherche

Contexte général

Le réseau internet est au cœur de l’usage de la vie quotidienne des individus grâce aux avantages et aux facilités qu’il offre. L’entreprise d’aujourd’hui s’appuie également sur ce réseau pour connecter les machines des différents sites  et communiquer avec d’autres entités externes identifiées toutes par des adresses IP. Pour assurer la connectivité entre les machines, utilisant le réseau internet et dont le nombre est fortement croissant, le  protocole IP utilise des adresses de ces machines pour acheminer les messages depuis une source vers une destination sous forme de paquets.

L’espace d’adressage arrive à saturation. En effet dans ce protocole, les adresses sont codées sur 32 bit ce qui ne permet d’avoir que 4 milliards d’adresses. Ceci est insuffisant à cause de la demande croissante des adresses par les pays en voie de développement,  et à cause de l’explosion du marché de l’IoT qui a augmenté le nombre de machines connectées d’une manière considérable. La taille des réseaux d’aujourd’hui, leur complexité ainsi que leur croissance rapide exigent le passage vers une nouvelle version du protocole IP, capable de fournir un espace d’adressage plus important et de nouvelles fonctionnalités adaptées aux évolutions des réseaux actuels. IPv6 est le nouveau protocole, successeur de IPv4 et qui dépasse ses limitations  et rajoute de nouvelles options et fonctionnalités. Nous sommes aujourd’hui dans une période de transition entre les deux protocoles. IPv6 commence petit à petit à se développer à l’échelle mondiale avec, début 2017, environ 15% du trafic mondial. La transition vers cette nouvelle version pose de nouvelles problématiques de sécurité, cette nouvelle version apportant son lot de vulnérabilités.

Dans le cadre d’un sujet de stage sur la sécurité du protocole IPv6, l’équipe audit de Devoteam a choisi de faire des recherches sur les vulnérabilités de ce protocole et de monter  une offre d’audit de sécurité sur IPv6, pour mieux répondre aux besoins de ses clients. Dans cet article, et avant d’entamer le sujet de la sécurité et de parler des vulnérabilités, nous allons présenter en résumé la première partie de nos recherches qui porte sur la présentation des problématiques du monde IP ainsi que les nouveautés et les perspectives de la nouvelle version.

Le protocole IP

Le rôle de la couche réseau est de transporter les paquets entre les hôtes sans se soucier du type de communication présent dans le paquet, tout en imposant le moins de charge possible au réseau. IP est le protocole principal de cette couche, il a été conçu pour ne pas surcharger les réseaux et ne fournir que des fonctions d’élaboration et de transfert des paquets d’une source à une destination, passant par des nœuds interconnectés. Il n’assure pas la gestion du flux de paquets puisque cette dernière est garantie par d’autres protocoles d’autres couches.

Les principales caractéristiques du protocole IP sont les suivantes :

  • Sans connexion : aucune connexion avec la destination n’est établie avant d’envoyer des paquets de données. Ce processus réduit sensiblement la surcharge du protocole IP.
  • Acheminement au mieux (peu fiable) : la livraison des paquets n’est pas garantie. Le terme « non fiable » signifie simplement que le protocole IP n’a pas la capacité de gérer (ni de récupérer) les paquets endommagés ou non remis.
  • Indépendant du support : le fonctionnement est indépendant du support transportant les données.

L’ajout des en-têtes IP permet d’encapsuler le segment de la couche 3 du modèle OSI (la couche réseau)  et d’acheminer les paquets  vers leur destination. L’en-tête  reste en place du moment où le paquet quitte la couche réseau de l’hôte source jusqu’à son arrivée dans la couche réseau de l’hôte de destination, là où il sera décapsulé pour être traité  par la couche 4  dite de transport.

 Ce processus d’encapsulation des données couche par couche permet aux services des différentes couches de se développer et d’évoluer sans affecter les autres couches. Cela signifie que les segments de couche transport peuvent être facilement encapsulés par les protocoles IPv4 et IPv6, ou par tout nouveau protocole pouvant être mis au point dans le futur.

Encapsulation des paquets IP

Les paquets IPv4

Un paquet IPv4 se compose de :

  • Un en-tête IP : contient les caractéristiques du paquet. Les informations qu’il contient seront traitées par la couche 3.
  • Des données utiles : contient les informations et les données du segment de couche 4.

Paquet IPv4

L’entête IPV4 se compose de plusieurs champs, notamment :

  • Version : sur 4 bits ce champ indique la version du paquet IP.
  • Services différenciés : champ de 8 bits utilisé pour définir la priorité de chaque paquet.
  • Time-to-live : ce champ est utilisé pour limiter la durée de vie d’un paquet, il s’étale sur 8 bits.
  • Protocole : un champ de 8 bits qui indique le type de données utiles transportées par le paquet afin de permettre à la couche réseau de transmettre les données au protocole de couche supérieure.
  • Adresse IP Source /destination : ces deux champs sont de 32 bits et représentent les adresses IP Source et destination du paquet.

Les champs utilisés pour identifier et valider le paquet incluent :

  • Longueur d’en-tête Internet : un champ de 4 bits indiquant le nombre de mots de 32 bits contenus dans l’en-tête.
  • Longueur totale : champ de 16 bits indiquant la taille globale du paquet, y compris l’en-tête et les données.
  • Somme de contrôle de l’en-tête : champ de 16 bits utilisé pour le contrôle des erreurs sur l’en-tête IP.

Les routeurs  doivent parfois fragmenter les paquets lors de la transmission d’un support à un autre ayant la MTU (maximal transmission unit qui définit la longueur maximal d’un paquet) inférieure. La  fragmentation se produit et le paquet IPv4 utilise les champs suivants pour suivre les fragments :

  • Identification : sur 16 bits ce champ identifie de manière unique le fragment d’un paquet IP d’origine.
  • Indicateurs : un champ de 3 bits qui indique la façon dont le paquet est fragmenté. Il est utilisé avec les champs de décalage du fragment et d’identification pour reconstituer le paquet d’origine.
  • Décalage du fragment : ce champ de 13 bits indique la position dans laquelle placer le fragment de paquet pour reconstituer le paquet d’origine.

Le champ Options est peu utilisé. Il offre des mécanismes évolués comme le routage par la source (l’émetteur indique par où doit passer le paquet) ou l’enregistrement de routes (le paquet enregistre par où il est passé pour arriver à destination). Ces mécanismes retardent les paquets car les options sont obligatoirement prises en compte par tous les routeurs qui traitent le paquet. Pour des raisons de performance, les paquets sans option sont privilégiés.

Les limites de l’IPv4

Malgré les mises à jour qui ont  été  ajoutées, IPv4 a toujours des  problèmes et des limitations, notamment :

  • Le manque d’adresses IP : bien qu’il existe environ 4 milliards d’adresses IPv4, le nombre croissant de périphériqueIP, les connexions permanentes et la croissance potentielle des pays en voie de développement entraînent une hausse du nombre d’adresses devant être disponibles. Cette hausse est également liée à l’apparition des objets connectés, ce qui nécessite la prise en compte de 28 millions d’objets à l’horizon de 2020. Parmi les 4 milliards d’adresses, seules 3,7 milliards peuvent être attribuées car le système d’adressage IPv4 sépare les adresses en classes et réserve des adresses pour la multidiffusion, les tests et d’autres usages spécifiques.
  • La croissance de la table de routage Internet : les routeurs utilisent des  tables dites de  routage pour déterminer les meilleurs chemins disponibles et acheminer les datagrammes vers leur destination. Les routes IPv4 consomment beaucoup de mémoire et de ressources processeur sur les routeurs avec le grand nombre de nœuds connectés à  Le problème vient du fait que les adresses ont été distribuées sans tenir compte de la localisation géographique des réseaux. En IPv6 par contre, la distribution est faite de manière à ce que des réseaux qui sont géographiquement voisins aient des plages d’adresses voisines.
  • Le manque de connectivité de bout en bout : le mécanisme du NAT (Traduction d’Adresses Réseau) a été mis en point pour pallier le manque croissant d’adresses IPv4. Le NAT permet de partager une même adresse publique entre différentes machines ayant chacune une adresse privée masquée en interne du réseau, ce qui empêche le fonctionnement de certaines applications nécessitant une connectivité de bout en bout.

L’arrivée de l’IPv6

Depuis  les années 90, l’IETF (Internet Engineering Task Force) travaille sur un nouveau protocole successeur de l’IPv4 qui répond à ses problématiques. La nouvelle version du protocole IP dite IPv6, et non pas IPv5 car le numéro 5 fut réservé pour un autre protocole expérimental qui, dans la pratique, ne s’est jamais réalisé, le ST- II (Stream Protocol version 2). IPv6 vient dans le but de surmonter les limites de l’IPv4 et d’améliorer en efficacité les performances en offrant des fonctionnalités adaptées aux réseaux d’aujourd’hui.

IPv6 apporte plusieurs nouveautés, notamment :

  • Un espace d’adressage plus important : l’espace d’adressage IPv6 fournit 3,4×1038 d’adresses, nombre presque équivalent au nombre de grains de sable sur Terre. En plus, l’adressage IPv6 permet de hiérarchiser les adresses par réseau, par fournisseur d’accès internet ou même géographiquement. Cette hiérarchie permet de réduire la taille des tables de routage et donc d’accélérer le traitement des paquets par les routeurs.
  • Traduction d’adresses réseau non nécessaire : la technologie NAT ne sera plus nécessaire grâce au grand nombre d’adresses publiques offertes par l’adressage IPv6. Cet adressage permet de considérer à nouveau les machines situées derrière le NAT globalement accessibles. Les applications nécessitant des échanges directs entre elles, telles que la voix sur IP, seront capables de fonctionner  et  communiquer grâce aux adresses publiques quasiment illimitées en IPv6.
  • Qualité de service (Qos) : IPv6 permet de gérer la qualité de service à travers la labélisation de flux et les classes de trafic. Cette fonctionnalité offre la possibilité de définir et d’offrir la qualité de service demandée par certains types d’applications. Le champ Classe de trafic a été créé pour être utilisé par des nœuds origines et/ ou des routeurs transmetteurs pour identifier et distinguer différentes classes ou priorités de paquets Ipv6. Le champ label de flux permet de nommer des séquences de paquets qui demandent un traitement spécial.
  • Aspects de sécurité intégrés : l’IPv6 prend nativement en charge les fonctions d’authentification et de confidentialité. Les implémentations conformes de l’IPv6 intègrent obligatoirement IPsec contrairement à IPv4 qui intègre IPsec en option sans même fournir des standards sur la plupart des systèmes courants. La sécurité du protocole IPv6 est le cœur de notre sujet, nous y reviendrons dans les articles suivants qui seront axés sur cet aspect.
  • Modifications des types d’adressage : en IPv6 les  adresses de broadcast sont remplacées par des adresses dites multicast qui ciblent certains nœuds au lieu de cibler tous les nœuds  du réseau. Les paquets diffusés en broadcast nécessitent un certain traitement par chaque nœud, même si celui-ci n’est pas concerné par le paquet et va l’ignorer. L’Anycast est un nouveau type d’adressage introduit par IPv6. Il permet  d’envoyer des paquets à un destinataire parmi plusieurs, ce dernier parvient au destinataire le plus proche. Nous reviendrons plus tard sur ce type d’adressage afin de détailler son mécanisme et de voir en quoi consiste son efficacité.
  • Traitement des paquets plus efficace : ceci grâce à des en-têtes simplifiés. Les en-têtes IPv4 étaient de 20 octets ( Jusqu’à 60 octets si les options sont utilisées) réparties sur 12 champs de base en plus des champs remplissage et d’options. IPv6 simplifie  l’en-tête qui ne contient que 8 champs (3 champs d’en-tête IPv4 de base et 5 champs d’en-tête supplémentaires) quoique sa longueur soit  de 40 octets (principalement en raison de la longueur des adresses IPv6 source et de destination).

Comme l’illustre la figure suivante, certains champs ont été conservés, certains champs de l’en-tête IPv4 ne sont pas utilisés et les noms et positions de certains champs ont été modifiés. Les champs d’en-tête de paquet IPv6 incluent :

Paquet IPv6

  • Version : c’est le seul champ qui occupe la même place qu’en IPv4. Sur 4 bits, ce champ indique la version du paquet IP et est toujours à 6 (en décimal).
  • Classe de trafic : ce champ de 8 bits permet aux routeurs d’identifier  et distinguer différentes classes ou priorités de paquets IPv6.
  • Étiquetage de flux : ce champ de 20 bits peut être rempli avec une valeur aléatoire qui servira à référencer le contexte. Cette valeur restera la même pour tous les paquets émis pour cette application et destination. Le routeur n’a plus besoin de consulter cinq champs pour déterminer l’appartenance d’un paquet, ce qui rend le traitement des paquets optimisé. D’autre part le routeur peut faire un traitement particulier : choix d’une route, traitement « en temps réel » de l’information, de plus si une extension de confidentialité est utilisée, les informations concernant les numéros de port sont masquées aux routeurs intermédiaires.
  • Longueur des données utiles : contrairement à IPv4, ce champ est codé sur deux octets. Il ne contient que la taille des données utiles, sans prendre en compte la longueur de l’en-tête puisque cette dernière est fixe.
  • En-tête suivant : ce champ de 8 bits est équivalent au champ de protocole de l’IPv4. Il peut s’agir d’un protocole de niveau supérieur notamment ICMP, UDP ou TCP pour indiquer le type de données utiles transportées par le paquet, permettant ainsi à la couche réseau de transmettre les données au protocole de couche supérieure approprié. Il peut s’agir également de la désignation d’extensions qui contiennent aussi ce champ pour permettre un chaînage. Le tableau suivant présente certaines valeurs que peut prendre ce champ :En IPv6 et contrairement à IPv4, les options ne sont pas véhiculées dans l’entête de base. Elles sont insérées dans les entêtes d’extension, entre l’entête de base et l’entête du protocole de couche supérieure.
  • Limite de nombre de sauts : ce champ remplace la durée de vie (TTL) de l’IPv4. La valeur de ce champ est réduite à chaque fois que le paquet traverse un routeur. Lorsque le compteur atteint 0, le paquet est rejeté et un message ICMPv6 est transféré à l’hôte émetteur, indiquant que le paquet n’a pas atteint sa destination. On peut noter une limitation, puisque ce champ codé sur 8 bits n’autorise la traversée que de 255 routeurs.
  • Adresse source/destination : deux champs de 128 bits : ils identifient les adresses IPv6 de l’émetteur et du récepteur.

L’Adressage en IPv6

Une adresse IPv6 est  de 128 bits, soit 16 octets, contre 32 bits pour IPv4. On dispose ainsi d’environ 3,41038  adresses. Sur 8 groupes de 4 chiffes hexadécimaux, les adresses IPv6 se présente séparées par deux points comme le montre l’exemple suivant :

Structure des adresses IPv6

Les 64 premiers bits (poids fort) représentent le préfixe qui correspond à l’identifiant réseau de l’adresse IP. Une adresse IPV6 est basée sur la notion de préfixe qui tient compte entre autre de la zone géographique. Les 64 derniers bits (poids faible) représentent l’identifiant d’une machine (pouvant être l’adresse MAC expansée).

Les règles d’adressage

  • La notation impose un regroupement par 16 bits ou 2 octets.
  • Les zéros leaders (du poids fort) de chaque bloc peuvent être omis.
  • Les groupes consécutifs de zéros peuvent être substitués par des zéros.
  • L’écriture selon le principe de CIDR: adresse/longueur_préfixe.

 Exemple :

L’adresse  0080:0000 :0000 :0000 :0023 :4567 :89AB :CDEF  est équivalente à celles-ci, comme les règles d’adressages permettent de supprimer les zéros leaders : 80:0000 :0000 :0000 : 23 :4567 :89AB :CDEF .

Il est également possible de remplacer un groupe de zéros consécutifs par un zéro :                                                          80: 0 : 0 : 0 :23 :4567 :89AB :CDEF

Les octets vides peuvent être omis, et donc l’adresse précédente  devient :                                                    80 : : 23 :4567 :89AB :CDEF  

Il est important de noter que dans certains cas il n’est pas possible de supprimer tous les octets vides. Pour l’adresse suivante : 2001:db8:0:12b0:0:0:54c:13ab

Si on supprime tous les octets vides il nous sera impossible de savoir combien d’octets ont été raccourcis sur chaque coté. L’adresse équivalente sera : 2001:db8:0:12b0::54c:13ab

Naturellement, pour éviter toute ambiguïté, l’abréviation «::» ne peut apparaître qu’une fois au plus dans une adresse.

Les types d’adresses

Il existe trois types d’adresses IPv6 : les adresses unicast, multicast et anycast. Il n’y a pas d’adresse ou de communication broadcast en IPv6. La nouvelle version du protocole remplace ce type  par les communications multicast, qui ne sont pas aussi coûteuses que les communications broadcast qui obligent toutes les machines appartenant au réseau de traiter le paquet ayant comme destination une adresse de braodcast.

Le schéma suivant regroupe les différents liens appartenant à chacun des trois types d’adresses.

Types d’adressage IPv6

En unicast on peut distinguer plusieurs types de liens, notamment :

  • Lien local : des adresses avec  validité restreinte à un lien (interfaces connectées directement sans routeurs intermédiaires). Ces  adresses ne sont pas routables sur le réseau et commencent toujours par 1111111010. En IPv6 elles sont notées FE80 ::/10. Un routeur qui reçoit un paquet destiné à une adresse Link-Local: soit c’est pour le routeur lui même et il traite le paquet, sinon, il l’ignore. Les liens locaux sont utilisés avant l’obtention d’une adresse IPv6 routable, pour identifier la passerelle par défaut d’une interface (on utilise la Link-Local adresse du routeur) ou bien pour échanger des informations de routage par les routeurs.
  • Lien unique : ces adresses sont définies dans le RFC 4193 (« Unique Local IPv6 Unicast Adresses ») et correspondent aux adresses privées que l’on avait en IPv4 (10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16). Comme pour les autres types d’adresses, elles sont identifiées par les premiers bits qui la composent. Une adresse IPv6 « Unique Local » commence par FC00::/7 (donc les premiers bits sont 1111 110).
  • Lien global : ces adresses sont  allouées par le fournisseur d’accès internet (FAI) ; leur préfixe est noté: 2000::/3

Ou d’autres types spéciaux comme:

  • Adresse de bouclage : l’adresse 0 :0 :0 :0 :0 :0 :0 :1 équivalente à 127 .0.0.1 en IPv4 ayant le préfixe  ::1/128   est d’une validité limitée à l’hôte.
  • Adresse indéterminée : (0 :0 :0 :0 :0 :0 :0 :0) cette adresse est utilisée par des protocoles d’initiations d’interfaces.

Une adresse multicast est l’adresse d’un groupe d’interfaces. Il permet la diffusion des contenus simultanément vers une large audience. En  unicast les informations sont envoyées autant de fois qu’il y a de connexion, ce qui en résulte un gaspillage de temps et de  ressources  du serveur. Au contraire, en multicast, chaque paquet n’est émis qu’une seule fois et sera routé vers toutes les machines du groupe de diffusion sans que le contenu ne soit dupliqué sur une quelconque ligne physique. La structure d’une adresse multicast comporte un flag (drapeau pour indiquer si l’adresse est  permanente et gérée par une autorité ou temporaire) et un scope (limite la portée de l’adresse de  diffusion sur le réseau).

En multicast on distingue également une adresse dite sollicitée. A chaque adresse unicast ou multicast  est associée une adresse multicast sollicitée utilisée pour la résolution des adresses IPv6 en remplacement du protocole ARP (Traduction d’une adresse IP en une adresse MAC)  et pour la détection des adresses dupliquées (DAD). Ces adresses sont utilisées pour éviter les adresses MAC de diffusion FF:FF:FF:FF:FF:FF.

Une interface fait automatiquement partie des groupes multicast suivants :

  • Le groupe FF02::1 qui comporte tous les équipements présents sur le lien local (all-nodes Groupe) et permet de les cartographier.
  • Le groupe dont l’adresse est l’adresse multicast sollicité (sollicited node address) de l’interface. Cette adresse est construite en concaténant le préfixe FF02::1FF00/104 aux 24 derniers bits de l’identifiant d’interface(les trois derniers octets d’une adresse Mac).

L’adresse anycast  est utilisée comme multicast à la seule différence que le paquet émis avec cette destination  sera remis à un seul membre du groupe (l’hôte le plus proche) même si plusieurs interfaces ont répondu au message  de sollicitation des voisins. Chaque adresse de destination identifie un ensemble de récepteurs finaux, mais un seul d’entre eux est choisi pour recevoir l’information à un moment donné pour un émetteur donné.

La création d’identifiant d’interface

Les 64 derniers bits (poids faible) d’une adresse IPv6 représentent l’identifiant de l’interface. Cette longueur n’est pas imposée par la norme d’adressage IPv6 mais elle permet de réduire la probabilité de conflits et donc garantir l’unicité des adresses. Plusieurs techniques ont été élaborées pour faciliter l’auto-configuration des  équipements :

  • EUI-64 : la technique la plus répandue est basée sur l’utilisation d’une valeur unique par construction comme l’adresse MAC de la machine. Si une interface possède une adresse MAC IEEE 802 à 48 bits universelle, cette adresse est utilisée pour construire des identifiants d’interface sur 64 bits à travers l’expansion de l’adresse MAC avec 16 bits de plus. L’identifiant obtenu est concaténé au préfixe lien local ou aux préfixes globaux pour former l’adresse IPv6.

    Expansion de l’adresse MAC

    Si une machine ou une interface possède un identificateur global IEEE EUI-64, l’identifiant d’interface à 64 bits est dérivé de l’EUI-64 en inversant le septième bit du premier octet  qui signifie universel et qui vaut 0 si l’identifiant EUI-64 est universel. Par exemple, si l’adresse MAC d’une machine est  0018 :1883 :2500 l’adresse sera la suivante : Pour terminer,  nous inversons le 7ème bit du premier  octet de l’adresse MAC. 0018  s’écrit en décimale : 0000 0000 0001 1000 et devient   0000 0010 0001 1000. L’adresse IPv6  est:
    ou en forme agrégée :

  • Le choix d’une valeur aléatoire est une autre technique qui peut être utilisée et qui garantit la confidentialité. La création des identifiants d’interface à partir des adresses MAC pose un problème pour la vie privée car ce mécanisme identifie la machine de l’utilisateur qui garde le même identifiant même si elle change de réseau. Pour garantir la confidentialité, l’identifiant d’interface est soit choisi aléatoirement, soit construit par un algorithme comme MD5 à partir des valeurs précédentes, soit tiré au hasard si l’équipement ne peut pas mémoriser d’information entre deux démarrages. Dans cette approche les identifiants  expirent périodiquement et de nouveaux identifiants sont choisis.
  • Une dérivation de l’identifiant d’une clé publique est une technique cryptographique permettant de mieux authentifier l’émetteur. Les CGA (Cryptographic Generated Addresses) sont générées à l’aide de l’algorithme RSA et la fonction de hachage SHA-1. L’approche cryptographique est majoritairement utilisée dans le cadre de SEND (SEcure Neighbor Discovery), et de ce fait nécessite des procédures robustes permettant de confirmer et valider une adresse en particulier. Ce mécanisme a été mis en place pour pallier certaines vulnérabilités liées à d’autres méthodes d’attribution d’adresse. Nous reviendrons donc dessus par la suite avec une vision plus axée sur la sécurité du protocole.
  • Comme cela était le cas en IPv4, l’attribution des adresses IPv6 peut se faire par un serveur DHCPv6 qui attribue des adresses IPv6 et paramètre les connexions au réseau.
  • La configuration manuelle des adresses IPv6 peut également être utilisée pour des routeurs ou des serveurs, cela rend l’adresse plus mémorisable et donc accessible si le DNS n’est pas actif. Il existe plusieurs techniques notamment l’incrémentation de l’identifiant d’interface pour chaque nouveau serveur :
    • 2001:DB8:1234:1::
    • 2001:DB8:1234:1::2
    • 2001:DB8:1234:1::3

    Le dernier octet de l’adresse IPv4 peut être également utilisé comme identifiant d’interface d’adresse IPv6. Par exemple si un serveur a comme adresse IPv4 192.0.2.123, son adresse IPv6 sera : 2001:DB8:1234:1::123. Il est également possible de reprendre l’adresse IPv4 comme identifiant d’interface sauf que cela conduit à des adresses plus longues à taper ou mémoriser.Cependant pour les postes clients, l’auto-configuration est préférable car elle offre  une meilleure flexibilité pour l’allocation des adresses IP aux clients dont le nombre est grand et dont la position est variable.

La coexistence et la transition  IPv6 -IPv4

L’incompatibilité entre les  adresses IPv4 et IPv6 pose un  problème majeur qui ralentit la migration vers l’IPv6. Dans un premier temps des adresses mappées ou compatibles ont été utilisées pour communiquer  les machines utilisant les deux différents protocoles :

  • Adresses IPv6 mappées IPv4 : ces adresses sont utilisées par la pile IP pour représenter les adresses IPv4 dans des applications IPv6. Ce mécanisme permet aux applications serveur d’écouter des sockets pour gérer nativement les connexions du client via IPv6, et de représenter les adresses correspondant à de l’IPv4 avec leurs 32 bits significatifs notés comme en IPv4. Donc, ::ffff:c000:280  sera souvent noté ::ffff:192.0.2.128 .
  • Adresses IPv6 compatibles IPv4 : pour créer des adresses compatible les 96 premiers  bits de l’adresse sont mis à zéro, alors que ses 32 derniers bits représentent une adresse IPv4, généralement représentée sous la forme décimale (par exemple ::192.168.0.1). Un paquet IPv6 transmis vers l’adresse ::a.b.c.d est encapsulé dans un paquet IPv4 qui est acheminé à travers le réseau IPv4 vers l’adresse a.b.c.d. Arrivé à destination, le paquet IPv6 est extrait et traité normalement par la pile de communication IPv6. Les mécanismes de transition d’IPv4 vers IPv6 n’utilisent plus d’adresse compatible IPv4. Ce type d’adresse est rendu obsolète.

Pour assurer donc la transition il faut intégrer des mécanismes pour faire communiquer des machines utilisant les deux protocoles, notamment :

  • La double pile ou Dual-Stack : l’utilisation de la double pile est la technique la plus simple, elle consiste à doter les nœuds d’une pile IPv6 et d’une autre IPv4. L’avantage principal de cette méthode est de pouvoir se connecter aux applications IPv4 existantes via IPv4, tout en ayant accès aux applications IPv6 via le réseau IPv6. Cependant, comme les deux protocoles fonctionnent simultanément sur une machine, cela peut être coûteux en termes de performance et d’utilisation CPU.
  • Les tunnels d’encapsulation des datagrammes : la deuxième alternative est de créer des tunnels pour transporter IPv6 dans IPv4  ou l’inverse. La passerelle d’accès au réseau vérifie si le datagramme d’arrivée correspond ou non au protocole transit. Si le datagramme ne correspond pas au protocole, il sera encapsulé dans un datagramme du réseau transit pour qu’il puisse être acheminé comme tout autre paquet qui correspond nativement au réseau de transit. Les tunnels  automatiques servent à joindre une machine IPv6  à un réseau IPv4.  Les deux machines établissant le tunnel doivent disposer d’une pile IPv4/IPv6. Contrairement  à la destination qui ne peut être que la machine destinataire du paquet, la source d’un paquet dans le tunnel peut être la machine émettrice du paquet ou  un routeur. Dans le cas ou la source et un routeur, il faudra que la machine source possède une adresse IP compatible.

la figure suivante représente le principe des  techniques d’encapsulation et de la double pile:

mécanismes d’encapsulation et de la double pile – Source: www.ovh.com

Des tunnels comme le broker tunnel ou le tunnel 6to4 sont également utilisés :

  • 6to4 : le mécanisme 6to4 permet d’interconnecter des sites 6to4 entre eux à travers un réseau IPv4. Ce mécanisme nécessite, pour les  routeurs, une adresse IPv4 publique (de préférence fixe) et une double pile IP. Chaque  routeur se crée un préfixe IPv6 unique et l’utilise sur tout son site. Le préfixe est construit en ajoutant l’adresse IP  du routeur au préfixe 2002 ::/16.

    Schéma de fonctionnement de 6to4 – Source: www.wikipedia.org

  • Tunnel broker : il s’agit d’un service sur internet qui propose la création et la configuration d’un tunnel statique pour avoir accès à internet IPv6 par l’intermédiaire d’un réseau IPv4.

Le passage d’un réseau IPv4 à un réseau IPv6 est prévu pour durer longtemps. La première phase de cette transition consiste à doter les hôtes IPv4 et les serveurs, à la fois d’une adresses IPv4 et IPv6. Ce qui leur permet de communiquer avec des machines IPv6 et IPv4. La deuxième phase vise à généraliser la double pile et donc rendre les tunnels IPv6 sur IPv4, qui étaient nécessaires  pour interconnecter les îles IPv6 dans la première phase, moins utilisés. La dernière phase voit l’abandon progressif d’IPv4 sur internet quoique certains réseaux privées continuent à s’en servir en interne et sans avoir accès à internet.

CONCLUSION

Cet article est la première partie d’un ensemble d’articles et de réalisations permettant au public d’avoir une idée sur la problématique actuelle du protocole  IP, due  à ses limitations d’adressage, de connectivité bout en bout et du routage. D’autres problématiques sont également présentes et sont liées à la transition et à la cohabitation avec la nouvelle version IPv6 qui résout majoritairement les problèmes de IPv4. Cette nouvelle version offre un espace d’adressage quasiment illimité et des améliorations des mécanismes de routage. En parallèle, son arrivée apporte également de nouvelles vulnérabilités et faiblesses en termes de sécurité. Ces dernières sont, soit propres à IPv6, soit liées à la cohabitation des deux versions du protocole aujourd’hui sur internet. Le but des prochains articles sera une analyse plus en profondeur d’IPv6 avec un autre angle de vue :  la sécurité.