Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Autoconfiguration en mode autonome (stateless)

Objectifs du chapitre

L’objectif de ce chapitre est de présenter la méthode de base d’autoconfiguration qui existe généralement dès que l’on active IPv6 sur un équipement ou sur un poste.

Cette autoconfiguration sera décentralisée sur chaque poste. Elle est souvent appelée également stateless autoconfiguration dans la littérature de référence.

Des mécanismes complémentaires interviennent dans le cadre de ces configurations, par exemple pour détecter les voisins, les adresses dupliquées, ou encore diffuser la liste des routeurs et des préfixes disponibles. Nous les aborderons également dans le cadre de ce chapitre puisque cela participe à la mise en place d’une configuration sur un poste.

Généralités

Cette possibilité de configuration automatique et autonome d’un poste dès son branchement sur le réseau est une des grandes fonctionnalités apportées par IPv6. Elle pourrait favoriser son adoption en dehors de toute nécessité liée à la pénurie d’adresse. En effet, aucun serveur n’est nécessaire (notamment pas de serveur DHCP) pour que cette configuration puisse être menée à bien. Par contre, les routeurs (ou firewalls faisant fonction de routeurs) peuvent participer à cette configuration. Ce mécanisme s’applique aux postes au sens large (PC, serveurs, imprimantes, PDA...) à l’exclusion des routeurs qui doivent être configurés manuellement (à l’exception éventuellement de leurs adresses de type link-local qui peuvent faire l’objet d’une autoconfiguration) comme nous le verrons plus loin.

Fonctionnement

1. Calcul de l’adresse

La première opération que doit faire un poste pour se configurer est de déterminer son adresse IPv6. Comme nous l’avons déjà vu, celle-ci se compose généralement d’un préfixe sur 64 bits et de l’identifiant d’interface sur les 64 bits restants.

Dans le cas d’une adresse de type link-local, le préfixe est toujours fe80::/. Il ne reste plus alors qu’à dériver l’identifiant d’interface à partir de l’adresse MAC de l’interface concernée. De cette façon, nous sommes quasiment certains que l’adresse résultante sera unique puisque l’adresse MAC est unique car fixée par le constructeur de l’interface (sauf modification faite manuellement par l’utilisateur).

L’adresse MAC ayant une longueur de seulement 48 bits, il est nécessaire d’ajouter 2 octets supplémentaires. Cela se fait en insérant la chaîne fffe (réservée par l’IEEE à cet usage) au milieu de ces 48 bits.

Ainsi, l’adresse MAC d’un de nos postes étant 10:93:e9:0f:00:18, nous obtenons l’adresse provisoire 1093:e9ff:fe0f:0018 (en utilisant la présentation par 2 octets classique en IPv6).

Nous parlons d’adresse provisoire car un dernier changement va être nécessaire. En effet, pour distinguer les adresses MAC uniques (celles qui n’ont donc pas été modifiées par l’utilisateur, ce qui est le cas le plus courant) de celles qui pourraient ne pas être uniques, nous allons avoir recours au 7e bit de l’octet le plus à gauche de cette adresse provisoire. Nous lui attribuerons la valeur 1 si l’adresse est unique et 0 dans le cas contraire.

Ainsi, l’octet 10 (valeur binaire 0001 0000) de notre adresse devient 12 (0001 0010).

L’identifiant d’interface résultant de ce calcul est donc 1293:e9ff:fe0f:18, ce qui conduit à l’adresse IPv6 fe80::1293:e9ff:fe0f:18 comme le montre le résultat ci-dessous :


MacBookAir-JPA:~ root# ifconfig 
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 
   inet 127.0.0.1 netmask 0xff000000  
   inet6 ::1 prefixlen 128  
   inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1  
gif0: flags=8010<POINTOPOINT,MULTICAST>...

Avantages et inconvénients de l’autoconfiguration autonome

1. Avantages

Il est évident qu’une autoconfiguration gérée de manière complètement autonome permet une grande simplicité dans l’administration d’un réseau local au quotidien puisqu’il suffit de brancher les postes pour qu’ils puissent accéder aux ressources de ce réseau. Cette autoconfiguration facilite également grandement une renumérotation éventuelle du réseau, par exemple en cas de changement de fournisseur d’accès Internet.

2. Inconvénients et risques

Nous pouvons néanmoins y trouver un premier inconvénient, en raison de la difficulté à maîtriser les paramètres adoptés (adresses, routeurs, DNS…).

Nous pouvons aussi évoquer les attaques potentielles facilitées par les mécanismes d’autoconfiguration et plus particulièrement ceux liés aux découvertes/annonces des voisins et des routeurs. Parmi ces menaces, nous pouvons mentionner par exemple :

  • Des dénis de service basés sur une réponse systématique aux sollicitations des voisins avant la mise en œuvre d’une adresse. Cela empêchera alors toute affectation d’adresses aux postes légitimes.

  • Des usurpations d’adresses permettant par exemple de définir...

Diffusions effectuées par les routeurs

1. Fonctionnement

Chaque routeur situé sur un lien envoie régulièrement (par défaut toutes les 5 minutes) les informations permettant aux postes de compléter leur configuration. Parmi ces informations figurent leur adresse et le ou les préfixes vers lesquels ils peuvent router du trafic.

Ces annonces sont diffusées vers l’adresse de multicast ff02::1 (tous les nœuds du lien), comme dans l’exemple ci-dessous :


Frame 3 (150 bytes on wire, 150 bytes captured) 
    Arrival Time: Feb 14, 2012 20:07:36.596996000 
    .../... 
    [Protocols in frame: eth:ipv6:icmpv6] 
 
Nous voyons d'abord les adresses source et destination au sens 
Ethernet, la source étant l'adresse MAC du routeur, la destination 
un multicast. 
 
Ethernet II, Src: 00:26:99:0e:b6:3d (00:26:99:0e:b6:3d), Dst: 
IPv6mcast_00:00:00:01 (33:33:00:00:00:01) 
    Destination: IPv6mcast_00:00:00:01 (33:33:00:00:00:01) 
        Address: IPv6mcast_00:00:00:01 (33:33:00:00:00:01) 
        .... ...1 .... .... .... .... = IG bit: Group address 
(multicast/broadcast) 
        .... ..1. .... .... .... .... = LG bit: Locally 
administered address (this is NOT the factory default) 
    Source: 00:26:99:0e:b6:3d (00:26:99:0e:b6:3d) 
        Address: 00:26:99:0e:b6:3d (00:26:99:0e:b6:3d) 
        .... ...0 .... .... .... .... = IG bit: Individual address 
(unicast) 
        .... ..0. .... .... .... .... = LG bit: Globally unique  
address (factory default)  
    Type: IPv6 (0x86dd) 
 
Puis vient la partie IPv6 avec l'adresse Link-Local du routeur 
comme source et l'adresse de multicast FF02::1 comme destination, 
donc tous les nœuds présents sur le même lien. 
 
 
Internet Protocol Version 6 
    0110 .... = Version: 6 
        [0110 .... = This field makes the filter "ip.version == 6" 
possible: 6] 
    .... 1110 0000 .... .... .... .... .... = Traffic class: 
0x000000e0 
    .... .... .... 0000 0000 0000 0000 0000 = Flowlabel: 
0x00000000 
    Payload...

Découverte et gestion des voisins (Neighbor Discovery)

Nous avons déjà partiellement abordé ce sujet au début du chapitre puisque l’autoconfiguration autonome faisait appel aux mécanismes de découverte et/ou d’annonces des voisins. Nous allons maintenant compléter ces notions dans le cadre plus général des communications intervenant sur un lien local.

1. Mécanisme

Rappelons simplement ici que la découverte des voisins se fait soit en testant activement leur présence en envoyant un message de type Neighbor Solicitation et en observant les réponses, soit par écoute des annonces Neighbor Advertisement diffusées spontanément par les voisins.

2. Caches

Il existe en fait deux caches utilisés pour situer des postes en IPv6 et communiquer avec eux : Neighbor cache et Destination cache.

a. Neighbor cache

Ce cache contient les adresses des voisins vers lesquelles du trafic a été récemment émis. Il est donc alimenté par toutes les connexions IPv6 émanant du poste et contient les informations suivantes pour chaque entrée présente :

  • L’adresse unicast locale des interfaces des voisins connectés sur le même lien.

  • L’adresse MAC (généralement Ethernet) de ces interfaces.

  • Un indicateur (drapeau) indiquant le type de nœud (routeur).

  • Le statut de l’adresse.

Les statuts possibles sont :

  • INCOMPLETE : une résolution d’adresse est en cours mais n’a pas encore abouti.

  • REACHABLE : le voisin a pu être contacté très récemment (moins d’une dizaine de secondes).

  • STALE : on ne sait pas si le voisin est atteignable et, tant qu’aucun trafic n’est à envoyer vers lui, aucun test d’accessibilité ne doit être lancé.

  • DELAY : on ne sait pas si le voisin est atteignable et du trafic a été acheminé vers lui. Pour l’instant, les tests par sollicitation sont différés pour permettre aux couches de niveau supérieur de vérifier éventuellement l’accessibilité de ce voisin.

  • PROBE : on ne sait pas si le voisin est atteignable et des tests d’accessibilité via des messages Neighbor Solicitation vont être effectués.

b. Destination cache

Ce cache est un peu différent...

Sécurisation des mécanismes

Pour éviter les problèmes de sécurité évoqués plus haut, il est possible de sécuriser une partie des mécanismes liés au Neighbor Discovery Protocol. C’est le RFC 3971 qui décrit le SEND (SEcure Neighbor Discovery) et qui est complété par les RFC 6494 6495 et 6980.

Plusieurs pistes sont exploitées pour cette sécurisation :

  • Utilisation d’options dans le NDP pour valider les messages de sollicitation et d’annonces des voisins.

  • Utilisation d’autorisations pour valider le rôle des routeurs et donc leurs annonces et les préfixes diffusés.

Plus d’autres qui sont surtout des logiciels issus de travaux de recherche ou de démonstration.

Pour l’instant, les principaux OS (Linux, Windows, Mac) n’incluent pas nativement le support de SEND. Il existe seulement des produits tiers tels que TrustRouter ou WinSEND.

Par contre, cette fonction est disponible sur certains routeurs (attention à la version et au type de routeur) chez Cisco, Juniper et quelques autres.

Par exemple, chez Cisco les principales instructions sont :

  • ipv6 cga modifier rsakeypair

  • ipv6 nd secured

  • ipv6 address …… cga

  • ipv6 nd secured full-secure

Pour aller plus loin

1. Les principaux RFC

Voici une liste des principaux RFC concernant les mécanismes et notions abordés dans ce chapitre. Ils contiennent de nombreux détails permettant d’approfondir ceux-ci :

  • RFC 4862 - Stateless autoconfiguration

  • RFC 4861 - Neighbor Discovery

  • RFC 3756 - Menaces liées à l’autoconfiguration

2. Des liens