Archive pour mars 2006

Le 6to4, c’est bien, mais…

mercredi 29 mars 2006
… parfois, on aimerais que ca serve à quelque chose

En effet, pour se connecter à un site v4/v6, le système préfèrera par défaut utiliser IPv4. Normal, c’est sensé être plus rapide. Par contre, lorsque le but est de tester IPv6, c’est un peu plus gênant.

Lorsque la résolution de nom pose un problème de choix d’adresses source et destination, ce qui arrive souvent en IPv6, le système d’exploitation est sensé utiliser une table de politique de choix de préfixes (prefix policy). Sous windows, celle ci se présente de cette façon (table par défaut).

Precedence  Label  Prefix
----------  -----  --------------------------------
         5      5  3ffe:831f::/32
        10      4  ::ffff:0:0/96
        20      3  ::/96
        30      2  2002::/16
        40      1  ::/0
        50      0  ::1/128

A chaque préfixe dans la table est attribué un niveau de préférence, et un label. De manière générale, le choix se fait comme suit : On cherchera les couples sources/destination de même label, puis l’on utilisera le niveau de préférence pour les départager.

On remarque que dans la table par défaut de windows (elle est a peu près équivalente sur tout les systèmes utilisant une politique de préférence), on trouve :

  • le préfixe ::/96 , qui correspond aux adresses IPv4 mappées.
  • le préfixe ::FFFF:0:0/96, qui correspond a l’utilisation d’IPv4
  • le préfixe 2002::/16 qui est le préfixe 6to4

Ici, le label du préfixe 6to4 est différent du label du préfixe global ( ::/0 ), de ce fait, le système d’exploitation va préférer utiliser IPv4 quand c’est possible (les deux adresses IPv4 tombant sous le préfixe ::FFFF:0:0/96).

Pour pouvoir utiliser en priorité IPv6, il est nécessaire de modifier la table. On conservera une entrée distincte, pour le cas peu probable ou la destination aurait à la fois une adresse 6to4 et une adresse native. Il n’est pas nécessaire de conserver la première entrée de la table (préfixe 6bone) Correction : il s’agit du préfixe teredo, qu’il n’est pas conseillé d’utiliser, a garder dans la table, donc.

La modification s’effectue ainsi, dans une console :

C:\>netsh
netsh>interface ipv6
netsh interface ipv6>set prefix ::1/128 50 0
netsh interface ipv6>set prefix ::/0 40 1
netsh interface ipv6>set prefix 2002::/16 30 1
netsh interface ipv6>set prefix ::/96 20 3
netsh interface ipv6>set prefix ::ffff:0:0/96 10 4
netsh interface ipv6>set prefix 3ffe:831f::/32 5 5
netsh interface ipv6>show prefix
Querying active state...                           

Precedence  Label  Prefix
----------  -----  --------------------------------
        10      4  ::ffff:0:0/96
        20      3  ::/96
        30      1  2002::/16
        40      1  ::/0
        50      0  ::1/128

L’effet est immédiat. Ce qui peut-être vérifié en allant voir la tortue qui danse !