Comprendre IPv6 et sa problématique

Alors qu’on parle d’IPv6 depuis plus de 15 ans dans les milieux plus ou moins autorisés, on n’en voit toujours pas vraiment “les bits”. Si quelques acteurs du marché essayent, tant bien que mal, de promouvoir cette technologie, la route est encore longue pour voir son adoption globalisée. Le but de ce dossier n’est pas de vous permettre de mettre en place IPv6 à la maison (ça a peu d’intérêt et ça présente certains risques), mais de vous donner les clés pour comprendre, dans les grandes lignes, ce que c’est. Et appréhender au passage pourquoi nous sommes toujours en IPv4, ainsi que les défis à relever pour en sortir. D’ailleurs, on va commencer par ce gros morceau, qui a déjà plus de 35 ans ! L’histoire avec un grand H et en avance rapide, c’est parti !

IPv6 Banner

Tout le monde connaît l’histoire des militaires qui ont besoin d’un réseau résistant aux attaques nucléaires et qui demandent à des hippies hackers (dans le sens “bidouilleur de l’extrême”) de leur faire le “network du futur”. Après plein de péripéties funky, on obtient IPv4 au début des années 80. Un protocole encore utilisé aujourd’hui. Oui, je schématise à mort, mais c’est pour que vous soyez concentré pour la suite. On est là pour l’aspect technique de la chose, moins pour l’Histoire.

2 puissance 32, on sera large

IPv4 permet la création de plus de 4 milliards d’adresses IP. On se dit qu’on va être peinard pour un moment. C’est le début des années 80, le temps de l’innocence et de la frugalité : les ordinateurs de l’époque n’ont pas (encore) des Gigas octets de RAM en standard (c’est plutôt du genre 4Ko). Du coup, 4 octets pour stocker l’adresse de l’ordinateur, c’est déjà beaucoup ! Et on n’imagine pas qu’un jour tout le monde aura besoin d’une ou plusieurs IP. Surtout pas pour un téléphone et encore moins pour une télévision ou un amplificateur audio !

Et la lumière fut…

Avance rapide au début des années 90, et l’arrivée d’Internet chez les particuliers. Quelques personnes ayant participé au développement d’IPv4 se disent que ça ne va pas suffire longtemps cette histoire… Si on fait des maths super basiques, on comprend vite qu’avec déjà plus de 5 milliards d’humains à l’époque, rester bloqué sur nos 4 milliards d’adresses IP ne semble pas vraiment être une solution d’avenir. Surtout quand on sait que dans les années 80, c’était un peu la fête à la distribution des sous-réseaux IP (on va y revenir). Résultat, une gueule de bois “technique” carabinée :

Euh dis donc René, tu sais hier soir, quand on était bourré, je t’ai filé quasi gratos 16 millions d’IP, tu ne voudrais pas m’en refiler quelques-unes ?

Va mourir. Donner c’est donner, reprendre c’est voler !

Et merde…

Du coup, il s’est passé deux choses :

  • Un groupe a bossé sur une bidouille assez impressionnante pour qu’IPv4 continue à fonctionner et donné naissance au NAT (Network Address Translation – on va y revenir aussi).
  • Un autre groupe, nommé Internet Engineering Task Force (IETF), a travaillé sur l’avenir du réseau et a pondu un nouveau protocole, le fameux IPv6 dont il est question dans ce dossier.

Dans le cas du NAT, il faut savoir que ce genre de développement “à l’arrache” et avec offrandes aux dieux de la bidouille était très courant à cette époque. C’est encore un peu le cas maintenant, côté Internet en tout cas. Pour vous donner un autre exemple concret, prenez le protocole SMTP qui sert à envoyer vos emails. Sa première implémentation imposait une limite de 4 Ko pour les messages. Puis, en forçant un peu, elle passa à 64 Ko. Et là, un mec s’est dit “Pourquoi ne pas envoyer d’image (fichier binaire) par email ?” et d’un coup, on complexifie le jeu. Le protocole n’étant absolument pas prévu pour transporter autre chose que du texte, y glisser un fichier binaire est a priori impossible.

Sauf pour un bidouilleur avisé. Ou pire, un groupe de bidouilleurs têtus. Plutôt que de réfléchir à un nouveau protocole pour les emails, ils ont préféré inventer un algorithme qui mouline un fichier binaire pour le mettre au format texte. Une transformation qui fait gonfler la taille de votre fichier de 20 a 30 %… Du coup, il sera en prime difficile de faire comprendre à Madame Michu pourquoi une limite de 10 Mo ne permet que d’envoyer des fichiers binaires de 6 ou 7 Mo max, qui sont rajoutés bêtement à la fin du mail sous forme d’encodage texte bien moche…

Mais pour revenir à notre sujet et comprendre pourquoi nous en sommes arrivés à IPv6 (et à toutes les bidouilles d’IPv4), il va falloir définir les choses et faire (un peu) de technique. Non restez, ce n’est pas (trop) compliqué, promis !

Dis Papa, c’est quoi cette bouteille de lait adresse IP ?

Je pense que les lecteurs de Geekzone savent à quoi ressemble une adresse IP, genre 195.242.12.87. En revanche, si je vous demande ce que ça signifie, comment l’IP est utilisé par les ordinateurs, ça se complique un peu plus. Et comme souvent en vulgarisation, on va utiliser une analogie.

Si l’IP est une adresse, par essence informatique, les humains ont utilisé depuis des siècles ce concept, mais avec un formalisme qui parle à presque tout le monde : vous avez deviné, on va parler adresse postale.

Imaginons un instant celle (imaginaire) de Caféine :

Mr Cafeine
42 rue Geekzone
92600 Asnières
France

Pour faire une analogie avec une adresse IP, il faut réécrire un peu tout ca :
France, 92600 Asnières, rue Geekzone, 42, Mr Cafeine

Et histoire que ça fasse encore plus IP :
France.92600 Asnières.rue Geekzone.42.Mr Cafeine

Ce qui donne :
Pays.Ville.Rue.Numero.Nom

J’avoue, ce n’est pas super lisible, mais ça simplifie ce qu’on appelle le routage. Terme qui existe aussi bien à la poste qu’en informatique vu que c’est exactement la même chose. Si je fais une lettre à Cafeine et que je la poste, quel que soit l’endroit où je suis dans le monde, le “facteur” va déjà regarder la première donnée, le pays. Si je suis à Tokyo, le gars du tri postal se moque de savoir où est Asnières ou la rue Geekzone. Si je suis en France en revanche, le facteur va directement regarder la ville une fois qu’il voit que l’adresse concerne la France. Et ainsi de suite.

On peut résumer ça avec un petit schéma :

IPv6_1

Illustration 1 : pour aller chez Caféine, tournez à droite…

Mais en fait, c’est la version simple. En réalité, c’est plutôt un truc comme ça :

IPv6_2

Illustration 2 : oui, j’ai eu la flemme après la ville…

 

Le sous-réseau

Pour une adresse classique, on comprend instinctivement ce qu’est le “sous-réseau”. “France” devient le sous-réseau “Pays” par exemple, mais évidemment, pour un ordinateur, ça n’a pas de sens.

On va donc définir des sous-réseaux avec un format particulier : France/1
ou encore : France.92600 Asnieres/2

Dans le premier cas, le code de fin nous indique de ne prendre en compte que le pays. Si on écrit l’adresse complète :
France.92600 Asnières.rue Geekzone.42.Mr Caféine/1

Les données significatives ne sont plus que :
France

Si je suis au Japon et que j’envoie une carte postale à Caféine, l’adresse complète est donc :
France.92600 Asnières.rue Geekzone.42.Mr Caféine

Mais le postier fait automatiquement :
France.92600 Asnières.rue Geekzone.42.Mr Caféine/1

Et donc ne voit que “France” et la met dans un carton “France”.

Si je suis à Paris, j’aurais :
France.92600 Asnières.rue Geekzone.42.Mr Caféine/2

Soit :

France 92600 Asnières rue Geekzone 42 Mr Cafeine
1 1 0 0 0
France 92600 Asnières 0 0 0

Pour calculer le chiffre /XX, c’est simple, on compte le nombre de 1 de ce que l’on veut garder, qui correspondent aux informations significatives. Ce paramètre s’appelle le Classless Inter-Domain Routing côté IP et vous allez voir, il est essentiel.

Dans le monde de Tron, c’est pareil

L’ordinateur va faire la même chose avec une IP, mais sur un tableau de 32 colonnes. Parce que si votre adresse IPv4 est 195.123.12.45, l’ordinateur, lui, ne pige que les 0 et les 1. Mais personne n’a envie de taper une adresse constituée de trente-deux 0 et 1 ! Du coup, tout a été regroupé en 4 nombres de 8 bits pour simplifier la chose. (8×4 = 32, jusqu’ici vous devriez suivre).

195.123.12.45/16 devient donc ➜

IPv6_3

On écrira au final 195.123.0.0/16 (parce que les informaticiens sont fainéants) si on n’est intéressé que par les deux premiers blocs d’infos, ce fameux /16 nous indiquant qu’on se moque des deux derniers blocs de 8 bits.

Le routage, version IP

Si je reprends l’illustration 2, on obtient la même chose, mais compréhensible en IP :

IPv6_4

Pour voir ce cheminement en live (mais avec des adresses différentes), utilisez les commandes suivante :

tracert google.fr (sous Windows)
traceroute google.Fr (sous Linux / OS X)

En IPv6, c’est pareil, mais avec… 128 colonnes.

Ouaip. Cent vingt-huit. Et la notion de masque (Classless Inter-Domain Routing) (qui devient ici /XXX) est primordiale, car elle fait désormais partie de la définition même d’une adresse IPv6. Et finesse supplémentaire, on passe de la base 10 (le décimal que tout le monde connait) à la base 16. Et clairement, beaucoup moins de gens parlent l’hexadécimal couramment… On n’écrit plus de 0 à 9 mais de 0 à F. Résultat, une adresse IP en IPv6 n’est pas :
195.123.12.45.195.123.12.45.195.123.12.45.195.123.12.45

Mais devient :
2001:0db8:0000:85a3:0000:0000:ac1f:8001

C’est plus court, mais ça va en choquer plus d’un…

Vu la longueur de l’adresse, le /XXX est primordial, car celui-ci permet d’être un gros flemmard (oui, encore) et d’écrire une adresse sous la forme 2001:0db8:1f89:0000:/48 par exemple.

Et si on optimise vraiment, on peut aussi écrire 2001:db8:1f89::/48

Les yeux plus gros que le ventre ?

Pourquoi vous raconter tout ça ? Car ces notions sont indispensables pour comprendre IPv6. Ce système d’adressage est né d’une idée très simple : IPv4 est trop limité pour donner suffisamment d’adresses à tous, il faut un nouveau système qui permet d’être “large”. Tellement large que la norme actuelle n’utilise qu’une fraction des adresses possibles :
2000::/3 soit les adresses de 2000:0:0:0:0:0:0:0 à 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

Chaque FAI dispose d’une plage /32 (donc 296 adresses pour un seul FAI), et ces mêmes FAI proposent à chacun de leur client une plage /64 (soit 264 adresses). Les pros peuvent avoir une plage plus grande (genre /48). C’est donc beaucoup plus qu’IPv4 et ses 4 milliards de possibilités !

On a tellement de place avec IPv6 que dans sa première version, l’idée était de simplifier au maximum l’attribution d’une IP. Dans IPv4, votre ordinateur va faire “coucou, je veux une IP” sur le sous-réseau et le chef du sous-réseau en question (généralement le FAI, voire votre box) va vous répondre “OK, voilà ton adresse”. C’est le principe du serveur DHCP. Sauf que le nombre d’IPv4 étant limité, ça peut coincer et le chef vous sortir un désagréable “ah ben non, apu !”.

À la base, IPv6 a été créé avec cette même notion de demande d’IP (DHCPv6), mais certains ont décidé de tout simplifier. En considérant que chaque ordinateur a un identifiant unique (l’adresse MAC, lié à toute carte réseau, qu’elle soit filaire ou non), on utilise cet identifiant pour en faire une adresse IPv6. Le protocole se nomme SLAAC pour Stateless address autoconfiguration et est censé simplifier au maximum l’utilisation de IPv6.

Sauf que cette simplicité pose un “petit” problème de vie privée : une adresse MAC est censée être unique, et donc permet d’identifier chaque individu sur le réseau. De plus, de nombreux appareils n’ont pas été développés avec la sécurité en tête des priorités, et une connexion directe peut être problématique. Tout ça n’était pas très grave avec la première bidouille dont je parlais en début de dossier, le NAT. Je vous avais dit qu’on allait y revenir…

Pour vivre heureux sur Internet, vivons masqués

Rappel pour ceux qui ne suivent pas / plus : suite à la prévision de la pénurie d’adresse IPv4, une technologie a été mise en place avant la création d’IPv6 : le NAT. L’idée est d’utiliser une seule IP publique pour N appareils sur le réseau local. Toute box française sait faire ça.

On reprend notre exemple d’adresse de Caf :
France. 92600 Asnières. rue Geekzone. 42. Mr Caféine

Ça, c’est l’IP publique, accessible depuis Internet. Dans cette maison, il y a :

  • PC-de-caf
  • mac1-de-caf
  • mac2-de-caf
  • iphone-de-caf

Quatre machines pour une adresse ? Ça va être un problème ! Surtout que dans la réalité, c’est souvent beaucoup plus chez le moindre geek !

Pour pallier à ce problème, le routeur de la box de Caféine conserve une correspondance entre les accès de chaque machine et leur nom. Et elle “masque” ce nom avec l’adresse publique. De l’extérieur, on voit uniquement “France. 92600 Asnières. rue Geekzone. 42. Mr Caféine”, mais la box est capable de rediriger les accès aux ordinateurs concernés. Les paquets de données de votre partie de Starcraft II n’iront donc pas s’échouer bêtement sur votre smartphone.

Ce système a un effet de bord majeur : de l’extérieur, il est impossible de contacter une des machines de Caféine (sauf à utiliser une redirection, mais aucune n’est configurée par défaut). Il faut qu’une machine de l’intérieur contacte l’extérieur pour avoir une réponse. Ça signifie que les ordinateurs sont de facto protégés des attaques réseau. Cette protection de base fait que de nombreux appareils prévus pour fonctionner sur votre réseau local ne sont pas spécialement protégés, car il n’a jamais été envisagé qu’ils puissent être accessibles directement depuis Internet.

Une 3eme techno IPv6 à la rescousse

Pour se passer de la “protection” du NAT, on va régler le problème de la vie privée avec une énième solution technique. L’idée est de générer une adresse aléatoire. On prend le réseau en /64 fourni par le FAI et on génère les 64 derniers bits au pif, pour éviter d’être tracé. Une solution intéressante, mais qui ne simplifie par le routage…

Malgré la taille de ce dossier, je n’ai fait qu’effleurer certains principes d’IPv6 et j’ai pris quelques vilains raccourcis, mais vous avez assez d’infos pour commencer à comprendre pourquoi son adoption est compliquée :

  • Pour Internet dans sa globalité, passer d’une adresse 32 bits à une adresse 128 bits n’est pas simple, car il faut que tous les routeurs de la planète gèrent IPv4 et IPv6, au moins pendant la période de transition.
  • Les logiciels doivent eux aussi gérer les deux technologies.
  • Le fait d’avoir plusieurs solutions d’attribution d’IP est complexe. Sachant que les solutions de conversion IPv4/IPv6 ne sont pas forcement compatibles (l’essai d’IPv6 avec la freebox V5 était funky).
  • Le besoin est moins pressant que prévu. Beaucoup de problèmes se résolvent avec le NAT. Par exemple, votre smartphone utilise très probablement du NAT pour accéder au Net en 3 ou 4G. On appelle ça le CGN, ou Carrier-grade NAT.
  • La protection automatique liée à l’utilisation du NAT a rendu les développeurs trop confiants. La majorité des appareils dédiés à une utilisation locale ne sont pas protégés des attaques extérieures, ce qui les rend problématiques à utiliser via IPv6. On imagine aisément un pirate s’amusant à changer la chaîne de votre télévision connectée, mais ça peut avoir des conséquences bien plus graves.
  • En plus de la transition IPv4 vers IPv6, il faut prévoir un système v6 vers v4 pour les vieux trucs qui ne marchent pas (et ne marcheront jamais) avec IPv6. Un cout supplémentaire pour les acteurs du secteur.

Vous l’aurez compris, l’argent est, comme souvent, le principal frein de cette évolution vers IPv6. Car il faut réaliser que pour harmoniser tous les réseaux de la planète sur ce standard, il va falloir que les entreprises et les particuliers un peu équipés remplacent tout leur matériel non compatible, sans parler des formations pour les gestionnaires du réseau chez les pros. Rajoutez à ça les développements nécessaires pour sécuriser tous les “smartbidules” (TV, imprimantes, etc.) de la planète et vous comprendrez pourquoi la transition IPv4 vers IPv6 est si lente et compliquée. Tout le monde se dit que cette nouvelle technologie est inévitable et serait plus confortable, mais personne n’a réellement envie de la financer. Surtout avec une solution d’attente (le NAT) qui se révèle si pratique par certains aspects !

 


Note : cet article est l’équivalent de 6 à 8 pages de magazine. Il n’est possible de rédiger (ou plutôt écrire / réécrire / corriger / intégrer) des papiers de cette taille que grâce à nos soutiens Paypal, mais surtout à nos patrons. Oui, on sait, ce n’est pas le bon terme. Mais nous, ça nous fait rire. Et quand on reçoit des sous aussi, d’ailleurs. Du coup, merci à vous, qui mettez la main à la poche pour nous inciter à bien bosser ! Et si vous n’avez pas encore franchi le pas, pensez à soutenir Geekzone pour que nous puissions augmenter la cadence !