Utiliser le Raspberry Pi comme point d’accès Wifi (routé via OpenVPN ou pas)

J’avais évoqué dans un article précédent, comment utiliser un Raspberry Pi comme passerelle OpenVPN, mais le hic dans cette approche, c’est qu’il faut configurer chaque client (ordinateurs, consoles, etc.) pour utiliser le Raspberry Pi comme passerelle.

Pas pratique du tout d’aller mettre à jour la configuration réseau (IP, passerelle, DNS)  – surtout si vous souhaitez changer de VPN à FAI fréquemment.

Dans cet article, j’explique comment configurer votre Raspberry Pi pour qu’il crée un point d’accès wifi (SSID) , qui routera les clients directement via le tunnel VPN (tun0) ou pas(eth0, pour rajouter dans votre logement un point d’accès wifi à votre réseau local) : il vous suffira alors de changer de réseau wifi pour vos retrouver (ou pas) connecté via VPN.

Pré-requis

J’assume dans cet article que :

  • vous avez un Raspberry Pi (j’utilise un rpi 2b et un rpi B+ et même le rpi 3 avec wifi intégré) et un adapteur wifi sur usb (j’écris l’article en utilisant une Edimax 150Mbps EW-7811 UnR2, mais tout autre adapteur wifi usb, supportant Access Point (AP Mode) ferait l’affaire, j’ai aussi testé avec TP-Link TL-WN823N
  • SOIT vous avez suivi l’article précédent et vous avez un Raspberry Pi sous Raspbian Jessie, avec une connexion OpenVPN configurée au démarrage sur tun0, et qu a les règles iptables pour autoriser le routage
  • SOIT vous voulez simplement ajouter un point d’accès wifi à votre réseau local, avec votre Raspberry Pi (1 ou2 ) sous Raspbian Jessie

Paramétrage de l’interface Wifi

Si vous êtes connecté à votre Raspberry Pi par ethernet, vous devriez être capable de voir tun0 (le tunnel VPN) ou simplement etho et wlan0 (l’adaptateur wifi)

Pour l’instant, wlan0 n’est pas configuré; 2 options se présentent à vous pour la configuration réseau

a)Configurer le réseau pour point d’accès avec DHCP  (pour tunnel VPN par exemple)

Il vous suffit, dans /etc/network/interfaces, d’enlever les défauts pour wlan0 (commentés avec un # devant) pour ajouter une configuration statique – j’utilise ici un subnet différent que celui de eth0 (qui était sur 192.168.1.x) – pour bien différencier les 2 réseaux.

Configuration du serveur DHCP

Pour faciliter la configuration des clients, rien de mieux qu’un serveur DHCP ; d’abord on l’installe :

et ensuite, on le paramètre , à travers le ficher /etc/dhcp/dhcpd.conf :

et à travers le fichier /etc/default/isc-dhcp-server pour lui indiquer que wlan0 est l’interface réseau dont il devra être le serveur dhcp

b) Configurer le réseau pour point d’accès sans DHCP  (pour point d’accès wifi supplémentaire par exemple)

Je vous suggère de bridger wlan0 et eth0, sous br0 : comme celà, toutes les machines connectées sur l’AP wifi seront traitées comme tout autre membre de votre réseau local (et donc utiliseront les mêmes DNS, DHCP, etc.)

Il vous suffit alors de remplacer votre configuration /etc/network/interfaces avec la suivante :

Il vous faudra toutefois avoir installé bridge-utils :

C’est tout, mais ne redémarrez pas le réseau encore, wlan0 est toujours inactive pour le moment

Installation d’hostapd pour point d’accès wifi

On commence par l’installer :

et avant d’aller plus loin, on découvre quelle est précisément notre adaptateur wifi :

ok c’est bien 1 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter avec chipset Realtek RTL8188CUS, continuez la lecture de l’article avec RTL8188CUS / RTL8192CU

Par contre, si vous avez :

et bien… c’est le même driver donc mêmes instructions !

Configuration du point d’accès hostapd, avec Realtek RTL8192CU  ou Realtek RTL8188CUS

Si vous utilisez un raspberry pi 3, passez à la section suivante !

Malheureusement, hostapd, ne supporte pas ces chipsets; il faut ainsi soit télécharger 1 version d’hostapd avec support du chipset, soit compiler soit même hostapd avec support du chipset.

Soit vous me faites confiance et vous le téléchargez en suivant ce lien.

Ou alors, vous êtes plus courageux (et/ou n’avez pas confiance) et vous téléchargez les sources depuis Realtek, vous devriez obtenir une archive nommée 0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip, une fois dézippée, rendez vous dans wpa_supplicant_hostapd, détarrez wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz, et envoyez son contenu sur votre pi :

Retour sur votre pi, rendez vous vers : ~/wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd afin de compiler hostpad et remplacer la version d’apt avec :

Retour à la configuration d’hostapd

On peut alors configurer hostapd, via /etc/hostapd/hostapd.conf (à créer):

Utilisateurs de Raspberry pi 3 , attention !

Le driver est différent, ainsi que les options de capabilité et le mode bridge doit être activé si vous avez bridgé wlan0 avec eth0 sur br0; voici les options qui différent :

Et on rajoute le chemin vers ce fichier  /etc/default/hostapd

On peut alors tester que tout va bien :

Si vous avez à la place :

C’est que votre binaire hostapd ne supporte pas votre chipset (ou que votre wlan0 nécessite un autre driver que rt1871xdr)

Touche finale

Il suffit de redémarrer tout le monde proprement :

Et vous devriez être capable de connecter en wifi vos ordinateurs, consoles, directement à votre tunnel VPN !

Liens / inspirations