Vous en avez bavé avec les adresses privées, le subnetting, les VLSM, … ? Rassurez-vous, tout cela n’existera plus d’ici quelque temps !
QUOI ? On s’est pris la tête pour rien ?
En fait, non. Tout au long de cette partie, nous avons travaillé sur IPv4. Cela fait des années qu’on entend dire que ça va disparaitre au profit d’IPv6. Cela fait des années que tout le monde utilise encore IPv4. Pas de panique, donc.
Toutefois, il est inévitable qu’un jour, on délaisse IPv4 au profit d’IPv6. En pratique, cela ne devrait pas changer grand-chose pour les particuliers. Ce qui choquera le plus, ce sera de voir que nos sempiternels 192.168.1.1/24 seront remplacés par de monstrueux FE80::68AF:ADFF:3E80:B69D%11 (au hasard). C’est pourquoi dans ce chapitre, nous allons découvrir les adresses IPv6 qui, malgré leur apparence, ne sont pas plus compliquées que les adresses IPv4.
Pour pouvoir suivre ce chapitre, vous devez connaitre le binaire et l’hexadécimal. Si vous ne maitrisez pas ces sujets, consultez cette annexe avant de vous investir dans les adresses IPv6.
- Un format particulier
- L'adresse privée de sortie
- Les adresses qui voyagent
- Les adresses particulières
Un format particulier
Commençons par une bonne nouvelle : vous avez probablement déjà une adresse IPv6.
Ah bon ?
Eh oui ! Tapez la commande ipconfig
(Windows) ou ifconfig
(Linux / Mac OS) dans une console. Dans les informations de votre carte réseau, vous devriez trouver quelque chose qui ressemble à ça :
Adresse IPv6 de liaison locale. . . . .: fe80::8c79:7ab:73ea:9943%11
Ou encore :
inet6addr: fe80::8c79:7ab:73ea:9943/64 Scope: link
Il se peut même que vous en ayez plusieurs, nous allons y revenir.
Bouh, je n’ai pas d’adresse IPv6, que vais-je faire ?
Installer le support d’IPv6 serait une bonne idée ! Certains systèmes d’exploitation anciens ne supportent pas nativement IPv6, il faut l’installer manuellement. Demandez à votre moteur de recherche préféré comment faire, on ne peut pas donner la procédure pour chaque système. Pour Windows XP SP3, il suffit de taper la commande ipv6 install
et, après redémarrage… Magie ! Toutefois, si votre système ne supporte par IPv6, c’est qu’il est grand temps d’en changer.
Ça y est ? Vous avez une adresse IPv6 ? Maintenant, nous allons apprendre à la lire !
Lire une adresse IPv6
Cela vous a sans doute frappé, nous avons affaire à quelque chose de difficilement lisible. En IPv4, il y a 4 nombres décimaux inférieurs à 255 séparés par des points. Une adresse prend donc 4 octets (32 bits). En IPv6, il y a 8 nombres hexadécimaux inférieurs à FFFF séparés par le symbole « : », cela prend 16 octets (128 bits).
8 nombres ? Dans l’exemple donné, je n’en compte que 5 !
Si déjà, vous n’en comptez que 5 et pas 6, c’est que vous avez deviné que les %11 et /64 étaient des masques de sous-réseau. Bravo !
Effectivement, on ne lit que 5 nombres. Si vous êtes attentifs, vous remarquerez qu’après fe80, il y a deux fois le symbole « : ». Retenez cette explication, c’est fondamental :
Dans une adresse IPv6, « :: » signifie « remplir avec autant de zéros qu’il faut pour avoir 128 bits ».
Reprenons l’adresse précédente et comptons le nombre de bits de chaque bloc.
FE80 | :: | 8C79 | 7AB ( = 07AB) | 73EA | 9943 |
---|---|---|---|---|---|
16 bits | ? | 16 bits | 16 bits | 16 bits | 16 bits |
L’ordinateur calcule tout seul le nombre de bits que représente le « :: ». Ici, il représente 128 - (16 + 16 + 16 + 16 + 16) = 48 bits. L’adresse fe80::8c79:7ab:73ea:9943 peut donc aussi s’écrire fe80:0:0:0:8c79:7ab:73ea:9943.
Vous remarquerez qu’en hexadécimal comme en décimal, on n’écrit pas les zéros inutiles. On pourrait écrire l’adresse précédente sous la forme fe80:0000:0000:0000:8c79:07ab:73ea:9943
, mais quel intérêt ? Ce serait comme écrire 010.000.050.188
au lieu de 10.0.50.188
. Chaque bloc occupe toujours 16 bits, que l’on écrive les zéros inutiles ou pas. Regardez cet autre exemple : l’adresse FE80::1234:1.
FE80 | :: | 1234 | 1 |
---|---|---|---|
16 bits | 80 bits | 16 bits | 16 bits |
Le 1 à la fin occupe 16 bits. Ce nombre seul pourrait s’écrire avec un seul chiffre binaire, mais dans une adresse IPv6, il constitue un bloc de 16 bits à lui tout seul, au même titre que FE80 et 1234.
On ne peut utiliser le double deux-points qu’une fois par adresse IPv6. Pour abréger l’adresse fe80:0:0:0:a4:0:0:1, on peut écrire fe80::a4:0:0:1 ou bien fe80:0:0:0:a4::1, mais en aucun cas, on ne peut écrire fe80::a4::1. C’est normal : à partir d’une telle adresse, comment peut-on deviner combien de zéros il faut mettre à la place des :: ? Faudrait-il mettre 4 blocs de zéros en premier et un seul en second lieu ? Ou bien 3 d’abord puis 2 ensuite ? Une telle écriture est donc impossible.
Voilà, vous savez lire une adresse IPv6 ! C’était pas si difficile que ça, si ? Une dernière chose : pour noter un masque de sous-réseau, on peut utiliser le slash (/) ou le pourcentage (%). Selon les systèmes d’exploitation, vous rencontrerez l’un ou l’autre.
Vous avez peut-être noté que nous avons dit en début de chapitre que vous avez peut-être plusieurs adresses IPv6. Effectivement, une carte réseau peut avoir plusieurs adresses IPv6 simultanément. Chacune d’entre elles correspond à un usage précis. C’est l’objet du reste de ce chapitre.
L'adresse privée de sortie
Quelque chose a peut-être attiré votre attention tout à l’heure lorsque nous avons cherché si nous avions déjà une adresse IPv6 : l’expression « adresse de liaison locale ». Ce genre d’adresse commence forcément par FE80::/10. Qu’est-ce que cela signifie ?
FE80(16) = 1111 1110 10 00 0000(2)
Cela signifie que les 10 premiers bits d’une adresse de lien local valent obligatoirement 1111111010. Voici donc quelques exemples d’adresses de lien local :
- FE80::1 (1111 1110 10 00 0000 [111 zéros] 1)
- FE85::2:1:dada (1111 1110 10 00 0101 [78 zéros] 10 0000 0000 0000 0001 1101 1010 1101 1010)
- FE93::3 (1111 1110 10 01 0011 [110 zéros] 11)
Par contre, ces exemples ci-dessous ne peuvent pas être des adresses de lien local :
- FEC0::1 (1111 1110 11 00 0000 [111 zéros] 1)
- FF00::1 (1111 1111 00 00 0000 [111 zéros] 1)
- ABCD::EFAC (1010 1011 11 00 1101 [96 zéros] 1110 1111 1010 1100)
La particularité de cette adresse est qu’elle ne peut être utilisée que pour contacter un hôte directement connecté. Les exemples suivants ont été réalisés avec le logiciel Packet Tracer.
Depuis l’ordinateur 1 (FE80::1), on « pingue » le 2 (FE80::2). Résultat :
PC>ping fe80::2
Pinging fe80::2 with 32 bytes of data:
Reply from FE80::2: bytes=32 time=11ms TTL=128
Aucun souci. Maintenant, on relie les 2 ordinateurs au routeur, comme ceci :
Sachez que l’interface du routeur reliée au PC 1 a pour adresse FE80::3 et l’autre FE80::4.
On relance la même commande :
PC>ping fe80::2
Pinging fe80::2 with 32 bytes of data:
Request timed out.
Il n’y a pas d’histoire de masque de sous-réseau, la preuve :
PC>ping fe80::4
Pinging fe80::4 with 32 bytes of data:
Request timed out.
[...]
PC>ping fe80::3
Pinging fe80::3 with 32 bytes of data:
Reply from FE80::3: bytes=32 time=5ms TTL=255
Avec des adresses de lien local, on ne peut donc vraiment que contacter un hôte auquel on est directement connecté !
Les adresses des exemples ci-dessus ont été attribuées manuellement (pour qu’elles soient courtes et donc plus faciles à taper). Mais sur votre machine, vous n’avez pas choisi votre adresse IPv6 : elle a été attribuée automatiquement ! Pour obtenir une adresse IPv6, il y a plusieurs manières. Soit il y a un serveur DHCPv6 qui distribue des adresses à tour de bras sur le réseau et on prend ce qu’il donne. Soit il n’y en a pas et votre ordinateur la génère lui-même.
Pour générer une adresse IPv6, certains systèmes comme Windows 7 tirent des nombres au hasard et paf ! Ça fait des chocapics une adresse. D’autres, comme Windows XP, se basent sur l’adresse MAC de la carte réseau : ils changent d’état le 7ème bit, insèrent FFFE en plein milieu et collent le tout après FE80::.
On ne peut donc pas communiquer avec des hôtes éloignés en utilisant les adresses de lien local. Qu’à cela ne tienne ! Pour aller sur Internet, nous utiliserons des adresses globales.
Les adresses qui voyagent
Les adresses IPv6 utilisées sur Internet sont très structurées et hiérarchisées. Regardez le tableau ci-dessous :
IANA | RIR | LIR | Client | Sous-réseau | Hôte |
---|---|---|---|---|---|
3 bits | 20 bits | 9 bits | 16 bits | 16 bits | 64 bits |
À l’époque où cela a été conçu, l’IANA était l’organisme qui gérait les adresses IP sur Internet. Il a décidé que les adresses IPv6 utilisables sur Internet commenceraient par 2000::/3, puis il donne au RIR des valeurs sur 20 bits pour différentes zones géographiques. Chaque RIR donne ensuite aux LIR des valeurs pour chacun d’entre eux, qui eux-mêmes vont distribuer des valeurs aux clients, qui vont… etc.
IANA ? RIR ? LIR ? Euh… ?
L’IANA, c’est le chef. Ou plutôt, c’était le chef jusqu’en 2016, quand l’ICANN a repris ce rôle. Il existe différents RIR pour différentes zones géographiques : l’ARIN pour l’Amérique du Nord, l’AfriNIC pour l’Afrique, l’APNIC pour l’extrême-orient et l’Océanie, etc. Le chef a dit : tel RIR prendra telle valeur pour son champ. Ainsi, toutes les adresses IPv6 japonaises commencent par 2001:0200::/23, car l’APNIC (qui couvre le Japon) a obtenu la valeur 00000000000010000001(2).
Les LIR, ce sont les fournisseurs d’accès à Internet et les très grosses entreprises. Par exemple, OVH détient tout le bloc 2001:41d0::/32 (si on fait le calcul, il a obtenu la valeur 111010000(2)). SFR détient le bloc 2001:4c18::/32. Ces informations peuvent être consultées sur cette page.
Ensuite, chacune de ces entreprises dispose en théorie de 65536 adresses pour ses clients. En réalité, elle peut empiéter sur le champ « sous-réseau » pour étendre ce nombre et laisser les clients faire des sous-réseaux en empruntant des bits du champ « hôte » (il y a de quoi faire !).
FE80::/10, 2000::/3… Cela fait quand même un paquet d’adresses inutilisées ! Que deviennent les autres ? Bonne question… De grands blocs sont réservés pour des usages privés. D’autres sont réservés pour des usages spécifiques. C’est ce que nous allons voir maintenant !
Les adresses particulières
En dehors des adresses de lien local et globales, il existe aussi quelques adresses particulières à connaitre.
Les adresses courtes
Celles-là sont appréciées pour leur facilité d’écriture. On trouve 2 adresses particulièrement courtes :
- ::1 : c’est l’adresse de la boucle locale (loopback). C’est l’équivalent de 127.0.0.1 en IPv4.
- :: (ou ::0) : c’est l’adresse que prend votre carte réseau avant de s’attribuer une adresse. Quand votre machine envoie une demande d’adresse au démarrage, elle le fait sous l’adresse ::. Nous aurons l’occasion d’y revenir quand nous parlerons de la couche réseau du modèle OSI.
Les adresses de site local
Ces adresses sont attribuées au sein d’un site mais ne sont pas accessibles depuis le réseau public (comme les adresses privées en IPv4). Elles commencent par FEC0::/10 et sont structurées de la manière suivante :
10 bits | 54 bits | 64 bits |
---|---|---|
1111 1110 11 | identifiant du sous-réseau | identifiant de l’hôte |
Ces adresses peuvent être routées (elles peuvent passer des routeurs) dans le site local, mais pas au delà.
Les adresses multicast
Elles commencent par FF00::/8 et servent à désigner et gérer des groupes d’hôtes. Le multicast n’est pas l’objet de ce chapitre, il y a tellement de choses à dire à ce sujet que nous y reviendrons ultérieurement. Sachez juste, pour le moment, qu’une adresse IPv6 qui commence par FF ne désigne pas un hôte.
Contrairement à IPv4, en IPv6, il n’existe pas d’adresse de broadcast !
Les adresses d’encapsulation 4/6
IPv6 est compatible avec IPv4. On peut s’adresser à une adresse IPv4 même si on a juste une adresse IPv6. Comment faire alors pour désigner une adresse IPv4 en IPv6 ? En la représentant de cette manière :
10 octets | 2 octets | 4 octets |
---|---|---|
Que des zéros | FFFF(16) | L’adresse IPv4 |
Voici quelques exemples :
Adresse IPv4 | Adresse IPv6 d’encapsulation |
---|---|
42.13.37.42 | ::FFFF:42.13.37.42 |
192.168.2.1 | ::FFFF:192.168.2.1 |
La notation peut surprendre au premier abord. Pourtant, elle est courante et est plus facile à comprendre que si on l’écrivait entièrement en hexadécimal.
Vous savez maintenant différencier les différentes adresses IPv6 !
Voilà pour ce tour d’horizon des adresses IPv6. Nous n’avons parlé que du format des adresses mais pas de ses avantages : nous verrons cela quand nous traiterons la couche 3 du modèle OSI. Mais avant, il y a la couche 4 !