IPv6

De Justine's wiki
Aller à la navigation Aller à la recherche

Un bon résumé

Résumé des adresses IPv6

Type D'adresse Adresse Préfixe / Adresse Remarques
Unicast Unicast Unique Globale (GUA) 2000::/3 ou 3000::/3 Routable sur internet, unique au monde
Unicast Unicast Unique Locale (ULA) FC00::/7 (réservé futur), mais en pratique FD00::/8 Routable au sein d'une structure, unique dans celle-ci
Unicast Unicast de site local FEC0::/10 Unique au sein d'un site local, DEPRECIÉ
Unicast Unicast de lien local FE80::/10 Unique sur une liaison, autoconfigurée, pas routable
Unicast Loopback ::1 Boucle locale
??? Adresse non spécifiée :: Utilisé comme adresse source pour indiquer une absence d'adresse.
Multicast Multicast Machine Locale FF01 Peu utile, ne s'adresse qu'à "soi-même"
Multicast Multicast de Lien Local FF02 Toutes les machines du lien local
Multicast Multicast de site local FF05 S'adresse à toutes les machines du site local
Multicast Multicast globale FF0E S'adresse à tout Internet
Anycast ??? ??? Essentiellement une adresse Unicast que l'on donne à plusieurs périphériques (elles sont prises dans l'espace d'adressage Unicast)

Liste des addresses Multicast les plus importantes:

  • Adresse Multicast de noeud sollicité (attribuée avec chaque adresse Unicast): ff02::1:UV:WXYZ
    • UVWXYZ sont les 24 derniers bits de l'adresse Unicast associée
  • Toutes les machines du lien local : ff02::1
  • Tous les routeurs du lien local : ff02::2
  • Tous les serveurs DHCP du lien local : ff05::3
  • Tous les serveurs NTP du lien local : ff02::101

Introduction au protocole IPv6

Remplaçant d'IPv4, il est essentiel de le connaître pour l'avenir.

NB : IPv6 est également détaillé dans Cisco

 

RTENOTITLEhttps://www.youtube.com/watch?v=1qvJDQTqSHY

 

Rappel Historique

En 1993, le web a commencé à exploser : sites web d'entreprise et accès internet deviennent essentiels. Le problème était alors que l'espace d'adressage IPv4 à rapidement commencé à se réduire.Des blocs d'adresses IPv4 trop conséquents ont été fournis aux structures. On a alors créé des solutions de contournement:

  • CIDR abolition des classes, découpage en blocs de taille variable plus précis... Avant cela on fournissait soit des bloc de 256 adresses soit des blocs de 16 millions ! Aujourd'hui les tailles sont adaptées aux besoins réels.
  • En 1996, la RFC1918 concernant les adresses privées et le NAT est apparue pour gérer l'urgence.

Mais ce ne sont que des solutions de contournement. Elles sont temporaire et ont des contraintes (plus de communication bout-à-bout, limite de 65000 ports pour le NAT). Une solution globale est nécessaire : IPv6.

L'organisation

L'ICANN (Internet Corporation for Internet Assigned Names and Numbers) est une autorité de régulation sur Internet, qui gère les noms DNS et les adresses IP.

L'IANA (Internet Assigned Numbers Authority) régule les adresses IP, ainsi que d'autres ressources de numérotation (ports TCP/UDP, OID SNMP, etc... Elle découpe les adresses IPv4 en 256 blocs /8 et les affecte aux RIR.

Un RIR (Regional Internet Registry) effectue la gestion régionale des adresses. Elle affecte les blocsq d'adresses aux LIR. La liste des RIR est dispo dans la partie Cisco

Les LIR (Local Internet Registry) Fournissent les adresses à des clients finaux : par exemple chez ceux inscrits chez RIPE NCC on a entre autres : Orange, Free, SFR, OVH, Oxalide, Online, Renater, Renault SAS France, RTE France, etc...

Le 03/02/2011 : L'IANA a confié ses 5 derniers blocs /8 aux 5 RIR : "EndGame"

Le 15/04/2011 : L'APNIC a annoncé avoir commencé l'attribution du dernier /8 en sa possession

Le 14/09/2012 : Le RIPE NCC a annoncé la même chose.

Le 25/09/2015 : L'ARIN n'as plus d'adresses IPv4, trop de demandes en attente par rapport au nombre disponible.

Les règles d'attribution du RIPE NCC aux LIR des blocs IPv4 ont été durcies lors du EndGame, par exemple:

  • Utiliser au moins 25% de l'attribution immédiatement
  • Utiliser au moins 50% au bout d'un an
  • La réservation d'adresses est interdite
  • La taille d'une réservation ne se justifie que par le nombre d'appareils nécsessitant une adresse IPv4
  • Les technologies permettant d'économiser l'utilisation d'adresses sont encouragées.

La consommation d'adresses après EndGame s'est fortement stabilisée.

Les problèmes d'adressage ont été détectés dès 1993; la fin des spécifications IPv6 a eu lieu dès 1998. Et pourtant seuls 8% des utilisateurs de Google passaient par IPv6 en 2015.

En fonction des pays, IPv6 n'est pas forcément fiable ou rapide à l'utilisation, comme en France ou en Allemagne (contrairement à la Belgique ou aux USA, par exemple.

En juillet 2016:

  • France : 11.24% d'adoption
  • Belgique : 44%
  • USA : 29%
  • Allemagne : 23.51%

Différences et points communs avec IPv4

IPv6 est moins bien maîtrisé par les administrateurs s&r. Beaucoup ont l'habitude d'IPv4, mais très peu avec IPv6; il est très peu déployé. On a pourtant beaucoup de points communs :

  • Même principe d'encapsulation
  • On a toujours adresse source et destination
  • On a un routeur par défaut
  • On a un MTU
  • On a un en-tête.

Mais aussi des différences:

  • Un adressage sur 128 bits
  • Auto-configuration avec la SLAAC
  • Suppression du broadcast et de l'ARP remplacés par multicast et Neighbor Discovery
  • Adresse de lien local
  • Header de taille fixe qui rend plus simple le code du routeur, et celui-ci est plus performant
  • ICMPv6, bien plus important qu'ICMPv4
  • Pas de NAT!
  • Meilleur support d'IPSec (même si il n'est pas obligatoire)

Point important, on a pas de séparation claire des couches dans le modèle TCP/IP:

  • TCP a été légèrement adapté pour IPv6, tout comme UDP
  • Ethernet a été légèrement adapté pour IPv6

Bases sur l'adressage IPv6

Les adresses sur 128 bits sont 4 fois plus longues qu'en IPv4; mais ce n'est que la taille de l'adresse : ça ne veut pas dire qu'il n'y a que 4 fois plus d'adresses. En IPv4 on a 4 294 967 296 adresses; en IPv6 on en a 2¹²⁸, soit 3.4*10³⁸, soit BEAUCOUP. On pourrait donner 67 milliard de milliard d'adresses par mm carré de la surface terrestre.

Une adresse IPv6:

  • Sur 128 bits donc,
  • Découpée en 8 mots de 16 bits
  • Qui sont séparés par des :
  • Chaque mot est représenté en hexadécimal

Exemples : 2001:0660:3004:4000:0000:0000:0010:0053, fe80:000:000:000:76d0:2bff:fe98:42d7. 2001 est un mot, 0660 un autre mot... Ici, 2001 n'est pas "deux mille un", mais "deux zéro zéro un", puisqu'on est en hexa.

  • Un mot codé sur 16 bits contient 4 caractères, et un caractère (de 0 à F) est codé sur 4 bits.
  • Attention:
    • 10 n'est pas la suite de 09, puisque 1016 == 1610 (10 en hexa est la suite de F)
    • 0916 == 0910, en revanche.

C'est difficile au début, parce que l'on est habitué à la base 10 (en Europe en tout cas), où l'on peut compter sur ses doigts. Mais avec de la pratique, cela devient une habitude.

Raccourcir les adresses

  • On peut supprimer les 0 en tête de champ (ou en tête de mot, mot == champ)
    • Si un champ est composé que de 0, on en laisse un
    • Attention, on enlève pas les 0 en fin de champ ! Comme en décimal, 416 != 4016
  • On peut remplacer les champs remplis de 0 consécutifs en les remplaçant par "::", une seule fois par adresse, en général au début
    • 2001:0:0:4000:0:010:53 devient 2001::4000:0:010:53...
    • ...mais pas 2001::4000::010:53
    • Sinon on ne sait pas combien de champs à 0 ont été supprimés par :: !

Network ID et Host ID

Une adresse IPv6 de 8 mots de 128 bits est découpée en deux parties :

  • 4 mots pour le Network ID, la partie réseau sur 64 bits.
  • 4 mots pour le Host ID, 64 bits aussi appellés identifiant de l'hôte.

Le plus petit réseau possible en IPv6 est un /64 (pas de /65 ou plus possible !), même pour les particuliers. Un tel réseau permettrait de faire chez soi un réseau plus grand que tout Internet IPv4 !

Network ID

Première partie de l'adressage. L'adresse réseau est forcément notée au format CIDR (X:Y:Z::/NN), et tous les zéros qui suivent sont remplacés par ::. Exemples:

  • 2001:660::/32 : RENATER
  • 2001:660:3004::/48 : IRCAM
  • 2620:0:860::/46 : Wikipédia

On voit ici que ces réseaux ne sont par arrivés au /64, ce qui leur laisse de la place pour faire des sous-réseaux. Ici L'IRCAM, qui appartient à RENATER, lui a demandé un sous-réseau (Le réseau IRCAM est un sous-réseau de celui de RENATER). Ces 64 premiers bits sont tout l'espace que l'on a pour faire des réseaux et des sous-réseaux; les 64 autres seront forcément réservés aux hôtes.

Boucle Locale

La loopback IPv4 était dans /8 (un gros gâchis). La loopback IPv6 est ::1/128. On voit qu'elle ne contient qu'une seule adresse.

À Noter

  • Un client final dispose d'un réseau de taille X;
  • Cette taille X devra être un multiple de 4:
    • Le masque sera identique pour toutes les adresses
    • Personne ne disposera du même numéro de masque
    • En gros, ça permet de tomber à la coupure entre deux champs
    • Par exemple le réseau de Wikipédia, 2620:0:860::/46, qui est non multiple de 4, a pour première adresse 2620:0:860:: et pour dernière adresse 2620:0:0863:ffff:ffff:ffff:ffff:ffff. On est obligé de faire un calcul mental pour connaître la dernière adresse.
    • Le réseau de l'IRCAM, 2001:660:3004::/48 commence avec 2001:660:3004:: et finit avec 2001:660:3004:ffff:ffff:ffff:ffff:ffff. On voit que les champs du NetID ne changent pas.

Types d'adresses IPv6

IPv6 dispose des types d'adresses suivants :

 

  • Unicast de lien local
    • Utilisée pour des machines connectées entre elles sans passer par un routeur. C'est un lien entre hôtes utilisant le même réseau Ethernet (switch, câble réseau, FibreOptique). Elles ne passent pas les routeurs et ne sont pas routables sur Internet.
  • unicast globale
    • Est routable sur Internet (pas de NAT sur IPv6!) : tout le monde peut en avoir une. Comme une adresse publique en IPv4.
  • unicast de site local (déprécié):
    • Liaison entre machines appartenant à une seule et même structure ou sur le même site géographique. La communication entre hôtes ne passe par aucun routeur externe à la structure. Cette adresse est unique sur le site local, n'est utilisable que sur celui-ci et n'est pas routable sur Internet (mais elle passe les routeurs du site). S'applique à par exemple à : une entreprise avec tous ses locaux au même endroit, une filiale d'une entreprise, une association, un particulier... Mais pas à : Deux filiales d'une même entreprise (même sur le même site géographique), une entreprise sur deux sites différents... NetId différent.
  • unicast unique locale
    • Comme du "RFC1918++" : Le but est d'imiter les adresses IPv4 privées, de permettre à tout le monde tester IPv6 en interne, et d'éviter que le rachat d'une structure par une autre n'impose la renumérotation des réseaux grâce à un tirage aléatoire.
  • multicast
    • Associée à un groupe d'hôtes. Tout le groupe est destinataire. Exemple : Neighbor Discovery, IPTV (diffusion d'un contenu identique à beaucoup d'abonnés en même temps).
  • anycast
    • Adresse associée à un groupe d'hôtes. Un seul de ce groupe d'hôte doit répondre. Exemple : Envoi d'une requête DHCP ou DNS : le premier serveur dispo me répond.

Une adresse unicast est associée à un seul hôte, et est unique sur le lien, le site ou globalement. Rappel : le broadcast n'existe plus en IPv6.

Bien entendu, une seule interface réseau aura plusieurs adresses IPv6 différentes :

  • Une adresse unicast de lien local ("link local adress")
  • Une adresse unicast globale
  • Et peut-être une adresse unicast de site local
  • Une loopback

Auto-Configuration de l'adresse de lien local

Un ordinateur même non configuré dispose d'une adresse de lien local : celle-ci est autoconfigurée. On en a une sans rien faire et on peut l'utiliser pour contacter des machines du réseau!

La SLAAC (StateLess Address Auto Configuration) Permet de s'assurer que les adresses sur le même lien peuvent communiquer ensemble, et que les adresses de lien local sont uniques.

Comment faire communiquer deux machines dans un même sous-réseau?

Pré-Requis:

  • Être dans le même sous-réseau
  • Disposer du même masque de sous-réseau
  • Pas besoin de gateway

Un préfixe IPv6 est dédié aux adresses de lien local : fe80::/10 (Le /10 signifie que les caractères qui suivent les 10 premiers seront des 0; c'est la même idée qu'en IPv4).
Comment générer une adresse unique?

  • En se basant sur quelque chose qui est déjà unique !
  • En utilisant une fonction de dérivation qui est déjà unique
  • En contrôlant la non-duplication

Pour assurer l'unicité de la link-local, on utilise l'adresse MAC, qui est unique et disponible sur toutes les cartes réseau.

  • Seul le HostID doit être généré
  • On a déjà le NetID (fe80::/10)
  • On a déjà les 64 premiers bits
  • Il nous en reste 64 à générer

Fonctionnement de la SLAAC pour une link-local address:

  • Mettre le préfixe fe80::/64
  • Prendre l'adresse MAC
    • La couper en deux
    • Ajouter FFFE au milieu
    • Inverser le 7e bit
    • Résultat : "EUI-64 modifié"
  • Concaténer le préfixe et l'EUI-64 modifié

Exemple:

Adresse MAC : f8:16:54:20:6b:8d

  • Je mets fffe au milieu: f816:54ff:fe20:6b8d
  • Je fais le complément du 7e bit : fa16:54ff:fe20:6b8d
  • EUI-64 modifié : fa16:54ff:fe20:6b8d
  • Adresse IPv6 de lien local : FE80::fa16:54ff:fe20:6b8d

NB : Ce n'est pas la seule méthode, on peut aussi utiliser un chiffre au hasard et faire une vérification de non-duplication, comme c'est le cas sur Linux

Intérêt des adresses IPv6 Multicast

Une adresse Multicast correspond à un groupe de machine. Une interface étant configurée avec une adresse multicast recevra tous les paquets envoyés à cette adresse multicast.

Identifier une adresse mutlicast

Elle commence par FF:

  • FF00 -> Réservé
  • FF01 -> Adresse Multicast de la machine locale (Peu utile, sauf à échanger avec un processus interne de la machine locale)
  • FF02 -> Adresse Mutlticast de lien local (toutes les machines du lien local recevront les paquets)
  • FF05 -> Adresse Multicast de site local (Pareil pour toutes les machines du site local)
  • FF0E -> Adresse Multicast globale (Pareil mais pour tout Internet)

Une liste est disponible : https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml

Adresses Multicast importantes:

  • ff02::1 : toutes les machines du lien local
  • ff02::2 : tous les routeurs du lien local
  • ff02::101 : tous les serveurs NTP du lien local
  • ff05::3 : tous les serveurs dhcp du site local

Pour toute adresse IPv6 configurée:

  • FF02::1:FFUV:WXYZ
    • C'est une adresse IPv6 multicast dérivée de l'adresse IPv6
    • UVWXYZ correspond aux 24 derniers bits de l'adresse IPv6
    • Cette adresse multicast est utilisée pour Neighbor Discovery (ND) et Duplicate Address Detection (DAD)

Si j'ai 3 adresses IPv6 configurées, j'aurais 3 adresses multicast automatiquement générées. L'intérêt et de ne plus demander de configuration manuelle : je pourrais travailler avec lde l'autoconfiguration et des adresses multicast; multicast tient d'ailleurs lieu de broadcast. Tout ça fonctionne grâce à SLAAC, ND et DAD.

Je peux utiliser ip maddr show dev enp0s31f6 pour voir mes adresses MAC et mes adresses de multicast IPv6 correspondantes. J'ai plusieurs adresses MAC configurées par IPv6 (sur Linux en tout cas) : IPv6 "fabrique" des adresses MAC correspondant aux adresses IPv6 (tous types d'adresses : unicast, lien local...). Par exemple l'adresse mac "33:33:00:00:00:01" correspond à l'adresse de multicast "ff02::1" : un message envoyé à ff02::1 aura pour destinataire Ethernet 33:33:00:00:00:01.

Un exemple de la commande ip maddr show dev enp0s31f6 sur mon PC:

2:    enp0s31f6
    link  01:00:5e:00:00:01
    link  33:33:00:00:00:01
    link  33:33:ff:7b:5f:64
    link  01:00:5e:00:00:fb
    link  33:33:ff:bc:1b:d2
    link  33:33:ff:e4:8f:c8
    link  33:33:00:00:00:fb
    inet  224.0.0.251
    inet  224.0.0.1
    inet6 ff02::fb
    inet6 ff02::1:ffe4:8fc8
    inet6 ff02::1:ffbc:1bd2
    inet6 ff02::1:ff7b:5f64
    inet6 ff02::1 users 2
    inet6 ff01::1

On voit qu'IPv6 a aussi un impact sur Ethernet : TCP/UDP ne sont pas les seuls protocoles à avoir été pris en compte.

 

Ethernet, IPv6 et multicast

IPv6 ne permet pas de broadcast, ni d'ARP. Rappellons que pour chaque adresse IPv6, on a une adresse IPv6 multicast. Sur une interface réseau paramétrée en IPv6, on a des adresses multicast IPv6 et des adresses MAC multicast associées; la couche Ethernet est donc impactée par IPv6 : l'interface écoute sur d'autres adresses MAC que celle codée dans le hardware de la carte réseau. Il y'a même un OUI dédié à cela :  33:33:X "Adresse MAC dédiée au multicast". Ce n'est pas le cas si l'on utilise pas IPv6 (on aura que celle de la carte réseau si l'on est en IPv4).

Cela signifie que si l'on ajoute une adresse IPv6 de lien local, on aura création d'autres adresses MAC, qui utiliseront l'OUI multicast:

  • 33:33:00:00:00:01 : Adresse MAC multicast utilisée pour les hôtes de ce lien
  • 33:33:00:00:00:FB : Adresse mDNS (Multicast DNS), utilisé pour remplacer le service DNS sur les petits réseaux. Le message correspondant est "Je recherche la machine sur le lien local dont le nom est X"
  • 33:33:ff:x:y:z, où x, y et z sont des valeurs héritées de l'adresse IPv6. C'est l'adresse multicast du noeud, x y et z sont les 24 derniers bits de l'adresse IPv6. À toute adresse IPv6 correspond une adresse multicast dérivée de celle-ci, 33:33:ff:x:y:z selon ce principe.

 

 

Adresse Unicast Unique Locale  ("Unique Local Address" ou "ULA")

Pour rappel, on a une adresse unicast de lien local, valide uniquement sur un lien et qui ne passe pas les routeurs.

Mais on a aussi l'adresse Unicast Unique Locale, qui est faite pour être sur un site géographique, une structure : les paquets passent les routeurs locaux mais ne vont pas sur Internet. Elles ne doivent pas être confondues avec les adresses unicast de site local, qui sont dépréciées, mais qui font sensiblement la même chose!

Les adresses globales elles, sont reconnues par tous et peuvent sortir sur Internet.

Les préfixes sont:

  • FE80::/10 (Adresse Unicast de lien local)
  • FEC0::/10 (Adresse Unicast de site local, déprécié)
  • FC00::/7 : Adresses Unicast uniques locales
  • 2000::/3 et 3000::/3 : Adresses Globales

L'objectif des ULA est de remplacer les site local address qui sont imprécises. Elles permettent aussi d'avoir des "adresses privées" non routables sur le net, ainsi que de tester IPv6. Elles permettent enfin d'isoler tous les sites grâce à un algorithme.

Il faut quand même rappeller que la philosophie d'IPv6 est que tous les postes aient une GUA, mais on peut faire ce que l'on veut, hein :)

Isolation de sites

En IPv4, on a des adresses privées, qui évitent les conflits d'adressage entre deux entreprises différentes, par exemple. Cependant si deux entreprises ayant le même adressage privé se retrouvent à fusionner, on aura alors un souci : il faudra refaire tout l'adressage ! IPv6 essaie d'éviter cela : on a tellement d'adresses que l'on peut dédier des pools entiers à des entreprises sans courir le moindre risque.

Détail de l'adresse unique locale

L'adresse est composé en 4 parties en gros:

  • 8 bits: Le préfixe FC00/7, coupé en 2,  qui correspond à 11111102 suivi d'un bit à 0 pour FC00 et à 1 pour FD00:0
    • FC00::/8 est réservé pour futur usage
    • FD00::/8, est le bloc des adresses uniques locales (celui qu'on utilise, en gros!)
  • 40 bits : Un ID global, identifiant unique de la structure, qui est identique partout dans cette structure (même dans les sous-réseaux) et est tiré au hasard selon un algorithme précis
  • 16 bits : La partie Subnet : identifiant du sous-réseau dans la site, à la discrétion des admins réseau qui peuvent faire les sous-réseaux qu'ils veulent
  • 64 bits : La partie Host ID.

En cas de fusion/acquisition de deux entreprises, les global ID sont différents. Il suffit alors simplement de connecter les deux réseaux ensemble (VPN par exemple!), et/ou de configurer le routage. Même avec des VPN, cela reste simple, on peut même aisément connecter et déconnecter des réseaux temporairement, par exemple.

 

Génération d'un ID global

Pour disposer d'un ID Global unique, un algorithme est proposé:

  • Concaténer:
    • l'heure actuelle au format NTP 64 bits ("Current time of day in 64-bits NTP format")
    • EUID-64 d'une carte réseau (n'importe laquelle)
  • Faire un SHA-1 digest
  • Prendre les 40 derniers bits

La probabilité de conflit est extrêment faible.

En pratique:

  • Sur Linux, le "current time of day blablabla" est obtenu par la commande date +%s (c'est en fait tout simplement le temps au format UNIX).
  • On obtient un chiffre à transformer en binaire,
  • auquel on associe une EUID-64 (comme pour générer une adresse avec la SLAAC, on prend une adresse MAC on la modifie etc... et on obtient un EUID-64).
  • On concatène le chiffre en binaire et l'EUID-64 qui est lui en hexa
  • On le fait passer par un SHA-1 : par exemple echo 10110111110000010000011111111109f5c:8eff:fe54:04c0 | sha1sum - (En utilisant la date au moment où j'écrit et l'EUID-64 de ma carte réseau). La commande me renvoie :
    • 6d7321c24fdb237805fb17206c81f6ce12bc49ff
  • Je prend les 40 derniers bits (!Pas les 40 derniers chiffres mais bien les 40 derniers nombres, SHA1renvoyant des hextets!) : ce12bc49ff.
  • Je rajoute le préfixe et je mets ça au format IPv6 : j'ai alors mon NetID, sans sous-réseaux pour l'instant (je peux en faire si je veux): fdce:12bc:49ff/48. J'ai mon identifiant global unique.
  • Je rajoute ma partie subnet à 16 bits :
    • fdce:12bc:49ff:0:1::/64 : Un premier sous réseau
    • fdce:12bc:49ff:0:2::/64 : Un deuxième sous réseau
    • fdce:12bc:49ff:1::/58 : Un troisième sous-réseau
      • fdce:12bc:49ff:1:0::/64 : Un sous-sous-réseau
      • fdce:12bc:49ff:1:1::/64 : Un deuxième
    • Etc...
    • Je peux faire 65536 sous-réseaux, ce qui devrait suffire...

Adresse Unicast Globale

Les types d'adresses unicast sont:

  • Adresse de lien local, sur un lien et ne passe pas les routeurs (FE80::/10)
  • Adresses unicast uniques locales, dédiées à un site, une structure : les routeurs doivent être configurés pour ne pas les laisser sortir sur Internet (FD00::/8)
  • Adresses unicast de site local, dépréciées (FEC0::/10)
  • Adresses unicast globales : Reconnues par tous. (2000::/3 et 3000::/3)

On peut obtenir un bloc global auprès d'un FAI. Il est conseillé de demander au moins un /56 pour pouvoir faire du subnetting (un /48 est conseillé). Il faut demander un multiple de 4.

Cela est peu déployé chez les particuliers. Les FAI considèrent que peu de gens en ont besoin.

Problème : C'est la fin des adresses privées! (Elle peuvent servir à faire des tests en IPv6, mais chaque poste est sensé avoir une adresse unicast unique globale). L'idée est donc de découper le bloc en sous-réseaux et de filtrer selon les besoins : on ne peut plus se contenter de faire des réseaux avec dres adresses privées et de laisser les routeurs les filtrer.

 

SLAAC, ND et DAD

IPv6 permet d'auto-configurer les interfaces, mais il faut bien comprendre SLAAC.

SLAAC : StateLess Address Auto Configuration (en francais : Auto configuration Sans état)

La SLAAC est différente de DHCP, qui maintient une liste pour éviter les doublons.

SLAAC comprend deux choses : l'auto-configuration et DAD (Duplicate Address Detection).

Les objectifs de SLAAC/ND/DAD

Dans le cas d'un ordinateur de bureau:

  • Je ne suis pas branché sur le réseau
  • Je me branche:
    • Je calcule une link local
    • Je vérifie son unicité
    • J'obtiens un préfixe IPv6 fourni par un routeur
    • Je calcule une Unique Local Address ou une Globally Unique Address
    • Je vérifie qu'elle est unique
  • J'ai un réseau IPv6 fonctionnel.

Ou plus en détail :

  1. Auto-configuration sur le lien local: On calcule son adresse de lien local avec EUID-64 modifié
  2. DAD sur le lien local
  3. Envoyer un RS (Router Sollicitation) : IPv6 src : Adresse de lien local; IPv6 DST : FF02::2 (Multicast des routeurs)
  4. Attendre le RA (Router Advertisement) qui contient préfixe réseau, MTU, @IP du DNS...
  5. Obtention du RA.
  6. Auto-configuration avec le préfixe fourni et mon EUID-64 modifié
  7. DAD sur le préfixe fourni
  8. Et FIN

L'algorithme à retenir, en gros :

  1. Autoconf pour link-local address + DAD
  2. RS + RA
  3. Auto-conf + DAD sur ULA ou GUA

Au final, on deux autoconfigurations et deux DAD.

SLAAC, ND et DAD en détail

SLAAC est disponible pour la GUA ou l'ULA. En effet, les routeurs se déclarent régulièrement par un RA, envoyé régulièrement à FF02::1 (multicast du lien local). Celui-ci contient des informations permettant aux hôtes de s'auto-configurer. Ce procédé utilise le processus ICMPv6 : les RA sont envoyés toutes les 200 secondes, ou en réponse à un RS.

Le contenu du RA est:

  • Préfixe réseau
  • Adresse IP de la passerelle par défaut
  • le MTU
  • L'adresse IPv6 des serveurs DNS
  • Il existe des extensions pour y ajouter des trucs, notamment chez Windows

 

Exemple d'auto-configuration IPv6 via SLAAC

  1. L'hôte recoit un RA, contenant un préfixe: FD00:e9:e18b:4d0f::/64
  2. L'hôte s'auto-configure en calculant son EUID-64 modifié: fd00:e9:e18b:4d0f:1a03:73ff:fe3a:567f/64

Une fois l'adresse configurée, l'adresse est en statut "temporaire" (pas encore utilisable) : elle le devient après un DAD. Le but de DAD est de:

  • Détecter si l'adresse autoconfigurée n'est pas déjà présente afin d'éviter un conflit.

DAD est basé sur :

  • Les adresses multicast IPv6 (et donc, les adresses multicast Ethernet aussi)
  • Neighbor Discovery, ND qui utilise lui aussi ICMPv6

Le détail de DAD:

  1. Je m'autoconfigure avec la SLAAC: Automatiquement, une adresse multicast est dédiée à cette adresse (FF02::1<24 derniers bits de l'@ IPv6>
  2. J'envoie un paquet ICMPv6 NS:
    • @IPv6 source : "::" (Adresse non configurée) : j'informe que je n'ai pas encore d'adresse !
    • @IPv6 destination : ma propre @IPv6 multicast
    • ICMPv6 Target Address : mon @IPv6 unicast
  3. J'attends un certain temps. Si j'ai une réponse (un message Neighbor Advertisement), ça ne fonctionne pas : je dois alors configurer une adresse manuellement. Sinon, au bout d'un délai, l'interface est configurée définitivement.

Remarque personnelle, de mémoire : Linux n'utilise pas EUID-64 d'après mes observations et d'après Cisco : il fait la SLAAC avec un hash aléatoire (et crée une adresse MAC correspondante). Serait-il possible qu'en cas de DAD qui reçoit une réponse, il retente avec un autre hash?

 

Notes

  • Le scope d'une adresse, c'est son domaine d'unicité et de validité