Vous en entendez parler depuis longtemps surement. L’IPv6 vient succéder à l’IPv4.
Même si son implémentation est plus lente que prévue, une chose est sure, l’IPv6 arrive !
Dans ce premier article nous allons revenir sur la théorie de base à connaitre sur l’IPv6.
Plus tard, nous passerons à la pratique.
1) Présentation d’IPv6
Tout d’abord, qu’est-ce que l’IPv6 ?
Vous le savez certainement. Il s’agir du successeur d’IPv4.
Le problème principal de l’IPv4 est le nombre d’adresse possible.
Comme celle–ci est codée sur 32 bits, il est possible d’obtenir, en théorie, 2^32 adresses différentes, soit un peu plus de 4 milliards d’IP.
Même si ce nombre peut paraitre très élevé, cela ne suffit pas à assigner une adresse à toutes les machines existantes.
S’en est suivit la séparation entre IP privées et publiques, et l’arrivé du NAT.
Mais aujourd’hui, cela ne suffit plus.
Presque toutes les IPv4 ont été assignées.
L’arrivée d’IPv6 va permettre de corriger ce problème, tout en apportant certaines nouveautés.
Savez-vous combien d’IPv6 différentes il est possible de générer ?
Voici une représentation de ce chiffre : environ 67 milliards de milliards d’adresses … par mm² de surface terrestre !
Autant dire qu’il sera difficile d’atteindre la pénurie !
Le nombre est si grand, que seul 15% des IP seront exploitées dans un premier temps (ce qui ne veut pas dire que les 15% seront assignées).
Mais l’augmentation du nombre d’adresse n’est pas le seul avantage de l’IPv6.
Plusieurs autres innovations sont de la partie :
- Fin du NAT : plus d’IP privée (chaque machine aura sa propre IP)
- IPSEC supporté de base
- IP mobile : une machine peut garder sont IP quand elle se déplace
- Un Header plus simple
- Adresse auto configurée
- Disparition du Broadcast
- Disparition d’ARP (mais remplacée par Neighbor Discovery)
- Etc …
2) Structure d’une IPv6
Une IPv6 est codée sur 128 bits (contre 32 pour une IPv4).
Elle est composée de 8 groupes de 16 bits.
En voici un exemple :
2001:0048:0000:0000:1D00:1111:0B48:1111
L’adresse n’est plus en décimale, mais en hexadécimal.
Etant donné qu’une IPv6 est bien plus compliquée à écrire qu’une IPv4, il est possible de la résumer.
La première chose à faire est de supprimer les groupes de « 0 » consécutifs.
L’adresse précédente devient donc :
2001:0048::1D00:1111:0B48:1111
Les groupes de « 0 » supprimés sont remplacés par un « :: »
Attention tout de même, il n’est pas possible de réaliser cette opération plusieurs fois.
Par exemple, il n’est pas possible de résumer l’adresse suivante de cette manière :
2001:AAAA:0000:0000: BBBB:0000:0000:1111 -> 2001:AAAA::BBBB::1111
Il faut donc choisir le plus grand groupe de « 0 », et le supprimer.
Ensuite, il faut supprimer tous les « 0 » en début de groupe :
L’adresse précédente (2001:0048::1D00:1111:0B48:1111) devient alors :
2001:48::1D00:1111:B48:1111
Les « 0 » en fin de groupes doivent être conservés.
Nous sommes donc passés de ça :
2001:0048 :0000:0000:1D00:1111:0B48:1111
A ça :
2001:48::1D00:1111:B48:1111
Bien plus simple à écrie n’est-ce pas ?
3) Header IPv6
Voici à quoi ressemble le Header IPv6 :
Vous remarquerez qu’il est bien plus simple que celui d’IPv4.
Le nombre de champs a été largement réduit.
Voici le détail :
- Version : version d’IPv6, toujours à 6
- Traffic Class : utile pour la QOS. Permet de distinguer les sources qui doivent disposer de contrôle de flux, par rapport aux autres. Une valeur de 0 à 7 est donnée aux sources capables de ralentir leur débit. Une valeur de 8 à 15 est donnée aux sources qui doivent disposer d’un débit constant (VOIP, vidéo, etc…). Ainsi, en cas de congestion, le routeur pourra prioriser le trafic des sources ayant le Traffic Class le plus faible.
- Flow Label (optionnel) : permet de traiter un flux différemment dans le réseau. Un numéro aléatoire est choisi par la source, et sera gardé pour tous les paquets allant à une certaine application de la destination. Les routeurs pourront alors traiter ces données-là de manière différente. Exemple : temps réelle.
- Payload Length : taille de la charge utile (permet au routeur de reconnaitre la fin du paquet)
- Next Header : identifie le type du Header suivant (TCP, UDP, ICMP, ou simple extension IPv6)
- Hop Limit : similaire au TTL de l’IPv4
- Source Address : Adresse IP source du paquet
- Destination Address : Adresse de destination du paquet
Le nombre réduit de champs par rapport à l’IPv4 allège le travail des routeurs, car ils ont moins d’informations à traiter.
Cela améliore aussi la sécurité (moins d’informations vitales qui transitent).
Autre nouveauté dans IPv6, il est possible d’utiliser des extensions. Ce sont en fait des Header qui sont placés après le Header IPv6, et avant le Header de la couche 4 (TCP, UDP, etc…)
Le champ Next Header permet de les identifier.
Voici la liste des extensions possibles :
Ces extensions peuvent se combiner entre elles.
Par exemple, pour de l’IPSec : Destination Option, AH et ESP.
4) Les 3 types de communication
Voyons maintenant les trois types de communications en IPv6.
Vous le savez, en IPv4 nous avions ces trois types là :
- Unicast
- Broadcast
- Multicast
En IPv6, le Broadcast a disparu.
Nous avons alors les trois types de communication suivants :
- Unicast : One To One
- Multicast : On To Many
- Anycast : One To Nearest (ou One to One Of Many)
Pas de changement pour les deux premiers par rapport à IPv4.
L’Anycast fonctionne un peu comme le Multicast.
Une IP unique représente plusieurs interfaces.
Par contre, quand un paquet est envoyé sur une IP Anycast, il est en réalité envoyé à l’interface la plus proche.
Au passage, voici certains ranges Multicast en IPv6 :
- FFx2 ::/16 : Ne peut pas être routé (équivalent de 224.0.0.0 /24) Utile pour les MAJ de routage
- FF02 ::5 : OSPF
- FF02 ::9 : RIP
- FF02 ::a EIGRP
5) Les 3 types d’adresses
Link-Local Address :
Ce type d’adresse est valide uniquement pour les interfaces connectées sur le même lien (c’est-à-dire sans passer par un routeur).
Exemple : lien PPP, Ethernet etc…
Il n’est donc pas possible de router un paquet ayant ce type d’adresse.
Ce type d’adresse est utilisé pour la découverte de voisin (Neighbor Discovery en remplacement d’ARP), la configuration automatique d’adresse globale, l’échange d’infos pour les protocoles de routage, etc…
Ces IP doivent bien sûr être uniques.
Le préfix d’une telle IP est : FE80 ::/64 (soit FE80:0000:0000:0000) jusqu’à FEBF ::/64
En général, elle est auto-configurée (grâce à une combinaison du préfix et de l’adresse MAC)
Site-Local Address :
Ce type d’adresse n’est plus utilisée.
Il s’agissait plus ou moins d’une IPv6 privée.
Mais comme nous l’avons dit, l’IPv6 a fait disparaitre cette notion de privé / publique.
Donc finalement, ce type d’adresse n’a plus vraiment d’intérêt.
Le préfix va de FEC0::/64 à FECF::/64
Global Address :
C’est le type d’adresse qui nous intéresse le plus.
Celle-ci est routable sur internet.
Elle est découpée en plusieurs parties :
Les premiers 48 bits correspondent au préfix global. Il vous est attribué par votre FAI.
Les prochains 16 bits correspondent au Subnet ID, ce qui vous permet de créer des sous réseaux.
Les derniers 64 bits représentent l’interface
Il est donc simple pour une interface de configurer cette IP automatiquement.
Pour cela, elle récupère le préfix global avec le Subnet ID, puis elle y ajoute l’interface ID (calculé à partir de l’adresse MAC).
Le préfix va de 2000 à 3FFF.
6) Transition vers IPv6
L’IPv6 est de plus en plus présente. Mais comment se fait la transition ?
Il n’est malheureusement pas possible de passer tous les réseaux à l’IPv6 en un jour.
Vous l’aurez donc deviné, il est nécessaire de faire cohabiter l’IPv4 et l’IPv6.
Aussi, pour assurer la cohabitation, différentes technologies existent.
Voyons trois d’entre elles.
Le Dual-Stack
Cette technique est l’une des meilleures.
Le principe est simple. Le routeur fonctionne à la fois en IPv4 et en IPv6.
Il peut donc faire transiter du trafic en IPv4 ou en IPv6 selon la source / destination.
Si possible, les machines utiliserons IPv6 pour communiquer, et sinon, l’IPv4.
En pratique, voilà à quoi cela peut ressembler :
Vous pouvez voir que le routeur fonctionne en IPv4 ou en IPv6 selon la source.
Les interfaces posséderont donc 2 IP.
Tunneling
Si vous êtes contraints de passer par un réseau IPv4 pour connecter des réseaux IPv6 (ou inversement), le tunneling est une solution envisageable.
On parle de « 6 to 4 » quand des paquets IPv6 passent dans un tunnel à travers un réseau IPv4.
On parle de « 4 to 6 » quand des paquets IPv4 passent dans un tunnel à travers un réseau IPv6.
Prenons l’exemple de 6 to 4.
Les paquets IPv6 seront encapsulés dans un paquet IPv4 le temps du passage dans le réseau IPv4.
Le protocole utilisé pour le tunnel est GRE.
Voici un exemple d’implémentation :
NAT-PT (NAT Protocol Translation)
Dernière solution abordée, le NAT.
Cette solution n’est pas à utiliser si l’une des deux autres solutions précédentes est possible.
Le but du NAT-PT est de connecter un réseau IPv6 directement à un réseau IPv4 (ou inversement).
Le routeur se charge de changer les IP sources et destinations des paquets.
Voici un exemple d’implémentation :
tres bien explique merci beaucoup pour ce article
Merci
Vote Site est excellent et me permet d’apprendre
ou de compléter mes connaissances tous les jours.
Un Grand Merci
serge
Merci beaucoup pour cet article
Merci beaucoup, très bien simplifie et bien expliquer