Mise en place d'un Hotspot sous Linux en mode bridge
Le matériel sur lequel mon hyperviseur est installé dispose d'une carte Wi-Fi RTL8852BE. Plutôt que de la laisser inutilisée, j'ai décidé de l'associer à une machine virtuelle et d'en faire un point d'accès Wi-Fi avec Hostapd sous Linux.
Sous Linux, rien ne se perd, tout se transfert… même une carte Wi-Fi 😆
Cette solution me permet de remplacer ma borne Wi-Fi historique tout en réduisant ma consommation électrique. De plus, je souhaite que le hotspot utilise mon serveur DHCP local pour l'attribution des adresses IP.
Je vous laisse télécharger et installer Fedora Server 41 par vous-même. Toutefois, veillez à choisir une installation personnalisée pour éviter l'installation par défaut avec Cockpit.
Nous allons commencer par désactiver SELinux pour éviter tout problème au prochain redémarrage :
grubby --update-kernel ALL --args selinux=0
La légende raconte que dans les années 2000, SELinux a causé plus de sueurs froides et de vocations abandonnées chez les administrateurs système stagiaires que les pannes de production un lundi matin… 😆
Nous allons d'abord identifier les interfaces réseau disponibles :
ip a
Dans mon cas :
lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
enX0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 52:54:00:c7:2c:3e brd ff:ff:ff:ff:ff:ff
inet 10.10.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
wls5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 52:54:00:c7:2c:3e brd ff:ff:ff:ff:ff:ff
valid_lft forever preferred_lft forever
Note : Si votre carte Wi-Fi n'apparaît pas, cela signifie qu'elle n'est pas reconnue. Dans ce cas, consultez les forums ou GitHub pour trouver une solution adaptée à votre modèle.
Création du bridge réseau avec une IP fixe et désactivation d'IPv6 :
sudo nmcli connection add type bridge ifname br0 con-name br0 autoconnect yes ipv4.method manual ipv4.addresses 10.10.1.10/24 ipv4.gateway 10.10.1.1 ipv4.dns 10.10.1.2 ipv6.method ignore
Info : Remplacez les adresses IP par celles de votre réseau local.
Nous associons ensuite l'interface filiaire (enX0) au bridge :
sudo nmcli connection add type bridge-slave ifname enX0 master br0
Puis nous faisons de même pour l’interface Wi-Fi (wls5) :
sudo nmcli connection add type bridge-slave ifname wls5 master br0
Modifions le fichier sysctl.conf :
sudo vi /etc/sysctl.conf
Ajoutons cette ligne pour activer le forwarding IPv4 :
net.ipv4.ip_forward=1
Redémarrons la machine :
sudo reboot
Après redémarrage, le bridge réseau devrait récupérer son adresse IP :
ip a
Vous devriez voir quelque chose comme ceci :
br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 40:9c:a7:5a:b6:c8 brd ff:ff:ff:ff:ff:ff
inet 10.10.1.10/24 brd 10.10.1.255 scope global noprefixroute br0
Installation des paquets hostapd et iw :
sudo dnf install hostapd iw -y
Info : Le paquet iw est un utilitaire en ligne de commande pour configurer les interfaces sans fil.
Éditez le fichier de configuration :
sudo vi /etc/hostapd/hostapd.conf
Exemple de configuration pour un point d’accès Wi-Fi 2.4 GHz :
# Configuration générale
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
# Paramètres Wi-Fi
driver=nl80211
interface=wls5
hw_mode=g
channel=6
ssid=Private_Wireless
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wpa_passphrase=MyPassword@2025
ieee80211n=1
ieee80211ac=0
wmm_enabled=1
ht_capab=[HT40+][SHORTGI][LDPC]
# Intégration avec le bridge
bridge=br0
Attention : Modifiez les paramètres "driver" et "interface" en fonction de votre matériel. Adaptez la configuration de chiffrement si vous avez des appareils anciens.
Démarrage et vérification
sudo systemctl enable hostapd --now
Démarrez et activez Hostapd :
sudo systemctl status hostapd
Personnellement, j'ai choisi de le désactiver (parce que pourquoi faire compliqué ?), mais si vous préférez le configurer correctement, voici les commandes :
sudo firewall-cmd --permanent --zone=trusted --add-interface=br0
sudo firewall-cmd --reload