Convertir le raspberry pi en routeur wifi
Ce guide est grandement inspiré de cet article en anglais.
Nous utilisons le raspberry pi 3 model b
qui possède un wifi intégré sur l’interface wlan0
et un wifi dongle sur l’interface wlan1
.
Configuration d’un raspberry Pi en tant que routeur réseau
apt-get install isc-dhcp-server bind9
Le serveur DHCP va donner les adresses IP aux compute-modules qui n’en ont pas
Le serveur DNS (bind9
) va associer un nom à une IP (en local uniquement)
Interfaces réseaux
On configure 2 interfaces pour le wifi. La première pour le wifi intégré, qu’on laisse dans son fonctionnement par défaut, normalement, pas besoin de toucher, on doit avoir ça :
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Pour modifier les enregistrements de réseaux connus, il suffit de modifier le fichier /etc/wpa_supplicant/wpa_supplicant.conf
(se référer à la doc officielle RaspberryPi.)
La seconde interface est celle du routeur wifi, qu’on configure de manière static
sur l’adresse IP 192.168.93.1
, ce qui donne ça :
allow-hotplug wlan1
iface wlan1 inet static
address 192.168.93.1
netmask 255.255.255.0
DHCP
La configuration du DHCP se fait dans le fichier /etc/dhcp/dhcpd.conf
. On l’édite :
sudo vim /etc/dhcp/dhcpd.conf
On ajoute les lignes suivantes pour constituer un sous-réseau, avec une plage d’adresses IP. Les plages IP que l’on a arbitrairement choisies pour DHCP vont de 192.168.93.10
à 192.168.93.50
. Le masque de sous-réseau est lui sur 192.168.93.*
.
subnet 192.168.93.0 netmask 255.255.255.0 {
range 192.168.93.10 192.168.93.50;
option broadcast-address 192.168.93.255;
option routers 192.168.93.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "polyptyque";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
Les DNS 8.8.8.8
et 8.8.4.4
correspondent aux DNS de google.
Ensuite on modifie la configuration du serveur DHCP :
sudo vim /etc/default/isc-dhcp-server
on ajoute simplement l’interface wlan1
:
INTERFACES="wlan1"
NAT (Network Address Translation
)
j’ai appliqué le transfert d’adresses via NAT.
On active NAT
Ouvrir /etc/sysctl.conf
avec :
sudo vim /etc/sysctl.conf
Ajouter à la fin
net.ipv4.ip_forward=1
Puis lancer dans le terminal
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
redémarrer le réseau
sudo ifdown wlan1
sudo ifup wlan1
On va ensuite rediriger les requêtes d’une interface réseau vers un autre.
- de
eth0
verswlan1
, pour partager la connectivité ethernet. - ainsi que
wlan0
verswlan1
, pour partager la connectivité wifi.
avec les commandes suivantes pour eth0
:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
et pour le wlan0
:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
pour sauvegarder cette configuration NAT :
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
et rajouter à la fin de /etc/network/interfaces
:
up iptables-restore < /etc/iptables.ipv4.nat
Configuration du point d’accès, via HostAPD
On va installer le logociel HostAPD
. Il faut vérifier que votre dongle wifi est bien de type RTL8188
et utiliser la commande suivante.
wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
sudo make
sudo make install
Adresses matérielles
les dungle wifi des computes modules sont les suivants. Chaque dongle wifi est numéroté, chaque CMIO, chaque CM de 1 à 9 :
CM1 ec:f0:0e:4b:a3:cc
CM2 ec:f0:0e:4b:86:a6
CM3 ec:f0:0e:4b:83:94
CM4 ec:f0:0e:4b:c2:76
CM5 ec:f0:0e:4b:ac:78
CM6 ec:f0:0e:4b:e4:2e
CM7 ec:f0:0e:4b:9e:4e
CM8 ec:f0:0e:4b:6a:af
CM9 ec:f0:0e:4b:9d:6f
le master a les adresses suivantes
MASTER wlan0 b8:27:eb:e0:c1:e8
MASTER wlan1 ec:f0:0e:4b:e5:fd
Téléphone
07 69 97 70 49
Configuration de HostAPD
Afin de paramétrer le point d’accès wifi, on édite le fichier de configuration
sudo vim /etc/hostapd/hostapd.conf
Voici ce qu’on a configurer (le mot de passe est changé !).
# Basic configuration
interface=wlan1
ssid=polyptyque
channel=11
#bridge=br0
# WPA and WPA2 configuration
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=LeMotDePasse
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# Hardware configuration
driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek
Démarrage des services
Il ne reste plus qu’à démarrer manuellement les services.
sudo service isc-dhcp-server start
sudo service hostapd start
Pour ne pas devoir redémarrer ces services à chaque démarrage du rPi, exécuter ces commandes :
sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable
Est-ce que le wifi est visible
Cette commande permet depuis le rPi de scanner les réseaux wifi disponibles et d’obtenir des informations sur ceux-ci.
sudo iwlist wlan0 scan
on obtient des résulats de ce type pour notre routeur :
Cell 17 - Address: EC:F0:0E:4B:E5:FD
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=70/70 Signal level=-5 dBm
Encryption key:on
ESSID:"polyptyque"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000000000000
Extra: Last beacon: 40ms ago
IE: Unknown: 000A706F6C79707479717565
IE: Unknown: 010882848B960C121824
IE: Unknown: 03010B
IE: Unknown: 050400010000
IE: Unknown: 2A0104
IE: Unknown: 32043048606C
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: Unknown: 2D1A0C001FFF00000000000000000000000000000000000000000000
IE: Unknown: 3D160B000000000000000000000000000000000000000000
IE: Unknown: DD180050F2020101800003A4000027A4000042435D0062322E00