Hello World

Fort de ces quelques observations, nous allons maintenant connecter une station directement sur notre Freebox, configurée pour fonctionner en IPv6.

Configuration

Cette machine, une Debian « jessie » dispose d'une interface eth0 configurée en IPv4 DHCP. Nous aurons donc aussi une connectivité IPv4, ce qui pour l'instant est nécessaire, si nous voulons accéder à la plupart des ressources de l'internet. En effet, peu de sites proposent actuellement une connectivité IPv6.

Nous démarrons cette machine et :


~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 1c:7e:e5:26:54:51  
          inet adr:82.243.80.13  Bcast:82.243.80.255  Masque:255.255.255.0
          adr inet6: 2a01:e35:2f35:d0:1e7e:e5ff:fe26:5451/64 Scope:Global
          adr inet6: fe80::1e7e:e5ff:fe26:5451/64 Scope:Lien
...

Nous observons deux adresses IPv6 :

  • fe80::1e7e:e5ff:fe26:5451/64 qui correspond au lien local, comme nous l'avons vu ;
  • 2a01:e35:2f35:d0:1e7e:e5ff:fe26:5451/64 qui est une adresse globale, fournie par notre opérateur.

Anatomie de l'adresse « globale »

Déjà, nous pouvons observer que le jeton (partie représentative du nœud) est le même pour les adresses globale et lien local. C'est normal, elles sont toutes les deux auto-configurées de la même manière (eui64).

Ipv6 Chez Free

L'opérateur a adopté une méthode de fourniture d'IPv6 encapsulé dans de l'IPv4, pour des raisons essentiellement matérielles. Tous les composants de l'infrastructure ne sont pas forcément compatibles IPv6, à commencer par de nombreux DSLAMs.

La méthode est appelée «6rd» (IPv6 Rapid Deployment). Elle permet de fournir au client un «certain nombre» de vraies adresses IPv6, mondialement routables.

Voici la structure d'une adresse IPv6 obtenue depuis une passerelle résidentielle (comprenez «box») utilisant le transport 6rd: Les bits sont indexés à l'inverse de leur poids, le premier bit étant le plus lourd.

  1. les 26 premiers bits constituent le préfixe fourni par le RIPE à l'opérateur, Free dans l'exemple;
  2. les 2 bits suivants sont réservés à l'usage de l'opérateur. Pour le client, ces deux bits sont à 1;
  3. les 32 bits suivants représentent l'adresse IPv4 sous forme hexadécimale;
  4. les 4 bits suivants permettent à l'opérateur de fournir un nombre variable de sous réseaux /64 !;
  5. les derniers 64 bits forment le jeton, auto-calculé depuis l'adresse MAC par la méthode EUI-64.

Autrement dit:

  • Un fournisseur de service reçoit de la part du RIPE un préfixe /26;
  • Les trois bits suivants étant définis comme ceci:
    • 00 Réservé au réseau d'administration;
    • 01 et 10 Réservés pour un usage futur (toujours se prévoir une latitude de mouvements)
    • 11 pour le préfixe public de l'opérateur.

Ici, 2a01:0e3::/28 représente donc le préfixe de l'opérateur. Notons qu'il ne s'agit pas d'un nombre entier d'octets.

Le préfixe pour le client

Dans l'exemple, ce préfixe est :

2a01:e35:2f35:d0::/64

Il est construit de la manière suivante : 2a01:e3::/28 : le préfixe du fournisseur, tel que nous l'avons décrit plus haut; Préfixe FAI Les 4 octets suivants ne représentent rien d'autre que l'adresse IPv4 du client. Ainsi, l'adresse IPv4 écrite sous sa forme traditionnelle 82.243.80.13 peut se représenter sous sa forme hexadécimale 52f3500d. Il suffit de compléter:  ID FAI + ID customer A ce niveau, le client est parfaitement identifié, puisque le préfixe contient l'identifiant fu fournisseur et l'identifiant du client du fournisseur. Ce dernier a potentiellement la faculté d'exploiter un préfixe /60 et c'est ce que la norme prévoit.

Dans le cadre d'une fourniture de service «résidentielle», le client pourra largement se contenter d'un préfixe /64: Préfixe /64 pour Mme Michu

Effectivement, le «grand public» pourra pendant quelque temps se satisfaire de 264 adresses IP publiques pour son usage personnel. Mais la norme prévoit qu'il pourrait en posséder 16 fois plus !

Sous sa forme contractée, ce préfixe s'écrit: 2a01:e35:2f35:d0::/64 Les nœuds présents sur le réseau local vont s'auto configurer en utilisant leur adresse MAC modifiée au format EUI64. Ils feront usage des fonctions NDP de ICMP6 pour découvrir leur environnement et le routeur devrait correctement répondre en indiquant au minimum:

  • une passerelle par défaut;
  • un DNS récursif.

N'oublions pas que dans le cadre d'une encapsulation (tunnel) 6rd, la «box» matérialise le bout du tunnel côté client chez qui elle assure le rôle de routeur IPv6. Il est donc aisé de découvrir son adresse globale par un traceroute6 sur n'importe quelle cible:

traceroute6 irp.nain-t.net
traceroute vers mail.nain-t.net (2001:41d0:52:cff::922) de 2a01:e35:2f35:d0:1e7e:e5ff:fe26:5451, port 33434, du port 60628, 30 sauts max, 60 octets/paquet
 1  2a01:e35:2f35:d0::1 (2a01:e35:2f35:d0::1)  3.670 ms  0.812 ms  0.541 ms 
 2  2a01:e00:18::25 (2a01:e00:18::25)  52.562 ms  48.052 ms  49.351 ms 
 3  * * *        
Sur le «hop 1» nous trouvons l'adresse globale 2a01:e35:2f35:d0::1 qui n'a clairement pas l'allure d'une adresse auto configurée, mais qui fait non moins clairement partie de notre sous-réseau.

Notons sur le «hop 2» le 0 du préfixe /28 qui indique que nous somme ici dans le réseau interne du fournisseur.

La commande :

~$ ip -6 route ls
2a01:e35:2f35:d0::/64 dev br0  proto kernel  metric 256  expires 86378sec mtu 1480
fe80::/64 dev br0  proto kernel  metric 256  mtu 1480
default via fe80::207:cbff:fec3:e4da dev br0  proto ra  metric 1024  expires 1778sec hoplimit 64

Indique ce qu'il est permis d'attendre de la commande ip route mais en version 6. Notons que la route par défaut est indiquée avec une adresse de type «lien local», ce qui est tout à fait logique puisque par définition, la passerelle est dans le même réseau physique que le nœud utilisé pour la manip.

Et ARP dans tout ça ?

Nous l'avons déjà dit, ARP n'existe plus, mais la pile IPv6 doit tout de même conserver une table d'équivalence entre adresses IPv6 et adresses MAC.

La commande arp en version 6 n'existe pas, mais la commande ip permet d'afficher le voisinage, aussi bien en IPv4 qu'en IPv6.

~#ping6 -c1 fe80::207:cbff:fec3:e4da%eth0
PING fe80::207:cbff:fec3:e4da%br0(fe80::207:cbff:fec3:e4da) 56 data bytes
64 bytes from fe80::207:cbff:fec3:e4da: icmp_seq=1 ttl=64 time=0.822 ms

--- fe80::207:cbff:fec3:e4da%eth0 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.822/0.822/0.822/0.000 ms


~# ip -6 neigh show dev eth0
fe80::207:cbff:fec3:e4da lladdr 00:07:cb:c3:e4:da router REACHABLE

Notre passerelle (freebox) dispose d'une adresse lien local auto-configurée, son adresse MAC est 00:07:cb:c3:e4:da.