IPv6 chez Free (Ecrit en 2007)

J'ai remarqué un grand nombre de referer vers cet article. Malheuresement, j'ai perdu l'article d'origine, alors voila un résumé qui contient ma conf et ma manière de faire fonctionner l'IPv6 de Free. Avec un minimun d'explications.

  • Les exemples sont effectués sur une distribution linux avec un kernel 2.4 supportant IPv6. La configuration réseaux est faite avec le binaire ip
  • Je ne traite pas le protocole IPv6
  • Je ne traite pas les fichier de configuration réseau des differentes distribs

Ce que fait la Freebox

Comment activer IPv6

L'activation se fait au travers de l'interface d'admin free. Après avoir coché l'option, il faut redémarrer la Freebox. L'activation est immédiate.

Comment l'IPv6 circule-t-il entre la Freebox et ailleurs

La Freebox transporte les paquets via un tunnel 6to4rd (source: http://www.iliad.fr/presse/2007/CP_IPv6_121207.pdf - cache). Cette "technologie innovante" est un dérivé des tunnels 6to4. Elle permet de fournir à l'utilisateur une ip avec le préfixe IPv6 attribué a Free. Ce protocole n'a donné suite à aucune spécification ou RFC. On ne peut donc pas monter soit-même son propre tunnel 6to4rd. On reste tributaire de la Freebox.

Comment l'IPv6 circule-t-il entre la Freebox et le réseaux local

La freebox en mode IPv6 se comporte comme un routeur. Elle ne sait pas communiquer avec un autre routeur. Par défaut la freebox doit donc pouvoir joindre directement avoir toutes les adresses utilisées sur votre réseau. Elle envoie régulièrement des paquets de type "router advertisement" en multicast sur son réseau. (détails sur le "router advertisement": http://www.networksorcery.com/enp/protocol/icmp/msg9.htm - cache). Ces paquets permettent l'autoconfiguration simple des neuds IPv6 présents. La freebox prend la première adresse disponible pour le réseau fourni. ainsi, pour le reseau 2a01:e35:2f22:e3d0::/64 l'adresse de la freebox sera 2a01:e35:2f22:e3d0::1

Valider le lien

je configure ma machine en ipv6, j'affecte une adresse ip. J'utilise la première disponible, donc 2a01:e35:2f22:e3d0::2. Je configure une route par défaut vers la freebox. Les commandes sont

ip -6 address add 2a01:e35:2f22:e3d0::2/64 dev dev_int
ip -6 route add default via 2a01:e35:2f22:e3d0::1 dev_int

la commande ip -6 address retourne la configuration des interface. On peut noter des adresses positionnées automatiquement reconaissables par leur préfixe fe80::. Ces adresses sont dites "adresses de lien local" elles sont indispensable pour le bon fonctionnement d'IPv6. [...] fin des données récupérées

Les configurations et explications en vrac

Free n'est pas standard

Les recommandations liées à IPv6 précisent que les 64 premiers bits sont utilisées pour addresser le réseau et les 64 derniers bits sont là pour adresser les hosts. Il est également recommandé aux provider de fournir une adresse avec un masque de 60 bits pour que les utilisateur puissent avoir au moins 16 réseaux chez eux. Free fourni une adresse avec un masque de 64 bits, donc un seul réseau. On peut tout de même faire plusieurs réseaux, mais on sort des standards.

La solution proposée

Le but est d'utiliser un routeur / firewall derrière la Freebox qui n'est pas prévue pour cet usage. Pour cela, on va faire un premier sous réseau qui sera entre le routeur Freebox et le routeur votre réseau. Ce sera un réseau d'interconnexion de 2 bits, soit un masque de 126 bits. La freebox prend la première adresse disponible et se consière sur un réseau avec un masque de 64 bits: 2a01:e35:2f22:e3d0::1/64, le routeur prendra la deuxième et se considèrera sur un réseau avec un masque de 126 bits: 2a01:e35:2f22:e3d0::2/126.

Note: plutot que de donner mes vrai nom d'interface, je leur donne un nom fonctionnel. On retrouve donc:

  • eth_internet qui est l'interconnexion avec la freebox
  • eth_dmz qui est l'interface du réseau de dmz
  • eth_lan qui est l'interface du lan

Voila la configuration du routeur:

# active le routage v6
echo "1" > /proc/sys/net/ipv6/conf/all/forwarding
echo "1" > /proc/sys/net/ipv6/conf/default/forwarding

# ip/lan d'interconnexion avec la freebox
ip -6 addr add 2a01:e35:2f22:e3d0::2/126 dev eth_freebox
ip -6 route add default via 2a01:e35:2f22:e3d0::1 dev eth_freebox

# configuration de la DMZ
ip -6 addr add 2a01:e35:2f22:e3d0::1:1/112 dev eth_dmz
ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:2 nud permanent dev eth_dmz
ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:3 nud permanent dev eth_dmz
ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:4 nud permanent dev eth_dmz
ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:5 nud permanent dev eth_dmz
ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:6 nud permanent dev eth_dmz

# configuration du lan
ip -6 addr add 2a01:e35:2f22:e3d0::2:1/112 dev eth_lan

La c lé du fonction, c'est la commande ip -6 neigh add proxy 2a01:e35:2f22:e3d0::1:2 nud permanent dev eth_dmz. Elle indique au kernel que pour le résolution "arp",