====== 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 :
# 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
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 :
# 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
remote 192.168.1.1
dev tap
ifconfig 10.8.0.2 255.255.255.0
secret openvpn.key
==== Remise à zéro =====
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: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:freebox-tunnel-v2.tgz|}}.
Afin d'améliorer le débit, il faudrait remplacer le tunnel OpenVPN par un [[https://fr.wikipedia.org/wiki/Layer_2_Tunneling_Protocol|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...
==== Un peu de documentation ====
* https://www.lekernelpanique.fr/2014/02/23/analyse-reseau-entre-freebox-player-et-freebox-server/
* http://blog.cogipix.com/general/technique/faire-communiquer-le-freebox-player-et-le-freebox-server-par-vpn
* https://wiki.debian.org/fr/WiFi/AdHoc
* http://www.pcastuces.com/pratique/materiel/pont_wifi/
* https://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html
* http://wiki.debian.org/BridgeNetworkConnections
* http://www.secdev.org/projects/tuntap_udp/