Création hotspot wifi

, par  Alain Laponche --- ---

Utilisation

Le branchement du Raspberry muni de la carte "Raspbian" configurée comme indiqué ci-après, sur une prise Ethernet d’une box, crée un réseau secondaire sans fil.
Adresse IP : 10.3.141.1
Nom d’utilisateur : admin
Mot de passe : secret
Plage DHCP : 10.3.141.50 — 10.3.141.255
SSID : raspi-webgui
Mot de passe : ChangeMe

Un utilisateur se connectera au réseau wifi raspi-webgui en utilisant le mot de passe ’ChangeMe’.

Pour accéder à l’interface d’administration, un administrateur se connectera avec un navigateur à l’adresse du Raspberry sur le réseau principal. Par exemple :
192.168.1.16
Et il utilisera le login ’admin’ avec le mot de passe ’secret’
Attention, gros bug : Ce dernier ne détecte pas les postes "clients"
En revanche, on trouve dans "Hotspot / Base" l’arrêt et le démarrage du service

A tester : si la configuration nécessite de porter en dur l’adresse de la box utilisée (chez moi 192.168.1.1), il faudra reparamétrer certaines choses.

Installation

Réalisé fin octobre 2021 en 3 temps :
1) D’abord essai selon une procédure manuelle
2) Ensuite Installation de RaspAP
3) Correction des fichiers erronés mis en place au cours de la phase 1

Rappel : On accède à la carte mémoire "Raspbian" en lançant le programme Putty sur PC (en recherchant au préalable l’adresse de "orbi" du Raspberry avec le programme PortScan. Par exemple 192.168.1.16:22). Rappel login "pi" et password "raspberry".

Procédure manuelle
Démarré avec le tuto
https://code4pi.fr/2017/05/creer-hotspot-wifi-raspberry/
Donc mise en place du ’point d’accès’ avec la commande
"sudo apt-get install hostapd udhcpd"

Puis poursuivi en se basant sur l’article https://raspberry-pi.fr/creer-un-hotspot-wi-fi-en-moins-de-10-minutes-avec-la-raspberry-pi/ qui proposait d’installer RaspAP
Mais cela n’a conduit à rien

J’ai donc suivi la procédure décrite dans https://forums.raspberrypi.com/viewtopic.php?t=255689
Cf dossier word
Au cours du processus, j’ai
 créé le bridge br0 (sudo brctl addbr br0)
 ajouté eth0 au pont br0 (sudo brctl addif br0 eth0)
Et fait les modifications de fichiers indiqués plus loin

Installation de RaspAP
L’installation du produit est entièrement automatisée avec la commande suivante :
wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

Mais au début, pas de serveur DNS (échec du test avec ping).
Récupéré en mettant mes ajouts en commentaires dans /etc/network/interface
+ la commande « sudo route add default gw 192.168.1.1 »

La commande wget dure bien un quart d’heure. Et ok, j’ai bien un réseau wifi « raspi-webgui ».
Cependant, il n’est pas connecté à Internet (dixit mon smartphone). L’erreur provient de mes manipulations manuelles de fichiers

Modification de fichiers
 Créer les fichiers de sauvegarde suivants : /etc/wpa_supplicant/wpa_supplicant.conf.sav
/etc/hostapd/hostapd.conf.save
/etc/dnsmasq.conf.orig’

 Ajouter dans le fichier /etc/network/interfaces de :
# Bridge setup
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0

NB : apparemment nécessaire (mais est ce les bonnes valeurs ?), car si on met en commentaires, "les clients wifi n’ont plus accès à Internet" !

 modification du fichier /etc/sysctl.conf
et décommenter la ligne net.ipv4.ip_forward=1
(ok pour mode iPv4)

 modifier ’nameserver’ dans /etc/resolv.conf, mais il s’est automatiquement mis à 192.168.1.1

Après l’installation de RasAP et en l’absence d’Internet sur réseau sans fil, j’ai :
 mis en commentaires mes ajouts dans /etc/raspap/networking/defaults
 décommenter "bridge" dans /etc/hostapd/hostapd.conf
## RaspAP bridge AP mode (disabled by default)
#bridge=br0

 et surtout mis en place la bonne correction dans /etc/rc.local. On y trouvait en effet :
sudo nano /etc/rc.local #ligne rajoutée par AL le 31-10-21
au lieu de
iptables -t nat -A POSTROUTING -j MASQUERADE
Avec cela, le réseau sans fil a bien accès à Internet

Sauvegarde

Une image de la mémoire Raspbian a été archivée sous le nom
C :/Users/alapo/Documents/ORB Raspberry-image-carte/2021-05-11-raspbian-stretch-lite.img

Configuration

Documentation de base https://raspap.com/

/etc/hostapd/hostapd.conf
driver=nl80211
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
beacon_int=100
auth_algs=1
wpa_key_mgmt=WPA-PSK
ssid=raspi-webgui
channel=1
hw_mode=g
wpa_passphrase=ChangeMe
interface=wlan0
wpa=2
wpa_pairwise=CCMP
country_code=
## Rapberry Pi 3 specific to on board WLAN/WiFi
ieee80211n=1 # 802.11n support (Raspberry Pi 3)
wmm_enabled=1 # QoS support (Raspberry Pi 3)
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] # (Raspberry Pi 3)

## RaspAP wireless client AP mode
#interface=uap0

## RaspAP bridge AP mode (disabled by default)
bridge=br0

/etc/dnsmasq.conf
interface=br0
except-interface=wlan0
dhcp-range=192.168.1.12,192.168.1.254,255.255.255.0,24h
server=9.9.9.9
domain-needed
bogus-priv
#############
## Logging ##
#############
# For debugging purposes, log each DNS query as it passes through dnsmasq.
log-queries

# Log lots of extra information about DHCP transactions.
log-dhcp

# Log facility
# Définit la "facility" dans laquelle Dnsmasq enverra ses entrées syslog,
# par défaut DAEMON ou LOCAL0 si le mode debug est activé.
# Si la "facility" contient au moins un caractère "/", alors
# Dnsmasq considère qu’il s’agit d’un fichier et enverra les logs dans
# le fichier correspondant à la place du syslog.
# (Les erreurs lors de la lecture de la configuration vont toujours vers
# le syslog, mais tous les messages postérieures à un démarrage réussi
# seront exclusivement envoyés vers le fichier de logs).
# Lorsque Dnsmasq est configuré pour envoyer ses traces vers un
# fichier, la réception d’un signal SIGUSR2 entraine la fermeture et réouverture du fichier.
# Cela permet la rotation de fichiers de traces sans nécessiter l’arrêt de Dnsmasq.
log-facility=/var/log/dnsmasq.log

/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and ’man dhcpcd.conf’

# Include files from /etc/network/interfaces.d :
source-directory /etc/network/interfaces.d

# Ajout AL le 31-10, puis supprimé
# iface eth0 inet manual
# iface wlan0 inet manual

# Bridge setup
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0

/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

/etc/sysctl.conf
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note : This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#

###################################################################
# Magic system request Key
# 0=disable, 1=enable all
# Debian kernels have this set to 0 (disable the key)
# See https://www.kernel.org/doc/Documentation/sysrq.txt
# for what other values do
#kernel.sysrq=1

###################################################################
# Protected links
#
# Protects against creating or following links under certain conditions
# Debian kernels have both set to 1 (restricted)
# See https://www.kernel.org/doc/Documentation/sysctl/fs.txt
#fs.protected_hardlinks=0
#fs.protected_symlinks=0

/etc/resolv.conf
# Generated by resolvconf
domain home
nameserver 192.168.1.1

/etc/raspap/networking/defaults

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# Example static IP configuration :
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

# Ajout AL le 31-10-21, puis supprimé le 04-11
#denyinterfaces eth0 wlan0
#interface br0
#static ip_address=192.168.1.24/24 # a adapte (adresse libre sur ma box)

# It is possible to fall back to a static IP if DHCP fails :
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

Commandes donnant des infos
 route

 ifconfig

 sudo systemctl status systemd-resolved.service
Attention : dit "inactive (dead)" !

 sudo service hostapd status

 sudo hostapd /etc/hostapd/hostapd.conf 
Dans un premier temps indique que le fichier /etc/hostapd/hostapd.conf ne peut être lu (pb de droits), mais peu après :
Failed to create interface mon.wlan0 : -95 (Operation no t supported)
ctrl_iface exists and seems to be in use - cannot overr ide it
Delete ’/var/run/hostapd/wlan0’ manually if it is not u sed anymore
Failed to setup control interface for wlan0
wlan0 : Unable to setup interface.
wlan0 : interface state UNINITIALIZED->DISABLED
wlan0 : AP-DISABLED
hostapd_free_hapd_data : Interface wlan0 wasn’t started
nl80211 : deinit ifname=wlan0 disabled_11b_rates=0