IPv6, tout le monde y va. Mais tous les ISP ne souhaitent pas franchir le pas. Et pourtant, tous les services web sont accessible en IPv6. Google, gmail, facebook, twitter …

Nous vous proposons de monter un tunnel IPv6 pour amener cette technologie dans votre réseau (votre lab pour commencer).
Vous connaissez probablement Hurricane Electric, he.net, qui fournit des endpoints aux Etats-Unis. Nous vous proposons de faire la même chose, mais en France. Vous gagnerez en latence, et vous êtes connectez au coeur des principales routes d’échanges si votre point de sortie est bien localisé.

Partons du principe que vous avez une gateway pfSense dans votre LAN et que vous êtes administrateur système.

La partie configuration du pfSense est triviale, si on a les bons éléments sous la main. En l’occurrence, les informations d’IP et de route à utiliser.

Dans notre cas, prenons les valeurs suivantes:

pfSense Routeur IPv6
LAN IPv4 10.0.0.1/24
LAN IPv6 2001:db8::/64
WAN IPv4 192.0.2.1/24 198.51.100.1/24

Et c’est tout ce que nous avons besoin d’avoir comme information pour configurer notre pfSense.

Configuration du pfSense, côté client

Interface Tunnel

Dans la partie “Interfaces > (assign) > GIF > New”, entrez les valeurs suivantes:

Création d'une interface de tunnel gif avec pfSense

Ensuite, configurez votre nouvelle interface WAN_V6 de la manière suivante:

Paramètrage de l'interface WAN v6 (gif)

Notez que nous ne mettons pas d’information d’IP ici (ni v4, ni v6).

Route IPv6 par défaut

Cette partie terminée, vous pouvez vérifier que votre route IPv6 est bien la route par défaut. Ce n’est pas le cas au départ, il faut donc aller modifier le paramètre dans “System > Routing” :

Route par défaut IPv6

Une fois cela réglé, la configuration de votre pfSense est terminée, pour la partie connectivité.

DHCPv6

Affectons maintenant des IPv6 à votre LAN. C’est trivial et c’est la beauté d’IPv6:

Dans “Services > DHCPv6”, activez le DHCP sur l’interface LAN.

Dans le Range, choisissez une plage pour vos clients dhcp, par exemple:

2001:db8:0:0:ffff:: -> 2001:db8:0:0:ffff:ffff:ffff:ffff

Laissez le reste par défaut.

Router Advertisements

Dans la partie “Router Advertisements”, choisissez l’option “Managed”:

RA_DHCPv6

Votre pfSense va envoyer des informations de routage sur votre LAN. Les clients IPv6 qui attendent des informations vont recevoir leur IP, et vont pouvoir commencer à “sortir” vers Internet.

Il ne vous reste plus qu’à définir vos règles de firewalling en entrée/sortie, et les services à exposer.

Configuration du routeur, côté datacenter

Passons à la partie routeur IPv6. Bien entendu, nous allons utiliser un FreeBSD 10 avec un endpoint de tunnel gif(4).

La configuration est triviale la aussi, merci les gens de FreeBSD ;)

root@vpn-6in4:~ # cat /etc/rc.conf.local
# autoriser le routage IPv6
ipv6_gateway_enable="YES"

# creer l'interface de tunneling
cloned_interfaces="gif0"
# declarer les routes du tunnel
static_routes="gif0"

## La creation du tunnel
# "tunnel  "
ifconfig_gif0="tunnel 198.51.100.1 192.0.2.1"
# IP locale au tunnel, permettant de router les paquets. Rien a voir avec
# les IPs routes du LAN du pfSense distant
ifconfig_gif0_ipv6="inet6 2001:db8:ffff:ffff::1 prefixlen 64"

# route qui permet de joindre, via le tunnel, les IP du LANv6 du pfSense
route_gif0="-inet6 2001:db8:ffff::/64 2001:db8:ffff:ffff::2"

Ensuite, il faut redémarrer le réseau – /etc/rc.d/netif restart ; /etc/rc.d/routing restart –

Test de la configuration

Si tout est correct, vous pouvez obtenir le résultat suivant:

ws:~ nicolas$ ping6 ipv6.google.com
PING6(56=40+8+8 bytes) 2001:db8:0:0:ffff::d54d --> 2a00:1450:4007:806::1005
16 bytes from 2a00:1450:4007:806::1005, icmp_seq=0 hlim=56 time=16.327 ms
16 bytes from 2a00:1450:4007:806::1005, icmp_seq=1 hlim=56 time=15.537 ms
16 bytes from 2a00:1450:4007:806::1005, icmp_seq=2 hlim=56 time=15.520 ms
16 bytes from 2a00:1450:4007:806::1005, icmp_seq=3 hlim=56 time=15.440 ms
16 bytes from 2a00:1450:4007:806::1005, icmp_seq=4 hlim=56 time=15.914 ms
^C
--- ipv6.l.google.com ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 15.440/15.748/16.327/0.333 ms

Attention

Attention, ne recopiez pas sans comprendre les données de cet article. Les IP utilisées ici sont celles définies dans les RFC de documentation. Elles ne peuvent pas être utilisées en production.