Utiliser IPv6 chez SFR, sans la Neufbox
Cet article est en français, puisqu'il est susceptible d'intéresser principalement des lecteurs français.
En France, SFR fournit de l'IPv6 sur ses accès ADSL et fibre : c'est très bien ! En revanche, il ne s'agit pas d'une connectivité IPv6 native (probablement parce que le réseau d'accès ne fonctionne qu'en IPv4 pour le moment). La connectivité IPv6 est fournie par un tunnel monté au-dessus d'IPv4. Lorsqu'on utilise la box de SFR, c'est transparent : la box monte le tunnel elle-même, et on ne voit rien (à part une MTU un peu faible).
En revanche, si on remplace la box par un routeur à soi (par exemple, sous OpenWRT), il faut monter le tunnel soi-même si on veut profiter de l'IPv6. Ce n'est pas si évident à mettre en place (techniquement, c'est de l'IPv6 sur L2TP sur UDP sur IPv4, avec du PPP et du DHCPv6 pour faire bonne mesure). Le but de cet article est de détailler la mise en place du tunnel IPv6 sous OpenWRT, sachant que la configuration est adaptable pour d'autre systèmes GNU/Linux ou BSD.
Configuration IPv4
Obtenir une adresse IPv4 avec un routeur branché sur l'ONT SFR a déjà été beaucoup documenté : il suffit de faire du DHCP avec un vendor-id spécifique. Sous OpenWRT, ça se traduit par :
# /etc/config/network
config interface 'wan'
option ifname 'eth0' # à adapter
option proto 'dhcp'
option vendorid "neufbox-BypassedNeufBox-DirectConnectionToFTTH-toto@nowhere.xxx"
Le vendorid doit en fait simplement commencer par "neufbox", mais indiquer que ce n'est pas une Neufbox semble recommandé, des fois que le support technique passe par là (même si en pratique, le support de SFR est plutôt du genre « C'est bizarre, votre connexion Internet n'a pas l'air de fonctionner. » « Si si, je vous assure, ça marche très bien. » « Ah bon. »).
Analyse du tunnel
La première étape est de déterminer l'adresse du LNS (L2TP Network Server), qui est le routeur avec lequel le tunnel L2TP est monté. Pour monter le tunnel, il y a ensuite deux niveaux d'authentification :
- une authentification pour monter le tunnel L2TP lui-même. C'est simplement un mot de passe codé en dur, le même pour toutes les Neufbox : 6pe
- une authentification PPP, dont le couple login/mot de passe est spécifique à chaque client SFR.
Il faut donc connaître le login et le mot de passe PPP. Fort heureusement, la Neufbox envoie ceux-ci en clair lorsqu'elle établit le tunnel.
Pour récupérer toutes ces informations, il suffit donc d'écouter le trafic de la Neufbox juste après son démarrage.
Écouter le trafic de la Neufbox
Pour une connexion fibre, c'est très simple, il suffit de se mettre entre la Neufbox et l'ONT. Voir cet article pour plus de détails.
Le plus simple est probablement d'utiliser une machine sous Linux avec deux interfaces réseau (par exemple, un laptop avec une carte Ethernet en USB). Une interface est branchée sur le port WAN de la Neufbox, l'autre est branchée sur l'ONT. Ensuite, on bridge les deux interfaces :
$ sudo brctl addbr br0
$ sudo brctl addif br0 eth0
$ sudo brctl addif br0 eth1
$ sudo ip link set eth0 up
$ sudo ip link set eth1 up
$ sudo ip link set br0 up
$ sudo sysctl -w net.ipv4.ip_forward=1
Il faut aussi s'assurer que le firewall autorise le forwarding de paquet. En cas de doute :
$ sudo iptables -P FORWARD ACCEPT
$ sudo iptables -F FORWARD
Il ne reste plus qu'à regarder le trafic qui passe :
$ sudo tcpdump -n -v -i eth0
Adresse du LNS
Sur ma connexion fibre, l'adresse du LNS avec lequel la Neufbox établit le
tunnel est 109.6.3.95
. Il se peut que le serveur soit différent selon
la région, ou d'autres critères. Par exemple, dans la
capture faite par Marin,
le LNS est 109.6.1.72
. Un autre utilisateur
indique
que chez lui, le LNS est 109.6.4.36
.
Le plus simple est donc d'écouter le trafic et d'utiliser le même LNS que votre Neufbox.
Login et mot de passe PPP
Le login PPP est manifestement de la forme
dhcp/XX.XX.XX.XX@YYYYYYYYYYYY, où XX.XX.XX.XX
est l'IPv4 publique de
l'accès Internet, et YYYYYYYYYYYY
est l'adresse MAC du port WAN de la
Neufbox, sans les :
.
Pour le mot de passe PPP, il ne semble pas y avoir de logique
particulière. Il s'agit visiblement d'une chaîne de 16 caractères dans
l'alphabet [A-Z0-9]
(alphanumérique avec uniquement des lettres en
majuscule).
Configuration sous OpenWRT Barrier Breaker
Tout est dans la documentation d'OpenWRT. En adaptant pour SFR, ça donne donc :
# /etc/config/network
config interface 6pe
option proto l2tp
option server '109.6.3.95' # à adapter
option username 'dhcp/XX.XX.XX.XX@YYYYYYYYYYYY'
option password 'ZZZZZZZZZZZZZZZZ'
option keepalive '6'
option ipv6 '1'
config interface 'wan6'
option ifname '@6pe'
option proto 'dhcpv6'
Ainsi que :
# /etc/xl2tpd/xl2tp-secrets
* * 6pe
Et hop, ça juste marche (autoconfiguration sur le LAN, règles de firewall, etc). Magique, OpenWRT, non ? :)
Configuration pour d'autres OS (GNU/Linux, BSD)
La méthode pédestre, en configurant xl2tpd puis pppd, est également documentée sur le wiki OpenWRT.
Quelqu'un a également essayé avec un EdgeRouter Lite, et a fini par obtenir une config pas super propre, mais qui marche.
Notons que le firmware des Neufbox est disponible :
http://neufbox.alwaysdata.net/.
Notamment, il est possible de récupérer la configuration de xl2tpd
et
pppd
pour être sûr d'avoir la même.
Performance
Le tunnel est monté sur un routeur Netgear WNDR3800, sous OpenWRT Barrier Breaker rc3. La connexion est une fibre SFR 1G/200M.
Les tests sont fait depuis un laptop branché en filaire, vers
ipv6.intuxication.testdebit.info
, qui est à environ 10 ms, avec les
commandes suivantes :
# Download
wget -O /dev/null http://ipv6.intuxication.testdebit.info/fichiers/1000Mo.dat
# Upload
curl -o /dev/null -F 'filecontent=@1000Mo.dat' http://ipv6.intuxication.testdebit.info
Chaque commande est lancé plusieurs fois en parallèle si nécessaire (pour remplir le tuyau), et le débit instantané est relevé sur le routeur. J'obtiens les débits IP maximaux suivants :
- 80 Mbits en upload
- 105 Mbits en download
En upload, un top
sur le routeur montre que le CPU passe 100% du temps à
traiter des interruptions logicielles (sirq). En download, l'utilisation
CPU est plutôt de l'ordre de 90%.
Pour comparer, en IPv4 dans les mêmes conditions, j'obtiens 180 Mbps avec 85% d'utilisation CPU sur le routeur, le résultat étant identique en upload et en download. Visiblement, encapsuler des paquets L2TP est donc plus coûteux que de les décapsuler.
Conclusion
Cet article décrit comment utiliser la connectivité IPv6 fournie par SFR lorsqu'on remplace la Neufbox par un routeur à soi. On peut avoir envie d'utiliser d'autres services (téléphone, télévision, etc), mais plein de gens ont documenté comment faire : voir les liens ci-dessous.
Liens
- Configuration IPv6 over L2TP pour OpenWRT
- OpenWrt native IPv6-stack (pour OpenWRT Barrier Breaker 14.07)
- Captures réseau du démarrage et fonctionnement de la Neufbox 6 fort intéressant
- Bypasser sa neufbox article de référence, même si pas forcément à jour
- Bypasser la Neufbox Fibre avec un Routeur Linux
- Bypass neufbox 6 avec NetBSD