MOOC:Compagnon Act32-s7

From Livre IPv6

Revision as of 23:10, 25 May 2015 by Bstevant (Talk | contribs) (Fourniture des paramètres communs au réseau)

La configuration automatique des paramètres réseau

Principe de l'auto-configuration

La précédente activité à présenté le mécanisme de découverte des voisins permettant à une station connectée à un réseau de récupérer automatiquement les adresses des autres stations du même réseau. C'est la même philosophie qui est mise en oeuvre pour permettre la configuration automatique des paramètres d'une interface réseau.

L'objectif de ce mécanisme est de réduire au maximum l'intervention humaine dans ce processus afin de permettre :

  • à l'utilisateur d'avoir une connexion au réseau fonctionnelle dès le branchement de l'interface réseau
  • à l'administrateur de centraliser la configuration sur un seul équipement qui se chargera de les propager aux stations.

Les informations nécessaires à la configuration d'une interface sont au minimum :

  • des informations permettant de déterminer l'adresse IP ou la méthode permettant de l'obtenir
  • la largeur du préfixe IP du réseau afin de déterminer les adresses IP appartenant au même réseau
  • l'adresse de la passerelle à utiliser pour joindre les adresses qui ne sont pas sur ce réseau
  • le serveur de noms à utiliser sur ce réseau

L'administrateur renseigne les informations communes pour un réseau sur un équipement. Les stations se configurant récupèrent ces informations pour déterminer leur configuration spécifique qui sera appliquée sur l'interface. La connexion au réseau sera alors effective pour l'utilisateur.

Mécanismes mis en oeuvre

L'auto-configuration se déroule en plusieurs étapes mettant en oeuvre différents mécanismes :

  • La toute première étape consiste à créer l'adresse lien-local. Une fois l'unicité de cette adresse vérifiée, la machine est en mesure de communiquer avec les autres machines du lien.
  • La machine doit ensuite chercher à acquérir un message d'annonce du routeur pour déterminer la méthode d'obtention de l'adresse unicast globale. S'il y a un routeur sur le lien, la machine doit appliquer la méthode indiquée par le message d'annonce de routeurs, à savoir :
    • l'auto-configuration sans état,
    • l'auto-configuration avec état.
  • En l'absence de routeur sur le lien, la machine doit essayer d'acquérir l'adresse unicast globale par la méthode d'autoconfiguration avec état. Si la tentative échoue, c'est terminé. Les communications se feront uniquement sur le lien avec l'adresse lien-local. La machine n'a pas une adresse avec une portée qui l'autorise à communiquer avec des machines autres que celles du lien.

La création de l'adresse lien-local

À l'initialisation de son interface, la station construit un identifiant pour l'interface qui doit être unique sur le lien. Cet identifiant utilise l'adresse EUI-64. Le principe de base de la création d'adresse unicast IPv6, tel que vu dans la première séquence, est de compléter un préfixe réseau avec l'identifiant. L'adresse lien-local est donc créée en prenant le préfixe lien-local (FE80::/64) standardisé pour cet usage.

L'adresse ainsi constituée est encore interdite d'usage. Elle possède un état provisoire car la machine doit vérifier l'unicité de cette adresse sur le lien au moyen de la procédure de détection d'adresse dupliquée, présentée dans l'activité précédente. Si la station détermine l'adresse lien-local n'est pas unique, l'auto-configuration s'arrête et une intervention manuelle est nécessaire.

Une fois que l'assurance sur l'unicité de l'adresse lien-local est obtenue, l'adresse provisoire devient une adresse valide pour l'interface. La première phase de l'auto-configuration est achevée.

La fourniture des paramètres communs au réseau

La seconde étape de l'auto-configuration consiste pour la station qui se configure à récupérer les informations communes au réseau qui sont fixées par l'administrateur. Ces informations sont localisées sur le (ou les) routeur(s) du réseau, équipement sous la responsabilité de l'administrateur et qui sera en charge de les propager aux stations.

La transmission de ces informations est assurée par un échange de messages ICMPv6 :

  • un message de sollicitation d'un routeur (Router Sollicitation, ICMP type 133) envoyé par la station qui se configure
  • un message d'annonce de routeur (Router Advertisment, ICMP type 134) envoyé par le routeur en réponse à la sollicitation d'une station, mais aussi périodiquement sur le réseau.
Figure 5-5 Format des paquets de sollicitation du routeur

Le message de sollicitation d'un routeur (cf. figure Format des paquets de sollicitation du routeur) est émis par la station qui se configure afin d'obtenir les informations du routeur. Ce message est envoyé à destination de l'adresse IPv6 de multicast réservée aux routeurs sur le même lien ff02::2.

Figure 5-6 Format des paquets d'annonce du routeur

Le message d'annonce de routeur (cf. figure Format des paquets d'annonce du routeur) est émis périodiquement par les routeurs ou en réponse à un message de sollicitation d'un routeur par un équipement. Le champ adresse source contient l'adresse locale au lien du routeur, le champ destination contient soit l'adresse de l'équipement qui a émis la sollicitation, soit l'adresse de toutes les stations (ff02::01).

Ce dernier message est primordial dans le fonctionnement d'un réseau IPv6, car en plus de délivrer les informations nécessaires à l'auto-configuration, il notifie régulièrement auprès des stations de la présence du (ou des) routeur(s) afin de confirmer le bon fonctionnement de leur connexion.

Ce message contient un ensemble l'information propre au routeur et à la politique de configuration du réseau, puis ensuite un ensemble d'options en fonction de la politique de configuration. Parmi les information propre au routeur, le champ durée de vie du routeur donne, en secondes, la période pendant laquelle l'équipement annonçant effectuera les fonctions de routeur par défaut.

Le champ durée d'accessibilité indique la durée en millisecondes pendant laquelle une information de ce message contenue dans le cache de la station peut être considérée comme valide (par exemple, la table de correspondance entre adresse IPv6 et adresse physique). Au bout de cette période, un message de détection d'inaccessibilité (Neighbor Sollicitation) est émis pour vérifier la pertinence de l'information.

Le champ temporisation de retransmission donne en millisecondes la période entre deux émissions non sollicitées de ce message. Il sert aux autres équipements pour détecter une inaccessibilité du routeur.

La politique de configuration, qui doit indiquer à la station qui se configure les mécanismes à utilsier, est définie par 2 bits du message d'annonce de routeur. Le bit M (Managed address configuration) mis à 1 indique que l'équipement ne doit pas construire lui-même l'adresse à partir de son identifiant d'interface et des préfixes éventuellement reçus en option du même message. Il doit explicitement demander son adresse auprès d'un serveur d'adresses et donc utiliser la configuration avec état de l'adresse IP. Si ce bit est à 0, alors le mécanisme de configuration sans état doit être utilisé. Le bit O (Other stateful configuration) mis à 1 indique que la station doit interroger le serveur de configuration pour obtenir des paramètres autre que l'adresse.

L'auto-configuration sans état de l'adresse IP

Le principe de base de l'auto-configuration sans état de l'adresse IP est qu'une machine génère son adresse IPv6 à partir d'informations locales et d'informations fournies par le routeur. Le routeur fournit à la machine les informations sur le préfixe utilisé sur ce réseau au moyen d'une option incluse dans le message d'annonce de routeur.

Figure 5-2 Format de l'option information sur le préfixe

Cette option contient les informations sur le préfixe pour permettre une configuration automatique des équipements. Le champ type vaut 3 et le champ longueur vaut 4. La figure Format de l'option information sur le préfixe donne le format de l'option :

  • Le champ lg.préfixe indique combien de bits sont significatifs pour le préfixe annoncé dans un champ suivant.
  • Le bit L indique, quand il est à 1, que le préfixe permet d'indiquer que tous les autres équipements partageant le même préfixe sont sur le même lien. L'émetteur peut donc directement les joindre. Dans le cas contraire, l'équipement émet le paquet vers le routeur. Si ce dernier sait que l'équipement émetteur peut joindre directement le destinataire, il émettra un message ICMPv6 d'indication de redirection.
  • Le bit A indique, quand il est à 1, que le préfixe annoncé peut être utilisé pour construire l'adresse de l'équipement.
  • Le bit R, indique, quand il est à 1, que le champ préfixe contient l'adresse globale d'un routeur «agent mère». Les bits de poids fort peuvent toujours être utilisés pour construire un préfixe.
  • Le champ durée de validité indique en secondes la durée pendant laquelle le préfixe est valide.
  • Le champ durée préférable indique la durée en secondes pendant laquelle une adresse construite avec le protocole de configuration sans état demeure «préférable» (cf. Durée de vie des adresses).

Pour ces deux champs, une valeur de 0xffffffff représente une durée infinie. Ces champs peuvent servir dans la phase de passage d'un fournisseur d'accès à un autre ; c'est-à-dire d'un préfixe à un autre.

  • Le champ réservé permet d'aligner le préfixe sur une frontière de mot de 64 bits.
  • Le champ préfixe contient la valeur de préfixe annoncé sur le lien. Pour maintenir un alignement sur 64 bits pour le reste des données du paquet, ce champ a une longueur fixe de 128 bits.
TODO: Ajouter la prise en compte des adresses temporaires

Comme pour la création de l'adresse lien-local, l'adresse unicast globale est obtenue en concaténant le préfixe avec l'identifiant de l'interface. Le préfixe provient du message d'annonce de routeurs et plus précisément de l'option «information sur le préfixe». Bien qu'il faille vérifier l'unicité de toutes les adresses unicast, dans le cas d'une adresse unicast obtenue par autoconfiguration sans état cela n'est pas obligatoire. En effet, l'unicité de l'identifiant de l'interface a déjà été contrôlé dans l'étape de création de l'adresse lien-local. L'identifiant étant le même, il n'y a plus aucune ambiguïté sur son unicité. L'adresse unicast globale constituée est aussi unique que celle lien-local.

La renumérotation des machines d'un lien s'effectue au moyen des routeurs qui passent les adresses utilisées dans un état déprécié et annoncent en même temps le nouveau préfixe. Les machines pourront recréer une adresse préférée.

Cette méthode ne s'applique que pour les machines et ne peut être retenue pour la configuration des routeurs.

L'auto-configuration avec état de l'adresse IP

Cette méthode de configuration d'adresse repose sur la présence d'un serveur d'adresse contenant une base d'adresses IP disponibles sur le réseau, serveur que la station va solliciter en utilisant le protocole DHCPv6, présenté dans l'activité suivante.

Une station recevant un message d'annonce de routeur est donc supposé initier un dialogue avec un serveur DHCPv6 si ce message présent le bit M avec pour valeur 1. Mais ce comportement tel que prévu dans les standards n'est pas entièrement mis en oeuvre dans les systèmes d'exploitation actuel, et il est très souvent nécessaire d'expliciter l'usage de DHCPv6 à la station, alors que cette information est fournie par le réseau.

La configuration de la table de routage

En IPv6 seuls les routeurs utilisent des protocoles de routage pour définir leurs tables de routage. Le routage des autres machines repose sur la notion de route pour le lien et de route par défaut.

La route vers les adresses du même lien est construite à partir des informations présentes dans l'option concernant ce préfixe réseau. En partant du préfixe ainsi que de la longueur du préfixe, la station peut déterminer les bits communs aux adresses IP connectées au même lien. L'acheminement des paquets à destination de ces adresses ne nécessitera la passerelle par défaut.

La route par défaut est configurée grâce à l'adresse lien-local contenu dans le champs source du message d'annonce de routeur. L'adresse physique de cet équipement est de plus contenue dans une des options du message. La station émettant un paquet vers une machine à l'extérieur du réseau utilisera donc cette adresse comme premier saut pour l'acheminement du paquet.

TODO: Cas routeur multiple, VRRP, etc...

Découverte de la liste de serveurs DNS récursifs

TODO: Remettre ce paragraphe à jour

L'autoconfiguration IPv6 sans état, telle que spécifiée dans le RFC 4862, n'a pas prévu de mécanisme de découverte automatique de la liste des serveurs DNS récursifs (cache). En revanche, il était prévu que ces informations complémentaires soient fournies par l'autoconfiguration avec état. Les spécifications du protocole d'autoconfiguration avec état, DHCPv6, ont mis longtemps (six ans environ) à passer en RFC (RFC 3315) et le besoin de découverte des serveurs DNS récursifs s'est accentué davantage. En effet, afin de renforcer le déploiement d'IPv6, la communauté IPv6 s'était vite trouvée dans l'urgence de mettre en oeuvre un mécanisme de découverte automatique du DNS avec ou sans DHCPv6 (qui était justement près de sortir).

Trois propositions ont ainsi vu le jour dans le cadre des travaux des groupes « ipv6 », « dhc » et « dnsop ». C'est le groupe dnsop qui a pris en charge les débats sur ces propositions. Les co-auteurs de ces trois propositions ont conjointement rédigé un document synthétique (RFC 4339) décrivant pour chaque technique le fonctionnement ainsi que les scénarios d'utilisation. Ce document donne également des recommandations pratiques quant à la solution ou à la combinaison de solutions à adopter en fonction de l'environnement technique dans lequel se trouvent les équipements à configurer.

Voici maintenant un résumé des trois propositions :

  • Proposition 1, mécanisme à base de DHCP : deux solutions légèrement différentes ont été proposées. Elles proposent toutes les deux d'utiliser la même option « DHCPv6 DNS Recursive Name Server » spécifiée dans le RFC 3646 :
    • découverte via un serveur DHCPv6 complet (RFC 3315 : c'est-à-dire qui alloue dynamiquement les adresses IPv6 ;
    • découverte du DNS via un serveur DHCPv6-lite (RFC 3736) : celui-ci n'alloue pas d'adresses IPv6 mais il est simplement chargé d'informer les clients des différents paramètres à utiliser (DNS récursif, serveur NTP, serveur d'impression, ...) ;
    • Dans les deux cas, si l'équipement est en double pile et s'il est configuré à la fois avec DHCPv4 (pour IPv4) et avec DHCPv6 (pour IPv6), il faut définir une politique d'arbitrage entre les deux listes de serveurs DNS récursifs obtenues si celles-ci sont incohérentes ;
  • Proposition 2, RFC 5006, mécanisme à base d'annonce de routeur (RA): cette proposition apporte un complément à l'autoconfiguration sans état (RFC 4862) et consiste à surcharger l'annonce du routeur, en tant que message de la découverte des voisins (RFC 4861) par l'information DNS nécessaire. Une telle extension n'a pas été standardisée à ce jour, le RFC étant dans un état EXPERIMENTAL ;
  • Proposition 3, mécanisme à base d'adresses anycast bien connues (Well-known anycast addresses) : des adresses IPv4 et IPv6 anycast qui seraient connues par tous les clients et préconfigurées automatiquement par le logiciel d'installation du système d'exploitation de l'équipement. Cette proposition semble avoir été abandonnée.

Exemple de configuration automatique

TODO: Refaire un exemple complet

La machine à l'activation de l'interface réseau crée l'adresse lien-local provisoire et débute l'algorithme DAD. Elle émet un message de sollicitation d'un voisin à l'adresse multicast sollicité associée à son adresse provisoire. Son adresse de source est indéterminée car son état est encore provisoire pour le moment et ne sert que pour la réception. L'adresse dont l'unicité est vérifiée est placée dans le champ cible.

Ethernet Src : 8:0:20:a:aa:6d Dst : 33:33:ff:a:aa:6d Type : 0x86dd
IPv6
 Version : 6 Priorité : 0xf0 Label: 000000
 Longueur : 24 octets (0x0018) Protocole : 58 (0x3a, ICMPv6)
 Nombre de sauts : 255 (0x0ff)
 Source : ::
 Desti. : ff02::1:ff0a:aa6d (multicast sollicité associé à l'adresse cible)
ICMPv6
 Type : 135 (0x87, Sollicitation d'un voisin) Code : 0 Checksum : 0xfe37
 cible : fe80::0a00:20ff:fe0a:aa6d (uma, lien-local)

0000: 6f 00 00 00 00 18 3a ff 00 00 00 00 00 00 00 00
0010: 00 00 00 00 00 00 00 00 ff 02 00 00 00 00 00 00
0020: 00 00 00 01 ff 0a aa 6d|87 00 fe 37 00 00 00 00
0030: fe 80 00 00 00 00 00 00 0a 00 20 ff fe 0a aa 6d

Ce message ne peut être utilisé pour mettre à jour le cache de résolution d'adresses d'un voisin car l'adresse de la source a un statut de provisoire, en conséquence l'option adresse physique de la source ne figure pas dans le message. Le message de sollicitation d'un voisin sera émis au moins deux fois. Si rien n'est reçu, l'identifiant sera considéré unique et l'adresse passera dans l'état valide. Par contre, si elle reçoit le message annonce d'un voisin comme ci-dessous, l'adresse est entrée en collision avec une adresse valide utilisée par un voisin. L'adresse ne peut être affectée à l'interface. Une intervention humaine devient nécessaire.

Ethernet Src : 8:0:20:a:aa:6d Dst : 33:33:0:0:0:1 Type : 0x86dd
IPv6
 Version : 6 Priorité : 0xf0 Label: 000000
 Longueur : 32 octets (0x0020) Protocole : 58 (0x3a, ICMPv6)
 Nombre de sauts : 255 (0x0ff)
 Source : fe80::a00:20ff:fe0a:aa6d
 Desti. : ff02::1 (multicast, tous les noeuds du lien)
ICMPv6
 Type : 136 (0x88, Annonce d'un voisin) Code : 0 Checksum : 0xe036
 Bits (0x7) R = 0, S = 0, O = 1
 cible : fe80::a00:20ff:fe0a:aa6d
 Option :
  Type : 2 (Adresse physique cible) Lg : 8 octets (0x01) : 08-00-20-0a-aa-6d

0000: 6f 00 00 00 00 20 3a ff fe 80 00 00 00 00 00 00
0010: 0a 00 20 ff fe 0a aa 6d ff 02 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 01|88 00 e0 36 20 00 00 00
0030: fe 80 00 00 00 00 00 00 0a 00 20 ff fe 0a aa 6d|
0040: 02 01 08 00 20 0a aa 6d

Comme le message sollicitation d'un voisin ne comportait pas d'adresse de source, le message annonce d'un voisin est émis au groupe de tous les noeuds du lien (ff02::1).

Après avoir exécuté l'algorithme DAD avec l'adresse lien-local comme l'exemple précédent l'a montré (en supposant que l'adresse n'est pas entrée en collision), la machine émet un message sollicitation du routeur à tous les routeurs du lien (ff02::2).

Ethernet Src : 8:0:20:a:aa:6d Dst : 33:33:0:0:0:2 Type : 0x86dd
IPv6
 Version : 6 Priorité : 0xf0 Label: 000000
 Longueur : 16 octets (0x0010) Protocole : 58 (0x3a, ICMPv6)
 Nombre de sauts : 255 (0x0ff)
 Source : fe80::a00:20ff:fe0a:aa6d (uma, lien-local)
 Desti. : ff02::2 (multicast, tous les routeurs du lien)
ICMPv6
 Type : 133 (0x85, Sollicitation du routeur) Code : 0 Checksum : 0xd63e
 Option :
  Type : 1 (Adresse physique source) Lg : 8 octets (0x01) : 08-00-20-0a-aa-6d

0000: 6f 00 00 00 00 10 3a ff fe 80 00 00 00 00 00 00
0010: 0a 00 20 ff fe 0a aa 6d ff 02 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 02|85 00 d6 3e 00 00 00 00|
0030: 01 01 08 00 20 0a aa 6d

Si un routeur est présent, un message annonce de routeur est reçu par la machine se configurant. Elle y trouve les bits M, O et les informations sur les préfixes du lien.

Ethernet Src : 1a:0:20:c:7a:34 Dst : 33:33:0:0:0:1 Type : 0x86dd
IPv6
 Version : 6 Priorité : 0xf0 Label: 000000
 Longueur : 56 octets (0x0038) Protocole : 58 (0x3a, ICMPv6)
 Nombre de sauts : 255 (0x0ff)
 Source : fe80::1800:20ff:fe0c:7a34 (ganesha, lien-local)
 Desti. : ff02::1 (multicast, tous les noeuds du lien)
ICMPv6
 Type : 134 (0x86, Annonce de routeurs) Code : 0 Checksum : 0x773c
 Nombre de sauts : 0 (non précisé) Gestion d'adresse : 0 (Pas de DHCP)
 Validité : 6000 secondes (0x1770) Timers : 0, 0 (non précisés)
 Options :
  Type : 1 (Adresse physique source) Lg : 8 octets (0x01) : 1a-00-20-0c-7a-34
  Type : 3 (Information sur le préfixe) Lg : 32 octets (0x04)
  Drapeaux : L=1, A=1 Durée de validité : -1, -1 (infinie)
  Préfixe : 3ffe:302:12:3::/64
 
0000: 6f 00 00 00 00 38 3a ff fe 80 00 00 00 00 00 00
0010: 18 00 20 ff fe 0c 7a 34 ff 02 00 00 00 00 00 00
0020: 00 00 00 00 00 00 00 01|86 00 77 3c 00 00 17 70
0030: 00 00 00 00 00 00 00 00|01 01 1a 00 20 0c 7a 34|
0040: 03 04 40 c0 ff ff ff ff ff ff ff ff 00 00 00 00
0050: 3f fe 03 02 00 12 00 03 00 00 00 00 00 00 00 00

Le message annonce de routeurs est émis vers le groupe de tous les noeuds IPv6 du lien. Le drapeau A étant positionné, le préfixe annoncé peut alors servir à la construction de l'adresse unicast globale. La durée de validité de cette adresse n'est pas limitée. La machine se configurant aura donc l'adresse 3ffe:302:12:3:a00:20ff:fe0a:aa6d.

Personal tools