━━━ Configuration d'un point d'accès ━━━
Nous parlons d'un point d'accès avec un port Ethernet eth0 .
Si vous voulez un point d'accès avec une connexion client wlan0 à un autre réseau wifi (répéteur wlan), regardez le point d'accès comme routeur / répéteur WiFi, en option avec pont .
Il est possible de configurer Raspbian Stretch comme point d'accès wifi sans installer de logiciel supplémentaire. Tous les composants nécessaires sont disponibles: la mise en réseau, le serveur DHCP et le pontage sont fournis avec systemd-networkd et le wifi peut être configuré avec wpa_supplicant . La connexion de deux interfaces eth0 et wlan0 peut se faire par routage ou par pontage. Ci-dessous d'abord la configuration pour une installation rapide, puis les détails. Nous devons d'abord passer à systemd-networkd .
Testé avec
Raspbian Buster Lite 2019-09-26 sur un Raspberry Pi 4B mis à jour le 2020-01-18.
Mises à jour effectuées avec sudo apt update && sudo apt full-upgrade && sudo reboot
.
Vous trouverez ici la dernière révision testée des versions précédentes de Raspbian .
♦ Configuration générale
Passez à systemd-networkd
Pour des informations détaillées, consultez (1) et Comment configurer la résolution de noms avec systemd-networkd . Ici seulement en bref. Exécutez ces commandes:
# deinstall classic networking
rpi ~$ sudo -Es
rpi ~# apt --autoremove purge ifupdown dhcpcd5 isc-dhcp-client isc-dhcp-common
rpi ~# rm -r /etc/network /etc/dhcp
# setup systemd-resolved
rpi ~# apt --autoremove purge avahi-daemon
rpi ~# apt install libnss-resolve
rpi ~# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
rpi ~# systemctl enable systemd-resolved.service
# enable systemd-networkd
rpi ~# systemctl enable systemd-networkd.service
Configurer wpa_supplicant comme point d'accès
Configurer wpa_supplicant comme point d'accès créer ce fichier avec vos paramètres pour country=
, ssid=
, psk=
et peut - être frequency=
. Vous pouvez simplement copier et coller ceci dans un bloc sur votre ligne de commande en commençant par cat
et en incluant les deux EOF (le délimiteur EOF n'obtiendra pas une partie du fichier):
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="RPiNet"
mode=2
frequency=2437
#key_mgmt=NONE # uncomment this for an open hotspot
# delete next 3 lines if key_mgmt=NONE
key_mgmt=WPA-PSK
proto=RSN WPA
psk="password"
}
EOF
rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
rpi ~# systemctl disable wpa_supplicant.service
rpi ~# systemctl enable [email protected]
Configuration générale terminée. Retourner.
♦ Configuration d'un point d'accès autonome
Exemple pour cette configuration:
wifi
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0)
\ /
(dhcp) 192.168.4.1
Faire "Configuration générale" puis créez le fichier suivant pour configurer wlan0 . Nous n'avons que le point d'accès. Aucun périphérique Ethernet n'est configuré.
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
EOF
Si vous le souhaitez, redémarrez.
C'est ça.
Sinon, continuez, pas besoin de redémarrer pour le moment.
♦ Mise en place d'un point d'accès et avec eth0, sans routage
Exemple pour cette configuration:
|
wifi | wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / | \ /
(dhcp) 192.168.4.1 | (dhcp) 192.168.50.1
Installer
Faites "Configuration d'un point d'accès autonome" puis créez le fichier suivant pour configurer eth0 .
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
EOF
Redémarrez.
C'est ça.
Détails
L'interface eth0 est connectée avec un câble Ethernet au routeur Internet et obtient sa configuration par DHCP à partir du routeur Internet. Ce n'est pas un problème de lui donner une adresse IP statique avec par exemple Address=192.168.50.2
au lieu deDHCP=yes
.
Sans routage, vous ne pouvez pas accéder à Internet avec le téléphone portable. Vous ne pouvez y accéder qu'à partir du RPi lui-même pour obtenir des mises à jour ou quelque chose du genre.
♦ Mise en place d'un point d'accès et avec eth0, avec NAT (recommandé)
Exemple pour cette configuration:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \
(dhcp) 192.168.4.1 (dhcp)
Installer
Faites "Configuration générale" puis créez les fichiers suivants pour configurer wlan0 et eth0 . Si vous avez essayé l'une des configurations précédentes, vous pouvez simplement remplacer les deux fichiers. Assurez-vous que vous utilisez un sous-réseau différent pour le point d'accès que celui du routeur. Dans cet exemple, le routeur n'utilise pas le sous-réseau 192.168.4.0/24. Si vous avez besoin d'un autre sous-réseau, changez simplement la ligne d'adresse, par exemple Address=192.168.5.1/24
.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
# IPMasquerade is doing NAT
IPMasquerade=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
IPForward=yes
EOF
Redémarrez.
C'est ça.
Détails
Si vous n'avez pas accès au routeur Internet, vous pouvez le simuler avec NAT (traduction d'adresse réseau) pour dire que tous les paquets proviennent de votre RasPi AP. Mais ce n'est pas un routage propre et a des limites. Les clients sur le sous-réseau du routeur ne peuvent pas se connecter aux clients sur le wifi. Mais dans la plupart des cas, cela n'est pas nécessaire, cette configuration est donc recommandée car elle simplifie la configuration. Si vous devez vous connecter aux clients wifi à partir du réseau de routeurs, vous devez utiliser le routage complet comme décrit dans la section suivante.
♦ Mise en place d'un point d'accès et avec eth0, avec routage
Exemple pour cette configuration:
wifi wired wan
mobile-phone <~.~.~.~.~> (wlan0)RPi(eth0) <---------> router <---> INTERNET
\ / \ /
(dhcp) 192.168.4.1 192.168.50.2 192.168.50.1
Installer
Faites "Configuration générale" puis créez les fichiers suivants pour configurer wlan0 et eth0 . Si vous avez essayé l'une des configurations précédentes, vous pouvez simplement remplacer les deux fichiers. Assurez-vous que vous utilisez différents sous-réseaux pour le point d'accès et le réseau du routeur. Nous devons utiliser des adresses IP statiques car nous devons les utiliser comme passerelles.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.4.1/24
MulticastDNS=yes
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF
rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Address=192.168.50.2/24
Gateway=192.168.50.1
DNS=84.200.69.80 1.1.1.1
IPForward=yes
EOF
Redémarrez.
Pour que le routage fonctionne correctement, vous devez définir un itinéraire statique dans votre routeur Internet afin qu'il puisse trouver l'itinéraire pour les paquets à venir sur RasPi vers les clients connectés par wifi au point d'accès. Sur la plupart des routeurs Internet, vous pouvez définir un itinéraire statique, mais la façon de procéder varie d'un modèle à l'autre. A vous de le découvrir. Par exemple, votre RasPi eth0 interface a l'adresse IP statique 192.168.50.2. Ensuite, sur votre routeur, la passerelle (saut suivant) est 192.168.50.2, le réseau de destination est 192.168.4.0/24 (ou 192.168.4.0 masque de réseau 255.255.255.0).
Cela signifie pour le routeur Internet: "envoyer tous les paquets appartenant au sous-réseau 192.168.4.0/24
(réseau de destination d'AP) au routeur suivant sur mon sous-réseau, le RasPi AP 192.168.50.2
(passerelle). Il sait où aller."
C'est ça.
♦ Mise en place d'un point d'accès avec un pont
Exemple pour cette configuration:
RPi
wifi ┌──────bridge──────┐ wired wan
mobile-phone <.~.~.~> │(wlan0) br0 (eth0)│ <-------> router <-----> INTERNET
\ | / DHCP-server
(dhcp (dhcp 192.168.50.1
from router) from router)
Si vous avez déjà un réseau Ethernet avec serveur DHCP et routeur Internet et que vous souhaitez l'étendre avec un point d'accès wifi mais avec les mêmes adresses IP, vous utilisez un pont. Ceci est souvent utilisé comme liaison montante vers un routeur.
Installer
Effectuez "Configuration générale" puis créez les trois fichiers suivants pour configurer les interfaces réseau. Si vous avez essayé l'une des configurations précédentes, vous pouvez simplement supprimer tous les fichiers /etc/systemd/network/
sauf 99-default.link
s'ils sont présents. Les adresses IP sont des exemples. Vous devez utiliser le vôtre.
rpi ~$ sudo -Es # if not already executed before
rpi ~# cat > /etc/systemd/network/02-br0.netdev <<EOF
[NetDev]
Name=br0
Kind=bridge
EOF
rpi ~# cat > /etc/systemd/network/04-br0_add-eth0.network <<EOF
[Match]
Name=eth0
[Network]
Bridge=br0
EOF
rpi ~# cat > /etc/systemd/network/12-br0_up.network <<EOF
[Match]
Name=br0
[Network]
MulticastDNS=yes
DHCP=yes
# to use static IP uncomment these and comment DHCP=yes
#Address=192.168.50.60/24
#Gateway=192.168.50.1
#DNS=84.200.69.80 1.1.1.1
EOF
Maintenant, nous devons dire à wpa_supplicant d'utiliser un pont. Nous le faisons en modifiant son service avec:
rpi ~# systemctl edit [email protected]
Dans l'éditeur vide, insérez ces instructions, enregistrez-les et quittez l'éditeur:
[Service]
ExecStartPre=/sbin/iw dev %i set type __ap
ExecStartPre=/bin/ip link set %i master br0
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0
ExecStopPost=-/bin/ip link set %i nomaster
ExecStopPost=-/sbin/iw dev %i set type managed
Redémarrez.
C'est ça.
Détails
Nous devons dire à wpa_supplicant que son interface wlan0 est esclave d'un pont. Sinon, il rejettera la connexion du client avec un «mot de passe incorrect» signifie que la négociation de clé ne fonctionne pas. Lorsque nous disons à / sbin / wpa_supplicant avec l'option -dbr0
d'utiliser un pont pour wlan0, l'interface doit déjà être membre du pont. C'est ce que nous faisons avec le fichier de dépôt (superposition) pour le service wpa_supplicant . L'instruction vide ExecStart=
supprime l'ancienne entrée. Sinon, vous avez deux lignes ExecStart=
et wpa_supplicant démarre deux fois. L'original ExecStart=
avec lequel vous pouvez voir systemctl cat [email protected]
.
Normalement, le routeur auquel vous êtes connecté avec le câble Ethernet a un serveur DHCP activé. Le pont est également transparent pour les requêtes DHCP des stations (périphériques connectés au point d'accès), vous n'avez donc pas à vous soucier de la configuration de ses interfaces avec les adresses IP et les options. Le routeur le servira.
excursus:
Mais si le routeur n'a pas de serveur DHCP, vous pouvez en configurer un sur le RasPi. systemd-networkd a des options pour configurer son serveur DHCP intégré mais le problème est que systemd-networkd suppose qu'il s'exécute sur le routeur lui-même et ce n'est pas vrai dans ce cas. Il servira de mauvaises options aux stations, en particulier l' option routeur . Il n'y a aucun moyen de le configurer. Nous devons donc installerdnsmasq
dans ce cas qui peut être configuré selon les besoins. Installez-le et configurez-le avec (par exemple, utilisez vos propres adresses IP):
rpi ~$ sudo -Es
rpi ~# apt install dnsmasq
rpi ~# systemctl stop dnsmasq
rpi ~# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
rpi ~# cat > /etc/dnsmasq.conf <<EOF
interface=br0
dhcp-range=192.168.50.128,192.168.50.164,255.255.255.0,24h
dhcp-option=option:router,192.168.50.1
dhcp-option=option:dns-server,8.8.8.8,1.1.1.1
EOF
rpi ~# systemctl start dnsmasq
rpi ~# exit
rpi ~$
Dans cet exemple, les adresses IP 192.168.50.128 à 192.168.50.164 sont réservées à donner aux stations. Pour les autres adresses IP statiques, utilisez-en une en dehors de ce pool, ainsi que l'adresse IP du pont lui-même.
♦ Optimisation
Au démarrage de wpa_supplicant, vous obtenez principalement ces messages dans le journal:
wpa_supplicant[427]: random: Cannot read from /dev/random: Resource temporarily unavailable
wpa_supplicant[427]: random: Only 12/20 bytes of strong random data available from /dev/random
wpa_supplicant[427]: random: Not enough entropy pool available for secure operations
wpa_supplicant[427]: WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
Ce n'est pas un gros problème. wpa_supplicant a besoin de nombres aléatoires pour générer des clés de chiffrement. Cela se fait un peu lentement, il faut donc attendre. Heureusement , le Raspi a une construction en T rue R Andom N mbre G enerator (TRNG). Nous pouvons l'utiliser et accélérer l'obtention de nombres aléatoires en installant un logiciel (3) avec:
rpi ~$ sudo apt install rng-tools
Mise à jour:
depuis Raspbian Stretch 2019-04-08 il n'est pas nécessaire d'installer rng-tools
. Ils sont installés par défaut.
♦ Dépannage
systemd-networkd
Regardez le statut d'un service:
rpi ~$ systemctl status systemd-networkd.service
rpi ~$ systemctl status [email protected]
Ou même un peu plus:
rpi ~$ journalctl --boot --pager-end
J'ai trouvé utile de suivre la journalisation en cours:
rpi ~$ journalctl --boot --follow
Si vous avez créé un fichier, vous pouvez consulter le résultat:
rpi ~$ systemctl cat [email protected]
Pour vérifier l'environnement d'exécution d'une unité, vous pouvez l'afficher et par exemple regarder s'il y a deux ExecStart=
lignes:
rpi ~$ systemctl show [email protected]
Et si rien d'autre ne vous aide, vous pouvez activer l'option de débogage à partir de /sbin/wpa_supplicant
avec -d
dans un fichier déposé:
rpi ~$ sudo systemctl edit [email protected]
ExecStart=
ExecStart=/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -Dnl80211,wext -i%I -bbr0 -d
La sortie est dans le journal. De cette façon, j'ai trouvé le problème avec la mauvaise négociation de clé.
Wifi
Si vous avez configuré le point d'accès, vous devriez le trouver avec un téléphone portable. Affichage des réseaux disponibles, il est présenté avec le nom RPiNet et vous pouvez vous y connecter. Sur le RasPi, vous pouvez également utiliser la commande:
rpi ~$ sudo iw dev wlan0 info
phy#0
Interface wlan0
ifindex 3
wdev 0x2
addr b8:27:eb:06:e8:8b
ssid RPiNet
type AP
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
Comme vous pouvez le voir, il s'agit du type AP (point d'accès) et il vous montrera également quel canal il utilise. Un problème peut être de traduire un canal en fréquence. La fréquence doit correspondre à un canal. Vous pouvez consulter (2) pour une liste des canaux WLAN. Par exemple , pour le canal d'utilisation 36 sur la bande 5,1 GHz , vous devez définir frequency=5180
dans /etc/wpa_supplicant\wpa_supplicant.conf
. Mais vous devez être sûr que votre wifi prend en charge la bande 5,1 GHz. Vous pouvez vérifier avecsudo iw phy
. Cela vous donnera un tas d'informations. Il doit également contenir des fréquences prises en charge supérieures à 5000 MHz. Si vous ne voyez que des fréquences de 24xx MHz, vous ne pouvez bien sûr l'utiliser que.
Un autre point pourrait être des nombres aléatoires. Pour chiffrer les clés des connexions sécurisées, wpa_supplicant a besoin de nombres aléatoires. Générer cela est très lent sur un Raspberry Pi. S'il n'a pas suffisamment d'entropie pour générer des clés de chiffrement, wpa_supplicant rejettera l'authentification. Vous pouvez voir avec cat /proc/sys/kernel/random/entropy_avail
combien d'entropie est disponible. Il devrait être> 1000 pour fonctionner assez rapidement. Pour accélérer cela, les rng-tools
sont installés par défaut. Consultez la section Optimisation pour plus d'informations.
références:
[1] Comment migrer du réseau vers systemd-networkd avec basculement dynamique
[2] Liste des canaux WLAN
[3] Rng-tools
ls /var/log/journal/
. Vous verrez un répertoire qui ressemblefa9462093e8d419cb646d0a0c44771c2
. Il s'agit du stockage du journal auquel vous accédezjournalctl
. Je mettrai à jour ma réponse.proto=WPA2
dans la configuration AP. Mon téléphone, au moins, se plaint de "faible sécurité" sans lui.proto=RSN
. C'est ce que préfère le docu (nommerproto=WPA2
un alias).Une manière encore PLUS FACILE de configurer un Raspberry Pi en tant qu'AP est d'utiliser le repo pi-ap Github qui automatise la configuration d'un Pi 3B + / 4 en AP.
Connectez le Pi à un port libre de votre routeur connecté à Internet sur lequel DHCP est activé (probablement le cas dans la plupart des routeurs grand public).
Une fois connecté, SSH dans Pi sur l'IP DHCP attribuée
eth0
par le routeur, puis:Buvez du thé et après avoir attendu environ 2 minutes, le SSID que vous avez défini
variables.sh
apparaîtra dans votre liste de réseaux sans fil. Connectez-vous au WLAN du Pi annoncé.Pour SSH directement à AP lui-même sur l'
wlan0
interface de Pi , utilisez l'IP par défaut de192.168.0.1
VEUILLEZ NOTER : le sous-réseau DHCP par défaut utilisé par pi-ap pour attribuer les adresses IP des clients WiFi
variables.sh
est192.168.0.0/28
. Si vous utilisez déjà ce sous-réseau sur votre réseau, définissez un sous-réseau différentvariables.sh
pour les clients WiFi AVANT de l' exécuterinstall.sh
.Aucune calculatrice de sous-réseau ni aucune compétence sérieuse en réseau requise pour obtenir de bons résultats. pi-ap prend même en charge la restriction d'accès via les ACL MAC.
DIVULGATION : Je suis le développeur de pi-ap .
la source
━━━ Vérifiez l'installation étape par étape avec des points de contrôle ━━━
Cette réponse n'est pas pensée pour la configuration. Pour une configuration stable, regardez l'autre réponse Configuration d'un point d'accès .
Cette réponse est principalement pour le dépannage et pour montrer comment cela fonctionne avec des commandes détaillées étape par étape et des points de contrôle mais sans informations d'arrière-plan. Je suppose que vous avez un moniteur, un clavier et une souris attachés à votre Raspberry Pi. Les adresses IP et autres paramètres de cette vérification en sont des exemples. Vous devez utiliser le vôtre. Vous pouvez toujours consulter
journalctl -b -e
les informations enregistrées.Download ZIP
image Raspbian Stretch Lite 2018-11-13 sur votre PC Linux.Point de contrôle 1: Comparez la somme de contrôle avec celle du site de téléchargement.
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d 2018-11-13-raspbian-stretch-lite.zip
Étape suivante: graver l'image sur une carte SD connectée:
Checkpoint 2: vérifiez les partitions sur la carte SD:
Étape suivante: montez la partition de démarrage et créez un
wpa_supplicant.conf
fichier:Mettez la carte SD dans votre RasPi et démarrez.
Point de contrôle 3: Après la connexion, vérifiez la connexion filaire. L' interface eth0 doit avoir une adresse ip:
Cela devrait fonctionner hors de la boîte. Si cela ne fonctionne pas, vous avez un problème général avec la configuration de votre réseau. Veuillez le corriger avant de continuer.
Checkpoint 4: Vérifiez le point d'accès:
L' interface wlan0 doit avoir une adresse IP. Parce que nous n'avons pas configuré l'interface, elle aura une adresse Link-local de 169.254.0.0/16.
Vous verrez RPiNet dans la liste des points d'accès sur votre téléphone mobile mais vous ne pouvez pas encore vous y connecter.
Étape suivante: mise à niveau complète et redémarrage:
Après le redémarrage et la connexion, passez à systemd-networkd :
(*) Vous obtiendrez un ou deux avertissements déroutants "... Impossible de définir l'attribut de fichier ..." Ce ne sont pas des erreurs et cela n'a pas d'importance dans ce cas.
Créez ces fichiers pour les interfaces eth0 et wlan0 avec vos paramètres:
Renommez /etc/wpa_supplicant/wpa_supplicant.conf pour qu'il corresponde au paramètre d'interface et redémarrez:
Point de contrôle 5: après le redémarrage et la connexion, vérifiez la connexion filaire eth0 :
Checkpoint 6: Vérifiez la connexion wifi wlan0 :
Vérifiez le wifi sur votre téléphone mobile. Vous devriez trouver
RPiNet
et vous pouvez vous y connecter. Votre téléphone mobile ne peut pas accéder à Internet car le routage n'est pas encore configuré.L'étape suivante: activer NAT pour la connexion Internet. Pour configurer NAT, vous devez étendre le service wpa_supplicant avec:
Dans l'éditeur vide, insérez ces instructions, enregistrez-les et quittez l'éditeur:
Alors fais:
Checkpoint 7: vous devriez maintenant pouvoir accéder à Internet avec le téléphone portable.
la source