IPv6 avec OpenWrt WRT54GS

Cet article décrit la mise en place de l'IPv6 à l'aide d'un tunnel broker: Go6. Il permet également de configurer le router pour distribuer le préfix IPv6 au réseau local et ainsi disposer d'une adresse IPv6 publique sur toutes les machines.

0.    Introduction

    Pour disposer d'une connectivité IPv6, il y a plusieurs alternatives: obtenir l'IPv6 en natif par son FAI (comme Nerim le propose par exemple), ou bien utiliser un tunnel. Comme beaucoup de gens je ne peux pas avoir d'IPv6 directement auprès de mon FAI... Heureusement, pour nous aider dans notre quête d'IPv6, il existe de nombreux tunnel broker: ce sont des serveur connectés à la fois au backbone IPv4 et IPv6 et qui servent de passerelle entre les deux mondes. J'ai choisi d'utiliser Go6 car faute d'avoir une connexion correcte, je ne peux pas utiliser les services de SixXs qui est de loin le meilleur broker que j'ai pu tester...

1.    Installer les paquets nécéssaires

    On va donc installer tout ce qu'il faut sur le routeur. On suppose que OpenWrt Kamikaze 7.07 est installé et fonctionne correctement. Regardez aussi sur cette page.

  • ipkg install kmod-ipv6 : Obligatoire. Apporte le support IPv6 au noyau.
  • ipkg install radvd: Obligatoire pour le routeur. Daemon qui broadcast le prefix IPv6
  • ipkg install ip: Obligatoire. Permet de configurer les interface IPv6.
  • ipkg install kmod-ip6tables: Optionnel. Permet d'avoir iptables pour IPv6 (firewall)
  • ipkg install ip6tables: Optionnel. Permet de configurer ip6tables (firewall)

    Je n'ai pas installé les paquets ip6tables. Pour utiliser le protocole de Go6, TSP = Tunnel Setup Protocol, il faut installer le paquet tspc. 

ipkg install tspc

2.   Configuration

    On va commencer par éditer et compléter la configuration du client TSP, tspc. En effet, le paquet proposé dans les dépôts d'OpenWrt n'est pas complet et il manque un fichier. Pas de panique nous allons le recréer bien comme il faut.

        2.1 /etc/tsp/tspc.conf

    Il faut éditer ce fichier avec vos paramètres. Cela est plutôt simple et rapide. Voir mon fichier

        2.2 /etc/tsp/template/setup.sh

    Il s'agit de la partie manquante du paquet. Il faut d'abord créer le répertoire /etc/tsp/template. Ensuite on édite un nouveau fichier, setup.sh.

$ cd /etc/tsp
$ mkdir template
$ nano setup.sh
.......
$ chmod +x setup.sh

    Complétez le contenu du fichier avec cela.

        2.3 /etc/sysctl.conf

    Il faut ajouter une ligne dans ce fichier pour que le noyau forward l'IPv6.

root@jahrouter:~# cat /etc/sysctl.conf
kernel.panic=3
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.ip_forward=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_timestamps=0
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3600                   
net.ipv4.netfilter.ip_conntrack_udp_timeout=60                                 
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream=180                         
net.ipv6.conf.all.forwarding=1

        2.4 /etc/hotplug.d/iface/10-ipv6

    Comme j'ai une connexion PPPoE (type ADSL), je veux que mon tunnel soit monté quand ma connexion devient active. Pour cela, il suffit de créer un petit script hotplug:

root@jahrouter:~# cat /etc/hotplug.d/iface/10-ipv6
tspc

    Et voilà.

3.   Conclusion

    On reboot le router. Allez un petit test :) Si tout va bien, ping6 www.sixxs.net fonctionne même depuis les clients du routeur: la plupart des distributions Linux x86 intègrent le support de la pile IPv6 par défaut. 

    Rendez-vous sur www.ipv6porn.com pour la Grande Experience !