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
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.
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 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.
46 commentaires
bonsoir,
j’ai suivi votre tuto a la lettre en modifiant juste:
auth_algs=0
#wpa=2
#wpa_passphrase=nopassph
#rsn_pairwise=CCMP
et pas d’AP en vu 🙁
Bonsoir,
Je pense qu’il faut décommenter ces lignes et pour le passphrase il faut essayer de le mettre à vide.
Et si ça ne marche pas, il vaut mieux partir sur quelque chose qui marche et le modifier pour ses propres besoins après.
Bonjour,
Je n’ai également aucun hotspot détecté. J’ai pourtant, quant à moi, suivi à la lettre le tuto.
Je ne vois pas d’où ça peut venir parce que je viens d’installer Raspian pour repartir sur qqchose de « propre » justement.
Bonjour,
Je vous propose de regarder les logs de hostapd. Pour ce faire, vous devez remodifier le fichier de démarrage de hostapd en effectuant la commande suivante :
sudo nano /etc/default/hostapd
A l’intérieur, rajoutez la ligne suivante :
DAEMON_OPTS="-dd -t -f /home/pi/hostapd.log"
Voici le détail des arguments :
dd -> pour avoir des logs détaillés
t -> pour avoir le temps
f -> le chemin du fichier qui contiendra les logs.
Une fois cette opération effectuée, vous devez redémarrer le Raspberry Pi et lire le fichier avec :
cat /home/pi/hostapd.log
Vous trouverez sûrement une piste pour résoudre votre problème. Vous pouvez aussi copier les logs sur pastebin et insérer le lien dans un nouveau commentaire, pour partager ce problème avec la communauté.
Bonjour, si veut obtenir le wifi avec mon raspberry je fais comment ?
Bonjour, pouvez-vous être plus spécifique sur votre problème ?
Bonjour
j’ai effectuer cette démarche et ça marche nickel.
Par contre j’ai un problème!!!! Lorsque j’éteint mon raspberry et je coupe l’alim et que je le redémarre le lendemain par exemple, il m’affiche pas le réseau wifi quand je le recherche avec mon téléphone!!! il faut que je connecte de nouveau un écran et un clavier et que je fait l’initialisation des service dnsmasq et hostapd pour que ça remarche et c’est très embêtant par ce qu’il me faut tjs l’écran et le clavier alors que je veux faire une application qui tourne toute seule et que le réseau wifi soit présent tout seul après chaque démarrage du raspberry pi.
Merci d’avance
Bonjour, qu’est-ce que vous entendez par initialiser les services dnsmasq et hostapd ? Quelles sont les commandes que vous exécutez à chaque démarrage pour que cela fonctionne ?
Bonjour, comment obtenir une connexion internet par ce réseau svp ?
Bonjour, en branchant le raspberry Pi à votre box internet en passant par un câble ethernet cela devrait suffire.
Bonjour,
Il suffit de brancher un câble Ethernet à l’arrière du Raspberry Pi et cela marche normalement.
Bonjour, J’ai suivi le tuto à la lettre mais je n’arrive pas à me connecter, je vois bien le réseau mais impossible d’obtenir une ardresse IP…. Vous avez une idée ?
Merci d’avance;
Chris.
Bonjour, c’est un problème de configuration du DHCP. Je vous conseille de reprendre la partie configuration de l’adresse IP statique jusqu’à hostapd pour vérifier si vous n’avez rien oublié.
Si cela ne marche toujours pas pouvez vous copier-coller le résultat de cette commande :
journalctl | grep -Ei ‘dhcp’
Merci beaucoup. Nous vous remercions pour ce tutoriel. Mais on a un soucis. comment éliminer le cable ethernet c’est a dire se connecter a l’interface screenly sans avoir besoin du cable ethernet car sans cable ethernet on dit « Unable to resolve local ip address »
Il faudrait essayer la commande suivante :
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
C’est la même que dans l’article, j’ai juste supprimé la partie
-o eth0
Salut,
Tout d’abord merci pour ce tuto, ça fonctionne nickel.
De mon côté j’ai tout de même dû bien checker le fichier hostapd.conf. Le bon vieux copier / coller ajoute des espaces inutiles en fin de ligne, et les sauts de lignes n’étaient pas non plus « appréciés » 🙂
Juste un petit regret, car j’aime bien comprendre un minimum ce que je fais : les dernières étapes concernant les tables ip, le masquage et le routage ne sont pas forcément évidentes à comprendre du premier coup d’oeil 🙂 Alors que le reste du tuto me paraît clair.
Merci encore.
Hello, J’ai cherché pas mal de temps pourquoi, dans mon cas, je ne voyais pas l’AP avec la config donnée dans le tuto, il m’a fallu rajouter la ligne :
nohook wpa_supplicant
dans le fichier /etc/dhcpcd.conf
et maintenant tout marche !
Merci pour votre retour d’expérience.
Bonjour, petite astuce si comme moi vous avez suivi ce tuto a la lettre et que vous vous retrouvez avec une erreur au moment de redémarrer hostapd :
sudo systemctl start hostapd
l’erreur qui m’étais retourné :
Failed to start hostapd.service: Unit hostapd.service is masked.
Il suffit de démasquer hostapd via :
sudo systemctl unmask hostapd.service
Espérant en aider plus d’uns ! tchousss
Merci beaucoup pour le partage de cette astuce, qui devrait effectivement en aider plus d’un !
Bonjour
J’ai la même config mais le pi limite le nombre de connecté simultanés a 30 – 35 ???
alors que ma table de routage en permet 200 ….
existe il une limite « matérielle » ?
comment je peux régler ce problème qui semble intéresser aussi pas mal de monde ?
j’ai tout essayé !!!
le pbs se fait a la connexion , si un se deconnecte alors le pi admet une connexion supplémentaire ..
Bonjour,
Pour être honnête, je n’ai jamais eu l’occasion de tester les limites de connexion WiFi d’un Raspberry Pi. Je vous conseille de contacter les concepteurs afin d’obtenir plus d’informations sur ce sujet.
Je vous rejoins sur le fait que la réponse intéressera tout le monde 🙂
Bonsoir,
Mon hotspot refuse les connections apres quelques minutes du lancement (« une erreur d’authentification est survenue »)
Aidez moi s’il vous plaît 😉
Bonsoir,
Cela fait un petit moment que j’ai écrit l’article, j’ai déjà eu ce genre de problème. De mémoire, c’est le DHCP qui est mal configuré sur le Raspberry Pi, celui-ci ne transmet pas d’adresse IP valable à votre téléphone par exemple. Je vous conseille de refaire la partie configuration du serveur DHCP.
bonjour
j’ai suivi ton tuto et je vous remerci parceque vous mavez aider a avancer dans mon projet j ai reussi a crée tout mais j’arrive pas a voir de connexion dans mon wlan0
aidez mois svp
Bonjour,
Quand vous dites : « j’arrive pas a voir de connexion dans mon wlan0 », cela signifie-t-il que votre Raspberry Pi n’arrive pas à accéder à internet ?
bonjour non c’est pas ça
quand je me connecte en point acces wlan 0 avec mon portable j ai pas accées a internet avec mon portable
Bonjour,
C’est un problème de routage, il faut refaire les instructions de l’article à partir du titre Ajout du routage. Vous avez peut-être raté une étape ?
Bonjour, merci pour ce tutoriel. Ça fonctionne pour moi. Maintenant, je souhaiterais accéder à internet en passant par ma clé USB 3g. Le Raspberry est bien relié à internet via cette clé mais pas le Hotspot. Comment faire svp?
Bonjour, tout d’abord merci pour ce commentaire. Concernant la clé USB 3G, connaissez-vous son nom dans le système Raspbian ? Par exemple si vous utilisez le port ethernet, c’est eth0.
Avec la commande iwconfig, je vois un autre réseau appelé eth1.
Top, normalement, il suffit de modifier la commande :
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
En mettant le bon réseau :
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Merci, ça marche. Par contre, je dois lancer la commande à chaque démarrage du RPI.
Il faut que tu poursuives le tuto en changeant la commande iptables…
Il faut rejouer le sudo sh -c « iptables » etc.
Bonjour
Help me stp … je vois bien mon réseau WIFI mais je n’ arrive pas à récupérer une adresse IP sur mon téléphone. j’ai bien refais toute la partie DHCP comme tu as dis a quelqu’un plus haut mais je n’arrive pas a trouver mon erreur. Pire quand je fais un ifconfig je m’aperçois que l’adresse de mon wlan0 est 169.254.5.122 …. rien a voir
merci pour ce tuto …
Bonjour,
pouvez-vous copier-coller le contenu de votre fichier /etc/dhcpcd.conf sur le site https://pastebin.com/.
Et le partager dans les commentaires.
Pardon pour la réponse si tardive .. en fait je m’étais trompé dans la config DHCP
merci encore
Bonjour et merci pour le tuto. J’ai un truc qui me rend dingue. A la premiere install tout fonctionne. Apres reboot, je peux me connecter à l »ap mais plus d’accès a internet.
Un sudo iptables -L montre une table vide. Pourtant le fichier /etc/iptables.ipv4.nat existe et semble correcte.
# Generated by xtables-save v1.8.2 on Wed Aug 19 21:03:58 2020
*filter
:INPUT ACCEPT [590:106984]
:FORWARD ACCEPT [131:16892]
:OUTPUT ACCEPT [327:54999]
COMMIT
# Completed on Wed Aug 19 21:03:58 2020
# Generated by xtables-save v1.8.2 on Wed Aug 19 21:03:58 2020
*nat
:PREROUTING ACCEPT [112:10004]
:INPUT ACCEPT [23:2516]
:POSTROUTING ACCEPT [89:7532]
:OUTPUT ACCEPT [1:76]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Aug 19 21:03:58 2020
Si je fais un sudo iptables-restore < /etc/iptables.ipv4.nat à la main, ca ne change rien.
Une idée ?
Philippe
En fait, entre temps j’avais installé openvpn dont j’ai besoin et c est lui qui me casse tout avant même que je m’en serve. Si je le désinstalle je retrouve un fonctionnement normal.
Bonjour,
Avez-vous essayé d’installer open-vpn avec Docker ? J’ai écrit un article sur le sujet : https://les-enovateurs.com/mise-en-place-rapide-dun-serveur-vpn-avec-docker/
Afin de vérifier si cela bloque toujours votre installation.
Jérémy.
Merci pour votre réponse. J’ai fini par trouver. Plein de micro détail à régler qui au bout du compte bloquaient tout. Ca fonctionne maintenant.
Bonjour tuto parfait tout fonctionne .
Mais je voudrais que mon routeur garde le contrôle du DHCP à des fins domotiques .
Peut-on supprimer le DHCP ou le désactiver , afin d’avoir un simple Access Point .
Merci
Bonjour,
Merci pour votre commentaire.
Pour le DHCP, si il est désactivé, les terminaux n’auront pas d’adresse IP et ils ne pourront pas communiquer.
Si cet article vous a plu, partagez-le à votre réseau.
Bonjour,
J’ai suivi votre tuto et tout fonctionne merci.
Le seul petit soucis est que je dois redémarrer manuellement le hotspot :
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq
PUIS :
sudo systemctl start hostapd
sudo systemctl start dnsmasq
Je voudrais savoir comment faire de façon automatisé ET au démarrage de la RPI.
Merci pour votre réponse ^^.
Bonjour,
Merci pour votre commentaire.
Pour automatiser des commandes/tâches sur le RPI.
Il vous suffit d’éditer le fichier : /etc/rc.local et d’y ajouter vos commandes (il y a un exemple dans la partie « Ajout du masquage et de la table d’IP »).
Cordialement,
Jérémy.
merci beaucoup pour votre réponse