Routeur Wifi sur RPi3 b+

rpi-routeur-wifi


Vous avez besoin d'un Point d'Accès Wifi, voici comment utiliser le Raspberry en routeur Wifi

Il nous faut:

Un Raspberry PI3 b+ (Car l'interface Wifi est intégrée)

Une connexion Ethernet sur votre box

Une micro-sd avec Raspbian Strectch Lite (Nous n'avons pas besoin du GUI)

Installer le Raspbian Stretch Lite sur la micro-sd

Configurer le RPi3b+

  • Locale en French
  • Claivier en Azerty
  • zone Wifi = FR

Et valider l'interface SSH


Plan d'adressage réseau

  • IP Eth0 192.168.1.x
  • IP Wlan0 192.168.3.x
  • Plage DHCP 192.168.3.20 à 192.168.3.50

Connexion en SSH

ssh

Se connecter au RPi3b+ en SSH

  • ssh pi@votre_adresse_IP


(Nous utiliserons l'éditeur nano pour toutes les modifications des fichiers de configuration)


Mise à jour

Mettre à jour Raspbian

  • sudo apt-get update
  • sudo apt-get upgrade

Installation de dnsmasq et hostapd

Installation de dnsmasq et hostapd

  • sudo apt-get install dnsmasq hostapd

Arrêt de services dnsmasq et hostapd

On stoppe des services dnsmasq en hostapd

  • sudo systemctl stop dnsmasq
  • sudo systemctl stop hostapd

Configuration du fichier Dhcpcd.conf 

dhcpcd

Configuration du fichier dhcpcd.conf

Configuration de l’adresse IP statique
Editer le fichier dhcpcd.conf

  • sudo nano /etc/dhcpcd.conf
[ctrl]+v pour aller à la fin du fichier

Et ajouter les lignes ci-dessous

  • interface wlan0
  •     static ip_address=192.168.3.1/24

Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x 


Relance du dhcpcd.conf

dhcp-restart

On relance le dhcp

  • sudo service dhcpcd restart


Si message d'erreur, taper la commande ci-dessous

  • sudo systemctl daemon-reload

Sauvegarde du fichier dnsmasq.conf

dsnmasq-save

Copie de sauvegarde du fichier dnsmasq.conf

  • sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.old


Configuration du serveur DHCP

dhcp-plage

Définition de la plage IP dans le fichier dnsmasq.conf

  • sudo nano /etc/dnsmasq.conf

le fichier dnsmasq.conf est vide, ajouter la page dhcp de 192.168.3.2 à 192.168.3.20 (Ou une autre plage IP de votre choix)

  • interface=wlan0      # Use the require wireless interface - usually wlan0
  •   dhcp-range=192.168.3.20,192.168.3.50,255.255.255.0,24h


Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x 


Sur la ligne dhcp-range=début_plage_IP,fin_plage_IP,masque_sous_réseau,24h

  • 12h = bail de 12 heures
  • 24h = bail de 24 heures
  • infinite = bail infini


Configuration du point d’accès avec hostapd

hostapd

Configuration du Point d'Accès Wifi

Configuration du fichier hostapd.conf

  • sudo nano /etc/hostapd/hostapd.conf

le fichier est vide, ajouter les lignes ci-dessous

  • # This is the name of the WiFi interface we configured above
  • interface=wlan0
  • # Use the nl80211 driver with the brcmfmac driver
  • driver=nl80211
  • # This is the name of the network
  • # NOM DU WIFI
  • ssid=RPI-WIFI
  • # Use the 2.4GHz band
  • hw_mode=g
  • # Use channel 6
  • channel=6
  • # Enable 802.11n
  • ieee80211n=1
  • # Enable WMM
  • wmm_enabled=1
  • # Enable 40MHz channels with 20ns guard interval
  • ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
  • # Accept all MAC addresses
  • macaddr_acl=0
  • # Use WPA authentication
  • auth_algs=1
  • # Require clients to know the network name
  • ignore_broadcast_ssid=0
  • # Use WPA2
  • wpa=2
  • # Use a pre-shared key
  • wpa_key_mgmt=WPA-PSK
  • # The network passphrase
  • # MOT DE PASSE DU WIFI
  • wpa_passphrase=raspberry
  • # Use AES, instead of TKIP
  • rsn_pairwise=CCMP

Mettre votre mot de passe Wifi (Plus le mot de passe est compliqué, plus il sera difficile de le pirater) 

Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x 



Test du fichier hostapd.conf

ap-enabled

Tester le fichier hostapd.conf

  • sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

Si OK = wlan0: AP-ENABLED
[ctrl]+c pour quitter

Si NOK = Vérifier le contenu du fichier hostapd.conf


Utilisation du fichier hostapd.conf

hostapd

Utilisation du fichier hostapd.conf au démarrage

  • sudo nano /etc/default/hostapd

On cherche la ligne :  
#DAEMON_CONF=""

On supprime le #
On modifie la ligne comme ci-dessous

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x 


Redémarrage de hostapd et dnsmasq

Redémarrage de des services hostapd et dnsmasq

  • sudo systemctl start hostapd
  • sudo systemctl start dnsmasq


Ajout du routage

ipv4

Ajout du routage

  • sudo nano /etc/sysctl.conf

Rechercher la ligne 
#net.ipv4.ip_forward=1
Supprimer le #

Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x


Ajout du masquage et de la table d’IP

Ajout du masquage et de la table d’IP

  • sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE
  • sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"


Modification du fichier rc.local

rc.local

Modification du fichier rc.local

  • sudo nano /etc/rc.local

Il faut rajouter la ligne suivante juste avant le “exit 0” :
iptables-restore < /etc/iptables.ipv4.nat


Sauvegarder et quitter l'éditeur
[ctrl]+o [Enter]
[ctrl]+x


Redémarrage et test du wifi

rpi-wifi

Redémarrage du Raspberry PI3 b+

  • sudo reboot


Avec un ordinateur ou samartphone
on doit voir le routeur wifi RPI-WIFI

Sélectionner le Wifi RPI-WIFI

Saisir votre mot de passe


Voilà vous étes connecté !!!



Autres vérifications

service

Voici quelques éléments que vous pouvez vérifier

  • ifconfig      (l'interface wlan0 doit avoir l'adresse IP 192.168.3.1)


  • service --status-all

Les services

  • dhcpcd
  • dnsmasq
  • hostapd

doivent être   ENABLE   + 




Informations supplementaires

rfkill


Information de Samuel Saint-Omer

Blocage du Wlan

(Je n'ai jamais rencontré le problème décrit par Samuel, mais voici sa solution)


Au moment de test du fichier hostapd.conf

Il se peut que  le wlan soit bloqué par défaut  :

rfkill:WLAN soft blocked


On peut lister avec  rfkill list all 

0: phy0: Wireless LAN
    Soft blocked: yes
    Hard blocked: no

Pour fixer le problème :

rfkill unblock all 

Bien-sûr on peut remplacer all par l'élément en particulier 

Au moment du redémarage de l'hostapd (vers la fin) il peut subvenir une erreur : 

Failed to start hostapd.service: Unit hostapd.service is masked


ça peut être résolu avec un unmask et enable
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd


Merci à Samuel pour cette information