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
eth0verswlan1, pour partager la connectivité ethernet. - ainsi que
wlan0verswlan1, 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