Difference between revisions of "MOOC:Compagnon Act14-s7"

From Livre IPv6

(Durée de validité de l'adresse)
Line 1: Line 1:
 
__NOTOC__                 
 
__NOTOC__                 
= Activité 14 : L'utilisation des adresses sur une interface réeseau =
+
= Activité 14 : L'utilisation des adresses sur une interface réeseau =
  
 
Lors de l'activité précédente nous avons vu que les adresses unicast sont construites hiérachiquement.  Un premier niveau de hiérarchisation découpe l'adresse en deux parties logiques, un préfixe réseau/sous-réseau, qui sera utilisé pour acheminer le datagramme à travers le réseau, et un identifiant
 
Lors de l'activité précédente nous avons vu que les adresses unicast sont construites hiérachiquement.  Un premier niveau de hiérarchisation découpe l'adresse en deux parties logiques, un préfixe réseau/sous-réseau, qui sera utilisé pour acheminer le datagramme à travers le réseau, et un identifiant
 
d'interface qui sera utilisé sur le dernier saut pour remettre le datagramme à l'interface de destination.  
 
d'interface qui sera utilisé sur le dernier saut pour remettre le datagramme à l'interface de destination.  
 
 
   
 
   
 
[[Image:adressage-07.jpg]]  
 
[[Image:adressage-07.jpg]]  
Line 20: Line 19:
 
niveau liaison de données (adresse MAC de la carte ethernet par
 
niveau liaison de données (adresse MAC de la carte ethernet par
 
exemple).
 
exemple).
 
 
   
 
   
 
Pour les adresses unicast, à l'exception des adresses non
 
Pour les adresses unicast, à l'exception des adresses non
Line 27: Line 25:
 
longueur de 64 bits. La taille de 64 bits permet d'approcher une
 
longueur de 64 bits. La taille de 64 bits permet d'approcher une
 
probabilité de conflit quasi nulle.
 
probabilité de conflit quasi nulle.
 
 
   
 
   
 
Si initialement pour des raisons d'auto-configuration,
 
Si initialement pour des raisons d'auto-configuration,
Line 33: Line 30:
 
de niveau 2, c'est de moins en moins le cas. Il existe plusieurs
 
de niveau 2, c'est de moins en moins le cas. Il existe plusieurs
 
méthodes pour construire cette valeur de 64 bits:
 
méthodes pour construire cette valeur de 64 bits:
 
 
   
 
   
 
* manuelle,
 
* manuelle,
Line 39: Line 35:
 
* aléatoire,
 
* aléatoire,
 
* cryptographique.
 
* cryptographique.
 
<br>
 
<br>
 
 
 
   
 
   
 
==== Manuel ====
 
==== Manuel ====
Line 50: Line 42:
 
l'adresse IPv6 est facilement mémorisable, et le serveur peut être
 
l'adresse IPv6 est facilement mémorisable, et le serveur peut être
 
accessible même si le DNS n'est pas actif.
 
accessible même si le DNS n'est pas actif.
 
 
   
 
   
 
''Nota : Le résolveur DNS est
 
''Nota : Le résolveur DNS est
Line 59: Line 50:
 
configuration automatique de type DHCPv6, il est préférable
 
configuration automatique de type DHCPv6, il est préférable
 
d'attribuer au résolveur DNS une adresse manuelle.''
 
d'attribuer au résolveur DNS une adresse manuelle.''
 
 
   
 
   
 
Il existe plusieurs techniques plus ou moins mnémotechniques
 
Il existe plusieurs techniques plus ou moins mnémotechniques
 
 
   
 
   
 
* incrémenter l'identifiant d'interface à chaque nouveau serveur créé
 
* incrémenter l'identifiant d'interface à chaque nouveau serveur créé
Line 81: Line 70:
 
   
 
   
 
<tt>2001:DB8:1234:1::192.0.2.123</tt>
 
<tt>2001:DB8:1234:1::192.0.2.123</tt>
 
 
   
 
   
 
==== Dérivé de l'adresse matérielle de l'interface ====
 
==== Dérivé de l'adresse matérielle de l'interface ====
Line 90: Line 78:
 
la carte réseau de la machine n'est pas changée. Par contre, ces
 
la carte réseau de la machine n'est pas changée. Par contre, ces
 
valeurs sont difficilement mémorisables.
 
valeurs sont difficilement mémorisables.
 
 
   
 
   
 
Les adresses lien-local sont construites en utilisant ce type
 
Les adresses lien-local sont construites en utilisant ce type
Line 96: Line 83:
 
conseillé de ne les utiliser que pour les machines client et de
 
conseillé de ne les utiliser que pour les machines client et de
 
préférer les identifiants d'interface manuels pour les serveurs.
 
préférer les identifiants d'interface manuels pour les serveurs.
 
 
   
 
   
 
Ces identifiants d'interface étant stables dans le temps, à
 
Ces identifiants d'interface étant stables dans le temps, à
Line 107: Line 93:
 
matériel, il est possible d'indiquer à l'exterieur du réseau quel
 
matériel, il est possible d'indiquer à l'exterieur du réseau quel
 
type de materiel est utilisé et donner des indications.
 
type de materiel est utilisé et donner des indications.
 
 
   
 
   
 
Si ces inconvénients sont jugés importants par l'entreprise,
 
Si ces inconvénients sont jugés importants par l'entreprise,
 
l'identifiant d'interface pour les adresses globales peut être
 
l'identifiant d'interface pour les adresses globales peut être
 
généré aléatoirement.
 
généré aléatoirement.
 
 
   
 
   
 
===== EUI-64 =====
 
===== EUI-64 =====
Line 121: Line 105:
 
domotique. L'IEEE décrit les règles qui permettent de passer d'un
 
domotique. L'IEEE décrit les règles qui permettent de passer d'un
 
identifiant MAC codé sur 48 bits à un EUI-64.
 
identifiant MAC codé sur 48 bits à un EUI-64.
 
 
   
 
   
 
Il existe plusieurs méthodes pour construire l'identifiant :
 
Il existe plusieurs méthodes pour construire l'identifiant :
 
 
   
 
   
 
* Si une machine ou une interface possède un identificateur global IEEE EUI-64, celui-ci a la structure décrite figure Identificateur global IEEE EUI-64. (schema)
 
* Si une machine ou une interface possède un identificateur global IEEE EUI-64, celui-ci a la structure décrite figure Identificateur global IEEE EUI-64. (schema)
Line 134: Line 116:
 
octet) et g (huitième bit du premier octet) ont une signification
 
octet) et g (huitième bit du premier octet) ont une signification
 
spéciale :
 
spéciale :
 
 
   
 
   
 
- <tt>u</tt>
 
- <tt>u</tt>
 
(Universel) vaut 0 si l'identifiant EUI-64 est universel,
 
(Universel) vaut 0 si l'identifiant EUI-64 est universel,
 
 
   
 
   
 
- <tt>g</tt>
 
- <tt>g</tt>
Line 144: Line 124:
 
désigne un seul équipement sur le réseau, ou de groupe (g = 1),
 
désigne un seul équipement sur le réseau, ou de groupe (g = 1),
 
par exemple une adresse de multicast.
 
par exemple une adresse de multicast.
 
 
   
 
   
 
[[Image:adressage-09.jpg]]
 
[[Image:adressage-09.jpg]]
 
 
   
 
   
 
'''L'identifiant d'interface à 64 bits
 
'''L'identifiant d'interface à 64 bits
Line 157: Line 135:
 
autorisant à numéroter simplement les interfaces locales à partir
 
autorisant à numéroter simplement les interfaces locales à partir
 
de 1.
 
de 1.
 
 
   
 
   
 
[[Image:adressage-09.jpg]]
 
[[Image:adressage-09.jpg]]
 
 
   
 
   
 
===== MAC-48 =====
 
===== MAC-48 =====
Line 169: Line 145:
 
valeur 0xfffe, puis le bit u est mis à 1 comme dans le cas
 
valeur 0xfffe, puis le bit u est mis à 1 comme dans le cas
 
précédent. La figure ci-contre illustre ce processus.
 
précédent. La figure ci-contre illustre ce processus.
 
 
   
 
   
 
[[Image:adressage-11.jpg]]
 
[[Image:adressage-11.jpg]]
 
 
   
 
   
 
===== Cas Particuliers =====
 
===== Cas Particuliers =====
Line 186: Line 160:
 
il sera détecté lors de l'initialisation de l'adresse lien-local de
 
il sera détecté lors de l'initialisation de l'adresse lien-local de
 
l'interface, et devra être résolu manuellement.
 
l'interface, et devra être résolu manuellement.
 
 
   
 
   
 
==== Valeur aléatoire ====
 
==== Valeur aléatoire ====
Line 198: Line 171:
 
similaire à l'identificateur placé dans les processeurs Pentium
 
similaire à l'identificateur placé dans les processeurs Pentium
 
III.
 
III.
 
 
   
 
   
 
Pour couper court à toute menace de boycott d'un protocole qui «
 
Pour couper court à toute menace de boycott d'un protocole qui «
Line 213: Line 185:
 
continuent d'utiliser l'ancienne valeur tandis que les nouvelles
 
continuent d'utiliser l'ancienne valeur tandis que les nouvelles
 
connexions utilisent la nouvelle adresse.
 
connexions utilisent la nouvelle adresse.
 
 
   
 
   
 
Cette solution a été adoptée par Microsoft. Dans Windows XP,
 
Cette solution a été adoptée par Microsoft. Dans Windows XP,
Line 229: Line 200:
 
mais de manière optionnelle, sur Linux et les système
 
mais de manière optionnelle, sur Linux et les système
 
d'exploitation BSD comme Mac OS.
 
d'exploitation BSD comme Mac OS.
 
 
   
 
   
 
Bien entendu pour que ces mécanismes aient un sens, il faut que
 
Bien entendu pour que ces mécanismes aient un sens, il faut que
Line 235: Line 205:
 
DNS inverse ou que l'enregistrement de cookies dans un navigateur Web
 
DNS inverse ou que l'enregistrement de cookies dans un navigateur Web
 
pour identifier l'utilisateur soit impossible.
 
pour identifier l'utilisateur soit impossible.
 
 
   
 
   
 
En contre partie, il est plus difficile à un administrateur
 
En contre partie, il est plus difficile à un administrateur
 
réseau de filtrer les machines puisque celles-ci changent
 
réseau de filtrer les machines puisque celles-ci changent
 
périodiquement d'adresses.
 
périodiquement d'adresses.
 
 
   
 
   
 
[[Image:livre-G6-Windows7-IIDalea.png]]
 
[[Image:livre-G6-Windows7-IIDalea.png]]
 
 
   
 
   
 
==== Cryptographique ====
 
==== Cryptographique ====

Revision as of 16:08, 2 April 2015

Activité 14  : L'utilisation des adresses sur une interface réeseau

Lors de l'activité précédente nous avons vu que les adresses unicast sont construites hiérachiquement. Un premier niveau de hiérarchisation découpe l'adresse en deux parties logiques, un préfixe réseau/sous-réseau, qui sera utilisé pour acheminer le datagramme à travers le réseau, et un identifiant d'interface qui sera utilisé sur le dernier saut pour remettre le datagramme à l'interface de destination.

Adressage-07.jpg

Identifiant d'interface

Les identifiants d'interface des adresses unicast sont utilisés pour identifier de manière unique les interfaces des équipements sur un lien ou un domaine de diffusion de niveau 2 (VLAN). Ils doivent absolument être uniques pour le domaine couvert par un sous réseau. Toutefois l'unicité d'un identifiant d'interface peut être de portée beaucoup plus large, voire globale, à l'image des adresses MAC dont l'unicité est mondiale. Dans certains cas l'identifiant d'interface sera dérivé directement de l'adresse de niveau liaison de données (adresse MAC de la carte ethernet par exemple).

Pour les adresses unicast, à l'exception des adresses non spécifiées ou de l'adresse de bouclage (loopback) (celles commençant par 000), l'identifiant d'interface doit avoir une longueur de 64 bits. La taille de 64 bits permet d'approcher une probabilité de conflit quasi nulle.

Si initialement pour des raisons d'auto-configuration, l'identifiant d'interface devait toujours être dérivé de l'adresse de niveau 2, c'est de moins en moins le cas. Il existe plusieurs méthodes pour construire cette valeur de 64 bits:

  • manuelle,
  • basée sur l'adresse de niveau 2 de l'interface,
  • aléatoire,
  • cryptographique.

Manuel

Pour les serveurs les plus utilisés, il est préférable d'assigner manuellement des adresses aux interfaces, car dans ce cas l'adresse IPv6 est facilement mémorisable, et le serveur peut être accessible même si le DNS n'est pas actif.

Nota : Le résolveur DNS est le cas le plus flagrant; chaque machine sur le réseau doit être configurée avec l'adresse IPv6 du serveur DNS. En cas de changement de carte réseau, l'ensemble des machines du domaine devront être reconfigurées. Si l'on ne souhaite pas utiliser des protocoles de configuration automatique de type DHCPv6, il est préférable d'attribuer au résolveur DNS une adresse manuelle.

Il existe plusieurs techniques plus ou moins mnémotechniques

  • incrémenter l'identifiant d'interface à chaque nouveau serveur créé

2001:DB8:1234:1::1
2001:DB8:1234:1::2


  • reprendre le dernier octet de l'adresse IPv4 comme identifiant d'interface. Par exemple si un serveur a comme adresse IPv4 192.0.2.123, son adresse IPv6 sera :

2001:DB8:1234:1::7B
ou plus simplement
2001:DB8:1234:1::123


  • reprendre l'adresse IPv4 comme identifiant d'interface, bien que cela ait l'inconvénient de conduire à des adresses plus longues à taper :

2001:DB8:1234:1::192.0.2.123

Dérivé de l'adresse matérielle de l'interface

L'avantage d'utiliser une adresse de niveau 2 pour construire un identifiant d'interface est que l'unicité de cette valeur est presque toujours assurée. En plus, cette valeur est stable tant que la carte réseau de la machine n'est pas changée. Par contre, ces valeurs sont difficilement mémorisables.

Les adresses lien-local sont construites en utilisant ce type d'identifiant. Par contre pour les adresses globales, il est conseillé de ne les utiliser que pour les machines client et de préférer les identifiants d'interface manuels pour les serveurs.

Ces identifiants d'interface étant stables dans le temps, à chaque fois qu'un individu change de réseau, il change de préfixe, mais garde le même identifiant d'interface. Ce dernier pourrait donc servir à tracer les déplacements d'un individu. Le risque est faible, car les cookies mis en place par les serveurs web sont bien plus efficaces, mais ils ne s'agit plus d'un problème réseau. Autre désavantage, comme les adresses MAC contiennent l'identification du matériel, il est possible d'indiquer à l'exterieur du réseau quel type de materiel est utilisé et donner des indications.

Si ces inconvénients sont jugés importants par l'entreprise, l'identifiant d'interface pour les adresses globales peut être généré aléatoirement.

EUI-64

L'IEEE a défini un identificateur global à 64 bits (format EUI-64) pour les réseaux IEEE 1394 (firewire) ou IEEE 802.15.4 (réseau de capteurs) qui vise une utilisation dans le domaine de la domotique. L'IEEE décrit les règles qui permettent de passer d'un identifiant MAC codé sur 48 bits à un EUI-64.

Il existe plusieurs méthodes pour construire l'identifiant :

  • Si une machine ou une interface possède un identificateur global IEEE EUI-64, celui-ci a la structure décrite figure Identificateur global IEEE EUI-64. (schema)

Les 24 premiers bits de l'EUI-64, comme pour les adresses MAC IEEE 802, identifient le constructeur et les 40 autres bits identifient le numéro de série (les adresses MAC IEEE 802 n'en utilisaient que 24). Les 2 bits u (septième bit du premier octet) et g (huitième bit du premier octet) ont une signification spéciale :

- u (Universel) vaut 0 si l'identifiant EUI-64 est universel,

- g (Groupe) indique si l'adresse est individuelle (g = 0), c'est-à-dire désigne un seul équipement sur le réseau, ou de groupe (g = 1), par exemple une adresse de multicast.

Adressage-09.jpg

L'identifiant d'interface à 64 bits est dérivé de l'EUI-64 en inversant le bit u (cf. figure Identificateur d'interface dérivé d'une EUI-64). En effet, pour la construction des adresses IPv6, on a préféré utiliser 1 pour marquer l'unicité mondiale. Cette inversion de la sémantique du bit permet de garder la valeur 0 pour une numérotation manuelle, autorisant à numéroter simplement les interfaces locales à partir de 1.

Adressage-09.jpg

MAC-48

Si une interface possède une adresse MAC IEEE 802 à 48 bits universelle (cas des interfaces Ethernet ou Wi-Fi). L'adresse est tout d'abord convertie en EUI-64, par l'insertion de 16 bits à la valeur 0xfffe, puis le bit u est mis à 1 comme dans le cas précédent. La figure ci-contre illustre ce processus.

Adressage-11.jpg

Cas Particuliers

Si une interface ne possède aucune adresse (par exemple l'interface utilisée pour les liaisons PPP), et si la machine n'a pas d'identifiant EUI-64, il n'y a pas de méthode unique pour créer un identifiant d'interface. La méthode conseillée est d'utiliser l'identifiant d'une autre interface si c'est possible (cas d'une autre interface qui a une adresse MAC), ou une configuration manuelle ou bien une génération aléatoire, avec le bit u positionné à 0. S'il y a conflit (les deux extrémités ont choisi la même valeur), il sera détecté lors de l'initialisation de l'adresse lien-local de l'interface, et devra être résolu manuellement.

Valeur aléatoire

L'identifiant d'interface basé sur des adresses MAC, comme indiqué précédemment, pourrait poser des problèmes pour la vie privée. Il identifie fortement la machine d'un utilisateur, qui même s'il se déplace de réseau en réseau garde ce même identifiant. Il serait alors possible de traquer un individu utilisant un portable, chez lui, au bureau, lors de ses déplacements. Ce problème est similaire à l'identificateur placé dans les processeurs Pentium III.

Pour couper court à toute menace de boycott d'un protocole qui « menacerait la vie privée », il a été proposé d'autres algorithmes de construction d'un identifiant d'interface basé sur des tirages aléatoires (voir RFC 3041). Un utilisateur particulièrement méfiant pourrait valider ces mécanismes. L'identifiant d'interface est soit choisi aléatoirement, soit construit par un algorithme comme MD5 à partir des valeurs précédentes, soit tiré au hasard si l'équipement ne peut pas mémoriser d'information entre deux démarrages. Périodiquement l'adresse est mise dans l'état « déprécié » et un nouvel identifiant d'interface est choisi. Les connexions déjà établies continuent d'utiliser l'ancienne valeur tandis que les nouvelles connexions utilisent la nouvelle adresse.

Cette solution a été adoptée par Microsoft. Dans Windows XP, l'interface possède deux adresses IPv6 globale. La première a un identifiant d'interface dérivé de l'adresse MAC. Elle sert aux applications attendant des connexions sur la machine (i.e. les applications serveur). Cette adresse est stable et peut être publiée dans le DNS. La seconde possède un identifiant d'interface tiré aléatoirement. Elle est changée tous les jours et sert aux applications client. Dans Windows 7, ce comportement est généralisé car l'identifiant d'interface de l'adresse permanente est également issu d'un tirage aléatoire. Cela permet d'éviter de donner la marque de la machine ou le type de carte contenu dans les premiers octets de l'identifiant d'interface. Elle est également présente, mais de manière optionnelle, sur Linux et les système d'exploitation BSD comme Mac OS.

Bien entendu pour que ces mécanismes aient un sens, il faut que l'équipement ne s'enregistre pas sous un même nom dans un serveur DNS inverse ou que l'enregistrement de cookies dans un navigateur Web pour identifier l'utilisateur soit impossible.

En contre partie, il est plus difficile à un administrateur réseau de filtrer les machines puisque celles-ci changent périodiquement d'adresses.

File:Livre-G6-Windows7-IIDalea.png

Cryptographique

Si un identifiant aléatoire permet de rendre beaucoup plus anonyme la source du paquet, des propositions sont faites à l'IETF pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Le RFC 3972 définit le principe de création de l'identifiant d'interface (CGA : Cryptographic Generated Addresses) à partir de la clé publique de la machine. Elles pourraient servir pour sécuriser les protocoles de découverte de voisins ou pour la gestion de la multi-domiciliation.

Adressage multiple des interfaces

Les interfaces des équipements disposent simultanément de plusieurs adresses IPv6. Ainsi, comme nous l'avons vu dans l'activité précédente, une interface dispose au moins d'une adresse purement locale sur son lien de rattachement (l'adresse lien local). Celle ci est automatiquement affectée à l'interface lors de la phase d'activation de cette dernière par le système. Selon la nature du lien de rattachement (liaison point à point, domaine de diffusion ethernet filaire ou wifi, ...) l'interface peut également disposer d'une (ou plusieurs) adresse(s) routable(s) soit localement (cas des adresses ULA) soit globalement (cas des adresses globales), en associant le préfixe d'adresse du lien support à l'identifiant d'interface. L'affectation de ces adresses routables peut être assurée soit par l'administrateur système de la machine soit gérée automatiquement par le réseau en s'appuyant sur les mécanismes d'autoconfiguration avec ou sans état, comme nous le verrons dans un séquence ultérieure.

Durée de validité de l'adresse

L'activité introuctive de la séquence ("Quest ce qu'une adresse IP ?") nous a détaillé les différents états de validité d'une adresse (test, préféré, déprécié, invalide) qui régissent la durée de validité de l'adresse.

Personal tools