Table of Contents
Tunnel Wifi entre les Freebox Server et Player
Si, comme moi, vous disposez d'un Freebox Revolution (v6), vous pouvez connecter votre boîtier ADSL (Freebox Server ou FS) à votre boîtier HD (Freebox Player ou FP) de deux manières : soit avec les FreePlugs basée sur la technologie CPL (Courants Porteurs en Ligne), soit avec un cable Ethernet qui courent à travers le salon, le plus souvent quand les FreePlugs ne fonctionnent pas ou mal ! Nous nous proposons ici de proposer une alternative sans fil basé sur un tunnel wifi entre le FS et le FP
Voici un petit schéma récapitulatif :
Internet <--adsl--> FS <--ether--> PC1 <--wifi--> PC2 <--ether--> FP <--> TV
En guise de PC 1 et 2, nous utilisons des Raspberry Pi 3 sous Raspbian, qui disposent des interfaces eth0 (ethernet) et wlan0 (wifi) Pour commencer, il faut noter que le FP et FS discutent à travers un VLAN avec le tag 100 (interface eth0.100). L'idée de base va donc être de réaliser :
- une connexion wifi ad-hoc entre les wlan0 des deux PCs,
- un tunnel OpenVPN de niveau 2 entre les deux PCs (interfaces tap0.100),
- un bridge br0 entre eth0.100 et tap0.100 pour chaque PC.
La FS (en mode routeur) dispose d'un serveur DHCP. Le LAN de la Freebox (ether et wifi) est 192.168.0.0/24 avec FS en 192.168.0.254 qui fait office de passerelle vers Internet. Le VLAN 100 est 192.168.27.0/28 avec FS en 192.168.27.14 et FP en 192.168.27.1.
Prérequis
On installe quelques paquets Linux/Debian :
sudo apt-get install openvpn openssl vlan bridge-utils
On génère une clef statique pour le tunnel VPN :
sudo openvpn --genkey --secret openvpn.key
Il faut également stopper le Network Manager :
sudo /etc/init.d/network-manager restart # Debian ... # Raspbian
PC1 (connecté au FS)
En tant que root, il faut lancer le script server suivant :
- server.sh
# reseau wifi ad-hoc ifconfig wlan0 down iwconfig wlan0 essid pouet mode ad-hoc channel 1 ifconfig wlan0 192.168.1.1/24 # reseau local ifconfig eth0 up # tunnel VPN openvpn server.conf & sleep 1 # vlan 100 modprobe 8021q vconfig add eth0 100 vconfig add tap0 100 ifconfig eth0.100 up ifconfig tap0.100 up # bridge brctl addbr br0 brctl addif br0 tap0.100 brctl addif br0 eth0.100 ifconfig br0 up
- server.conf
dev tap ifconfig 10.8.0.1 255.255.255.0 secret openvpn.key
PC2 (connecté au FP)
En tant que root, il faut lancer le script client suivant :
- client.sh
# reseau wifi ad-hoc ifconfig wlan0 down iwconfig wlan0 essid pouet mode ad-hoc channel 1 ifconfig wlan0 192.168.1.2/24 # reseau local ifconfig eth0 up # tunnel VPN openvpn client.conf & sleep 1 # vlan 100 modprobe 8021q vconfig add eth0 100 vconfig add tap0 100 ifconfig eth0.100 up ifconfig tap0.100 up # bridge brctl addbr br0 brctl addif br0 tap0.100 brctl addif br0 eth0.100 ifconfig br0 up
- client.conf
remote 192.168.1.1 dev tap ifconfig 10.8.0.2 255.255.255.0 secret openvpn.key
Remise à zéro
- reset.sh
rmmod 8021q ifconfig eth0 down ifconfig wlan0 down ifconfig tap0 down ifconfig br0 down brctl delbr br0 pkill -9 openvpn
Conclusion
Bon, ça marche ! Voici une archive avec les scripts et les configs freebox-tunnel.tgz. Mais le débit a l'air juste suffisant pour regarder la TV avec un flux ADSL bas débit. On peut également remplacer la connexion wifi ad-hoc en utilisant simplement l'Access Point du Freebox Server : freebox-tunnel-v2.tgz.
Afin d'améliorer le débit, il faudrait remplacer le tunnel OpenVPN par un tunnel de niveau 2, a priori plus léger et performant. Même si OpenVPN est remarquement simple à configurer, c'est vrai qu'on a pas besoin d'une technologie VPN sécurisé !
Bench à faire…