Skip to content

Hotspot Wi-Fi

Présentation

La RecoveryBox intègre un point d'accès Wi-Fi permettant aux utilisateurs de se connecter directement à la machine sans infrastructure réseau externe.

Le point d'accès est entièrement conteneurisé et s'appuie sur le projet simple-hotspot, exécuté dans un conteneur Docker. Ce conteneur regroupe les différents services nécessaires au fonctionnement d'un point d'accès autonome :

  • hostapd pour la création du réseau Wi-Fi ;
  • dnsmasq pour le serveur DHCP et DNS ;
  • le routage assuré par le système hôte via systemd-networkd et IPtables.

Le service est démarré automatiquement au lancement de la RecoveryBox. Les utilisateurs accèdent à l'ensemble des services simplement en se connectant au réseau Wi-Fi.

Fonctionnement

Interface Wi-Fi

Lors de l'installation, une interface Wi-Fi est renommée automatiquement en wlanAP. Cette interface est exclusivement réservée au point d'accès. Le service wpa_supplicant est désactivé sur cette interface afin qu'elle puisse être utilisée en mode Access Point par hostapd.

Bridge réseau

L'interface wlanAP est automatiquement rattachée au bridge réseau Lan. Ainsi, tous les clients Wi-Fi se retrouvent sur le même réseau que les éventuels équipements connectés au bridge LAN. Le bridge est créé par network-configurator pendant l'installation.

Attribution des adresses IP

Les adresses IP sont distribuées automatiquement par dnsmasq. Les clients reçoivent une adresse IP, la passerelle et les serveurs DNS. Aucune configuration manuelle n'est nécessaire côté client.

Accès Internet

Lorsque l'interface Wan dispose d'une connexion Internet, le service IPtables met automatiquement en place le NAT afin de partager cette connexion avec les clients Wi-Fi. Le fonctionnement est alors similaire à celui d'un routeur domestique.

Accès au service

Le réseau Wi-Fi du hotspot est disponible immédiatement au démarrage de la RecoveryBox.

Réseau Description
recoverybox (par défaut) Réseau Wi-Fi du point d'accès

Configuration avancée

A. Fichiers de configuration

Élément Description
/etc/ap_config/hostapd.conf Configuration du point d'accès (SSID, canal, mot de passe WPA2)
/etc/ap_config/dnsmasq.conf Configuration du serveur DHCP/DNS
/etc/ap_config/ap_start.sh Script de démarrage exécuté avant le lancement du conteneur Docker

B. Customisation

Modification du réseau Wi-Fi

configuration centralisée

Les fichiers de configuration du hotspot Wi-Fi sont gérés par le script RecoveryBox_install.sh. Toute modification manuelle de ces fichiers sera écrasée lors d'une mise à jour ou d'une réinstallation. Pour personnaliser le hotspot, il est recommandé d'utiliser les variables recoverybox_hotspot_conf dans le fichier /etc/recoverybox/custom_config.yml.

Le fichier /etc/ap_config/hostapd.conf permet de modifier :

  • le nom du réseau (SSID) ;
  • le canal Wi-Fi ;
  • la bande utilisée (2,4 GHz ou 5 GHz selon le matériel) ;
  • le mot de passe WPA2 ;
  • le pays (country_code) ;
  • les performances radio.

Lors du lancement du service, le script ap_start.sh fusionne le fichier hostapd_base.conf avec un second fichier hostapd_extra.conf. Ce dernier est destiné à contenir des options supplémentaires non gérées par Ansible. Il est possible de créer ce fichier pour ajouter des options avancées à hostapd.

Modification du serveur DHCP

Le fichier /etc/ap_config/dnsmasq.conf permet de modifier :

  • la plage d'adresses IP distribuées ;
  • les serveurs DNS ;
  • la durée des baux DHCP ;
  • différentes options DHCP.

Toute modification non gérée par Ansible sera écrasée en cas de réinstallation. Pour personnaliser le serveur DHCP, en ajoutant des options non gérées par Ansible, il est nécessaire de créer un second fichier de configuration dans le répertoire /etc/ap_config/dnsmasq.d/. Ce fichier sera automatiquement inclus par dnsmasq.

Redémarrage requis

Toute modification de la configuration nécessite le redémarrage du service via le service-manager.

Modification via le custom_config.yml

Voici un exemple de configuration pour personnaliser le hotspot Wi-Fi dans le fichier /etc/recoverybox/custom_config.yml :

recoverybox_hotspot_conf:
  ssid: "recoverybox" # Hostapd
  password: "my_password" # Hostapd
  mode: "g" # Hostapd - 2.4GHz : g ou b (legacy), 5GHz/6GHz : a, acs si pris en charge par la carte
  channel: "11" # Hostapd - 2.4GHz : 1/7/11, 5GHz : 36-165, 6GHz : 1-233, 0 ou acs si pris en charge par la carte
  auth_algs: "1" # Hostapd
  wpa: "2" # Hostapd
  wpa_key_mgmt: "WPA-PSK" # Hostapd
  wpa_pairwise: "TKIP CCMP" # Hostapd
  rsn_pairwise: "CCMP" # Hostapd
  network: "192.168.4.0" # DNSmasq
  mask: "24" # DNSmasq
  ip: "192.168.4.1" # DNSmasq
  dhcp_range_start: "192.168.4.100" # DNSmasq
  dhcp_range_end: "192.168.4.200" # DNSmasq

Point d'accès 5 GHz

Point d'accès 5/6 GHz

Les cartes Wi-Fi Intel équipées de la fonction LAR (Location Aware Regulatory) sont incapable d'être activées sur les bandes 5 GHz et 6 GHz en tant que point d'accès.

Le hotspot Wi-Fi peut fonctionner sur les bandes 2,4 GHz, 5 GHz et 6 GHz selon le matériel. Cependant, certaines cartes Wi-Fi peuvent ne pas supporter toutes les bandes. N'ayant pas encore trouvé de solution fiable et universelle pour activer le point d'accès sur les bandes 5 GHz et 6 GHz, il est recommandé de rester sur la bande 2,4 GHz pour garantir la compatibilité avec tous les matériels.

Cependant, su vous souhaite tester d'activer hotspot en 5 / 6 GHz, en plus de selectionner le mode et le canal dans le fichier custom_config.yml, il est nécessaire de créer un fichier hostapd_extra.conf dans le répertoire /etc/ap_config/ avec les options suivantes :

country_code= # FR for france, US for United States, etc.
driver=nl80211
ieee80211d=1
ieee80211h=1
ieee80211n=1           # Recommandé pour débloquer le 5GHz N
ieee80211ac=1          # Recommandé pour le 5GHz AC

Une modification du fichier ap_start.sh est également nécessaire pour activer le mode 5 GHz. Cette modification sera *écrasée lors d'une mise à jour ou d'une réinstallation. Ces lignes sont à ajouter juste avant docker rm -f hotspot 2>/dev/null

iw reg set FR
iw dev wlanAP scan > /dev/null 2>&1 || true
sleep 1

C. Debug

# Consulter les logs du hotspot
journalctl -u ap.service -f