[Tuto] Hostspot OpenVPN sur un Raspberry

Vous possédez un Raspberry PI et vous savez pas quoi en faire ? 🙂
Je vous propose de mettre en place un point d’acces VPN mobile.

L’ensemble des commandes doivent être exécuter avec les privilèges root :

$ sudo -s
password :
#

Pré requis :
1 – Raspberry PI
2 – Une dongle Wifi compatible
3 – Un serveur OpenVPN ou un abonnement chez presta

Pour vous monter un serveur OpenVPN, vous pouvez consulter ce tutoriel.
Pour ma part j’utilise cette dongle WiFi qui est entièrement compatible sur le Raspberry et pas chère 😀

1 – Installation du pilote WiFi et configuration réseaux
2 – Serveur DHCP
3 – Installation de Hostapd
4 – Installation d’OpenVPN client
5 – Configuration du NAT

.

1 – Installation du pilote WiFi et configuration réseaux

Nous allons dans un premier temps préparer notre Raspberry afin d’activer l’interface Wlan0 et la configurer avec une adresse IP fixe. Pour l’interface eth0, nous la laisserons en DHCP puis nous ferons du NAT pour translater les adresses IP privés du Raspberry par l’IP public de notre serveur OpenVPN.

# aptitude install firmware-atheros
# vim /etc/network/interfaces

## Network Configuration ##

# Interface local
auto lo
iface lo inet loopback

# Interface eth0 - ethernet de la Raspberry
allow-hotplug eth0
iface eth0 inet dhcp

# Interface wlan0 - Dongle WiFi de la Raspberry
allow-hotplug wlan0
iface wlan0 inet static
        address 192.168.0.254
        netmask 255.255.255.0

Pour être sur que la configuration soit bien pris en compte, redémarrer le Raspberry :

# reboot

.

2 – Serveur DHCP

Mettons maintenant en place un serveur DHCP qui va distribuer des configurations réseaux (IP, Masque et Passerelle) aux hôtes connectés à la borne WiFi.

Pour installer le paquet isc-dhcp-server, comme d’habitude :

# aptitude install isc-dhcp-server

Modifier le contenu du fichier dhcpd.conf avec les paramètres suivants :

# vim /etc/dhcp/dhcpd.conf

ddns-update-style none;
option domain-name "piratebox.lan";
option domain-name-servers 80.67.169.12, 80.67.188.188;
default-lease-time 86400;
max-lease-time 604800;
authoritative;

# Réseau 192.168.0.0/24 wlan0
subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.5 192.168.0.200;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.254;
}

Redémarrer le service :

# service isc-dhcp-server restart

.

3 – Installation de Hostapd

Nous allons maintenant installer le Hospot WiFi, pour cela nous utiliserons hostapd, qui vous le verrez est très complet et très simple à mettre en place.

# aptitude install hostapd

Une foi installé, créez le fichier hostapd.conf avec les paramètres suivants, à adapter :

# vim /etc/hostapd/hostapd.conf

# Interface de la carte WiFi
interface=wlan0

# Le driver uilisé
driver=nl80211

# Activation du 802.11n
ieee80211n=1

# SSID
ssid=SSID

# Mode de diffusion
hw_mode=g

# Le cannal uilisé
channel=6

# Filtrage MAC
macaddr_acl=0
auth_algs=1

# Utilisaiton de WPA 3
wpa=3

# Clé WPA
wpa_passphrase=CLE_WPA

# Type de chiffrement
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

# 802.11n
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
ht_capab=[HT40-][HT40+][SHORT-GI-40][DSSS_CCK-40]

Pour démarrer hostapd automatiquement au demarrage, il faut lui indiquer le chemin du fichier de configuration.

# vim /etc/default/hostapd

# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS="-d"

Si vous voulez avoir plus de log, vous pouvez décommenter la dernière ligne. Je ne l’ai pas fait pour préserver ma carte SD des écritures provenants des logs.

# hostapd -d /etc/hostapd/hostapd.conf

Vous devez normalement voir le SSID de votre point d’acces et vous y connectez.

# service hostapd start

.

4 – Installation d’OpenVPN client

Il reste plus qu’a installer openvpn en tant que client sur le Raspberry.

# aptitude install openvpn

Vous devez copier les fichiers de votre configuration et les certificats dans le dossier /etc/openvpn/
Voici son contenu :

– ca.crt
– ta.key
– votrecle.crt
– votrecle.key
– votreconf.ovpn

Vous pouvez tester la configuration d’OpenVPN, et voir les logs en directes, ce qui permet de voir d’enventuelles erreurs, c’est assez pratique 🙂 :

# openvpn --config /etc/openvpn/votreconf.ovpn

Si votre configuration d’OpenVPN c’est bien dérouler, vous pouvez lancer OpenVPN automatiquement au démarrage, ainsi lorsque que vous brancher votre Raspberry, vous n’avez rien à faire, mis à part de se connecter au point d’accès et hop vous êtes en VPN 🙂

# cp /etc/openvpn/votreconf.ovpn /etc/openvpn/votreconf.conf

.

5 – Configuration du NAT

Il va maintenant faire du NAT pour que les IPs du réseau WiFi soient translaté à l’IP de l’interface externe de tun0. Nous remarquerons que le NAT se fera d’IP privée à IP privée, ce que n’es pas courant.
Réseau WiFi –> NAT –> tun0 –> NAT –> eth0 (interface WAN du serveur)

iptables -t nat -A POSTROUTING -o tun0 -s PrefixIPv4/Masque -j MASQUERADE
ip6tables -t nat -A POSTROUTING -o tun0 -s PrefixIPv6/Masque -j MASQUERADE

Lorsque vous vous connecterez sur la borne WiFi de votre Raspberry, vous serez donc en VPN, peut être utile pour se rendre anonyme ou contourner certains proxy et filtrage 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *