Créer un hotspot WiFi rapidement avec un Raspberry Pi !
Pourquoi réaliser une borne WiFi ?
Pour contrôler un Raspberry Pi avec un téléphone, deux solutions. Soit votre téléphone fait office de borne Wifi : quand vous branchez votre Raspberry Pi, il se connecte automatiquement à votre téléphone. Soit le Raspberry Pi fait office de borne Wifi et c’est votre téléphone qui se connecte au Raspberry Pi. J’ai choisi la solution numéro 2… car j’ai trouvé ça plus logique. En plus, je pourrai à terme installer une carte Sim pour diffuser Internet dans ma voiture (pour les enfants, les amis ou si je fais du co-voiturage). On pourrait même faire une Lan en roulant ! Pour ce qui ne connaissent pas le terme, cela signifie jouer en réseau à des jeux dans un même lieu connecté à une même box internet.
Pré-requis
Il vous faut :
- un Raspberry Pi
- un écran
- un clavier
- une souris
Concernant le système, les opérations ont été réalisées avec une version de Raspbian Stretch Lite datant du 13 mars 2018. Cette même version sera utilisée dans le prochain tuto, où nous transformerons notre Raspberry Pi en un puissant lecteur MP3.
Pour télécharger Raspbian Stretch Lite, suivez le lien. J’ai choisi cette version car il n’y a pas besoin d’interface utilisateur (qui rend le Raspberry Pi plus lent). Si vous rencontrez des soucis pour l’installation du système, rappelez-vous que les commentaires sont là pour ça.
Vous devez ensuite activer le SSH, ou brancher le Raspberry Pi à un écran par HDMI. N’oubliez pas de rajouter le câble Ethernet à votre Raspberry Pi afin d’accéder à internet (vous aurez besoin de télécharger deux-trois trucs).
Installation des outils
A partir de cet étape, je considère que vous avez accès au Raspberry Pi en SSH ou directement avec un clavier / souris et écran.
Commencçons par le grand classique de chaque projet sur un Raspberry Pi :
sudo apt-get update sudo apt-get upgrade
Résultat :
Objectif : mettre la version de notre Raspberry Pi à jour.
Installation de dnsmasq et hostapd
Pour ceux qui connaissent le vocabulaire, dnsmasq permet de gérer le DNS du réseaux local. Quant à hostapd, il permet de faire apparaître un point d’accès avec la gestion de la clé WPA pour que votre téléphone puisse s’y connecter.
Pour installer ces deux composants, vous devez saisir les commandes suivantes :
sudo apt-get install dnsmasq hostapd iptables
Résultat :
N’oubliez pas de taper sur la touche Y puis Entrée pour valider l’installation de ces composants.
Paramétrage dnsmasq et hostapd
Afin de configurer ces deux outils sans encombre, on va les arrêter durant l’opération 😀.
Pour arrêter ces services, vous devez saisir les commandes suivantes :
sudo systemctl stop dnsmasq sudo systemctl stop hostapd
Configuration de l’adresse IP statique
Pour que notre système fonctionne, il faut allouer au Raspberry Pi une adresse IP fixe qui ne changera pas, et qui ne sera pas prise par un autre appareil.
Saisissez la commande suivante :
sudo nano /etc/dhcpcd.conf
Résultat :
Rendez-vous tout en bas du fichier afin d’écrire deux lignes (petite astuce pour descendre rapidement : vous pouvez faire un CTRL+V).
Ecrivez les deux lignes suivantes :
interface wlan0 static ip_address=192.168.4.1/24
Votre écran devrait ressembler au mien :
Pour sauvegarder : CTRL + X suivi d’un Y, puis Entrée.
Vérification du bon fonctionnement de la configuration
Pour vérifier que notre modification marche, on doit redémarrer le service en charge du DHCP (l’adressage des adresses IP). Pour ceci, tapez la commande suivante :
sudo service dhcpcd restart
Résultat :
Il se peut qu’au lancement de la commande « sudo service dhcpcd restart », vous receviez un avertissement indiquant que le fichier qui gère le DHCP a changé, et qu’il faut effectuer une commande pour rafraîchir le système. Ne faites pas la même erreur que moi : n’oubliez pas le « sudo ». Donc si ça vous arrive, lancez la commande suivante :
sudo systemctl daemon-reload
Configuration du serveur DHCP
Le serveur DHCP alloue une adresse IP aux différents appareils qui vont se connecter au Raspberry Pi.
On doit dire au serveur quelle est la plage d’adresses IP disponibles, pour qu’il puisse générer des adresses IP comme 192.168.4.10.
Pour ce faire, on doit modifier un fichier qui se nomme dnsmasq. Mais auparavant, réalisez une sauvegarde. On ne sait jamais : un mauvais caractère peut se glisser dans le fichier.
Pour cela on va faire un :
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.old
Puis nous allons éditer le fichier en effectuant un :
sudo nano /etc/dnsmasq.conf
Dans ce fichier vide, on insère les deux lignes suivantes :
interface=wlan0 # Use the require wireless interface - usually wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
Voici la « traduction » du fichier de configuration. On dit au programme qu’il peut allouer une adresse IP entre 192.168.4.2 et 192.168.4.20 avec une rotation toutes les 24h, c’est-à-dire qu’un appareil possède l’adresse IP pendant 24h. Celle-ci sera changée au bout de 24h, mais ne vous inquiétez pas : c’est transparent pour l’utilisateur.
Configuration du point d’accès avec hostapd
On va éditer un fichier de configuration. Le but : expliquer au système quel est le nom de la « box », la clé WPA (le mot de passe) ainsi que d’autres petits éléments. Pour cela, on va exécuter la commande suivante :
sudo nano /etc/hostapd/hostapd.conf
A l’intérieur du fichier, écrivvez les lignes suivantes :
# 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 ssid=NovaFi # 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 wpa_passphrase=les_enovateurs # Use AES, instead of TKIP rsn_pairwise=CCMP
J’attire votre attention sur les lignes 8 et 41, respectivement :
# This is the name of the network ssid=NovaFi # The network passphrase wpa_passphrase=les_enovateurs
Vous pouvez insérer le nom de votre propre box, c’est le ssid. Et vous pouvez taper le WPA (mot de passe) de votre choix : c’est le wpa_passphrase.
Veuillez à mettre une clé WPA suffisament longue.
Puis vous faites un CTRL + X suivi d’un Y pour sauvegarder votre fichier.
Maintenant, on informe hostapd qu’il doit se servir du fichier de configuration qu’on a créé. Pour cela, on va éditer le fichier suivant :
sudo nano /etc/default/hostapd
Et on cherche la ligne :
#DAEMON_CONF=""
Il faut supprimer le « # » et ajouter le lien vers le fichier qu’on a modifié plus haut : /etc/hostapd/hostapd.conf.
Votre ligne doit maintenant ressembler à ça :
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Résultat sur la console :
Redémarrage de hostapd et dnsmasq
Vous connaissez déjà les commandes que je vais vous faire taper. Ce sont les mêmes qu’au début, sauf qu’au lieu de faire stop on va faire start :
sudo systemctl start hostapd.service sudo systemctl start dnsmasq
Ajout du routage
On va éditer encore deux autres fichiers, pour le premier on va faire un :
sudo nano /etc/sysctl.conf
Résultat en console :
Vous allez devoir décommenter la ligne ci-dessous en enlevant le # :
net.ipv4.ip_forward=1
Ajout du masquage et de la table d’IP
Exécutons une première commande :
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Celle-ci va générer la table d’adresses IP. Il faut la sauvegarder pour la recharger à chaque démarrage :
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
Puis on édite notre dernier fichier du tutoriel, en effectuant un :
sudo nano /etc/rc.local
Il faut rajouter la ligne suivante juste avant le « exit 0 » :
iptables-restore < /etc/iptables.ipv4.nat
Vous devriez obtenir ce résultat :
Encore une fois, vous devez faire un CTRL+X puis un Y.
Redémarrage et test
Et voilà, la partie moyennement sympa est terminée. Pour valider tous ces changements, on va faire un :
sudo reboot
Dès que le Raspberry Pi a redémarré, prenez votre smartphone, activez le Wi-fi et regardez si le nom de votre box est bien présent :
Votre smartphone va vous demander le code WPA que vous avez saisi précédemment dans le fichier.
Si tout fonctionne bien, vous devriez avoir ce résultat :
Mon téléphone a détecté qu’il n’avait pas internet avec ce réseau, mais il a quand même pu se connecter au Raspberry Pi. Pour moi c’est parfait : mon objectif est de pouvoir contrôler le Raspberry Pi avec mon téléphone par le Wifi. Si vous souhaitez savoir comment obtenir une connexion internet par ce réseau, faites-le moi savoir. Je publierai un article sur le sujet.
J’espère que ce long tutoriel vous servira de base pour de nombreux projets. J’ai utilisé le site raspberrypi.org comme source pour rédiger ce tutoriel. Si des infos vous manquent, envoyez-nous un message en commentaire ou par mail. A bientôt pour un prochain article : vous y apprendrez à transformer le Raspberry PI en un puissant lecteur MP3.