GREY-X // WIFI LAB
hostapd + dnsmasq + iptables
Créer son propre point d’accès Wi-Fi sous Linux permet de comprendre concrètement ce qui se passe derrière une connexion sans fil.
Dans ce laboratoire, une machine Linux va jouer plusieurs rôles :
INTERNET
│
eth0
│
┌──────▼──────┐
│ LINUX │
│ │
│ iptables │
│ NAT │
│ │
│ dnsmasq │
│ DHCP/DNS │
│ │
│ hostapd │
└──────┬──────┘
│
wlan1 / AWUS1900
│
)) Wi-Fi ((
│
┌───────┴───────┐
│ │
Client 1 Client 2
L’objectif est de créer un réseau Wi-Fi de laboratoire avec :
- eth0 → accès Internet ;
- wlan1 → Alfa AWUS1900 ;
- hostapd → point d’accès Wi-Fi ;
- dnsmasq → DHCP + DNS ;
- iptables → routage/NAT.
01 // Vérifier les interfaces
Link to heading
Commencer par identifier les interfaces :
ip addr
Dans notre exemple :
eth0 → Internet
wlan1 → Alfa AWUS1900
Vérifier également le matériel Wi-Fi :
iw dev
Puis :
iw list
Rechercher notamment les capacités du mode AP.
La première chose à retenir :
Le nom de l’interface peut être différent sur votre machine.
Il peut s’agir de wlan0, wlan1, wlx..., etc.
02 // Installer les outils
Link to heading
Sur Debian/Kali :
sudo apt update
sudo apt install hostapd dnsmasq iptables
Sur Fedora :
sudo dnf install hostapd dnsmasq iptables
Vérifier les installations :
hostapd -v
dnsmasq --version
iptables --version
03 // Configurer l'interface Wi-Fi
Link to heading
Avant de lancer le point d’accès, attribuer une adresse IP à l’interface Wi-Fi.
Dans notre laboratoire :
192.168.50.1/24
Configurer :
sudo ip addr flush dev wlan1
sudo ip addr add 192.168.50.1/24 dev wlan1
sudo ip link set wlan1 up
Vérifier :
ip addr show wlan1
On doit obtenir quelque chose ressemblant à :
inet 192.168.50.1/24
04 // Configurer hostapd
Link to heading
Créer le fichier :
sudo nano /etc/hostapd/hostapd.conf
Configuration minimale :
interface=wlan1
driver=nl80211
ssid=GREY-X-LAB
hw_mode=g
channel=6
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=GreyX-Lab-2026
Ici :
interface → interface Wi-Fi
ssid → nom du réseau
channel → canal Wi-Fi
wpa=2 → WPA2
wpa_key_mgmt → authentification PSK
rsn_pairwise → chiffrement CCMP
Tester directement hostapd :
sudo hostapd /etc/hostapd/hostapd.conf
Si tout fonctionne, l’interface devrait commencer à diffuser :
GREY-X-LAB
Pour arrêter le test :
Ctrl + C
05 // Configurer dnsmasq
Link to heading
Faire une sauvegarde de la configuration existante :
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
Créer une configuration de laboratoire :
sudo nano /etc/dnsmasq.conf
Exemple :
interface=wlan1
bind-interfaces
dhcp-range=192.168.50.100,192.168.50.200,255.255.255.0,12h
dhcp-option=3,192.168.50.1
dhcp-option=6,192.168.50.1
server=1.1.1.1
server=8.8.8.8
Cette configuration indique à dnsmasq :
192.168.50.100 ─┐
192.168.50.101 │
192.168.50.102 │
... ├── DHCP
192.168.50.200 ─┘
La passerelle distribuée aux clients sera :
192.168.50.1
06 // Activer le routage IPv4
Link to heading
La machine Linux doit pouvoir transférer les paquets entre wlan1 et eth0.
Vérifier :
sysctl net.ipv4.ip_forward
Activer temporairement :
sudo sysctl -w net.ipv4.ip_forward=1
Vérifier :
cat /proc/sys/net/ipv4/ip_forward
Résultat attendu :
1
07 // Configurer le NAT avec iptables
Link to heading
Maintenant, nous voulons :
Client Wi-Fi
↓
wlan1
↓
Linux
↓
eth0
↓
Internet
Ajouter le NAT :
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Autoriser le forwarding :
sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
Autoriser le trafic de retour :
sudo iptables -A FORWARD -i eth0 -o wlan1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Afficher les règles :
sudo iptables -L -n -v
Afficher la table NAT :
sudo iptables -t nat -L -n -v
08 // Démarrer le laboratoire
Link to heading
Démarrer dnsmasq :
sudo systemctl restart dnsmasq
Puis hostapd :
sudo systemctl restart hostapd
Vérifier :
sudo systemctl status dnsmasq
et :
sudo systemctl status hostapd
09 // Tester depuis un client
Link to heading
Depuis un ordinateur ou un téléphone, rechercher :
GREY-X-LAB
Se connecter avec :
Mot de passe :
GreyX-Lab-2026
Le client devrait recevoir une adresse dans :
192.168.50.100 - 192.168.50.200
Par exemple :
IP : 192.168.50.101
Gateway : 192.168.50.1
DNS : 192.168.50.1
Sur le serveur Linux :
ip neigh
permet d’observer les clients connus.
10 // Observer le DHCP
Link to heading
Pour observer les échanges DHCP :
sudo tcpdump -i wlan1 -n port 67 or port 68
Lorsqu’un client se connecte, on peut observer la séquence :
DHCPDISCOVER
↓
DHCPOFFER
↓
DHCPREQUEST
↓
DHCPACK
C’est une excellente manière de comprendre DHCP plutôt que de simplement utiliser dnsmasq comme une boîte noire.
11 // Observer le trafic
Link to heading
Une fois le client connecté :
sudo tcpdump -i wlan1 -n
Et sur l’interface Internet :
sudo tcpdump -i eth0 -n
On peut alors observer la différence entre :
wlan1
↓
192.168.50.x
↓
Linux
↓
eth0
↓
IP publique / réseau amont
Le NAT modifie notamment la représentation des connexions lorsqu’elles sortent par eth0.
12 // Vérifier le NAT
Link to heading
Afficher les compteurs :
sudo iptables -t nat -L POSTROUTING -n -v
Si les clients utilisent Internet, les compteurs de la règle MASQUERADE devraient augmenter.
On peut également vérifier :
sudo iptables -L FORWARD -n -v
Cela permet de comprendre si les paquets traversent réellement la machine.
13 // Le chemin complet d'un paquet
Link to heading
Lorsqu’un client demande une page Web :
CLIENT
192.168.50.101
│
▼
wlan1
│
▼
Linux Server
│
iptables NAT
│
▼
eth0
│
▼
INTERNET
Et pour le retour :
INTERNET
│
▼
eth0
│
NAT / conntrack
│
▼
wlan1
│
▼
CLIENT
C’est exactement ce type de laboratoire qui permet de comprendre concrètement le fonctionnement du routage et du NAT.
14 // Dépannage
Link to heading
Si le SSID n’apparaît pas :
sudo journalctl -u hostapd -n 50
Vérifier :
iw dev
et :
rfkill list
Si le DHCP ne fonctionne pas :
sudo journalctl -u dnsmasq -n 50
Vérifier également :
ip addr show wlan1
Si le client obtient une IP mais n’a pas Internet :
sysctl net.ipv4.ip_forward
Puis :
sudo iptables -t nat -L -n -v
et :
ip route
Les trois éléments à vérifier sont donc :
DHCP
↓
ROUTAGE
↓
NAT
15 // La logique du laboratoire
Link to heading
Au final, chaque composant possède une responsabilité précise :
┌─────────────────────────────────────┐
│ GREY-X LAB │
├─────────────────────────────────────┤
│ │
│ hostapd │
│ ↓ │
│ crée le point d'accès Wi-Fi │
│ │
│ dnsmasq │
│ ↓ │
│ fournit DHCP + DNS │
│ │
│ Linux │
│ ↓ │
│ route les paquets │
│ │
│ iptables │
│ ↓ │
│ réalise le NAT │
│ │
│ eth0 │
│ ↓ │
│ accès Internet │
└─────────────────────────────────────┘
C’est cette séparation des rôles qui rend le laboratoire intéressant.
hostapd ne fait pas le NAT.
dnsmasq ne fait pas le routage.
iptables ne crée pas le réseau Wi-Fi.
Chaque composant fait une partie du travail.
16 // À retenir
Link to heading
AWUS1900
↓
hostapd
↓
Wi-Fi AP
↓
dnsmasq
↓
DHCP / DNS
↓
Linux routing
↓
iptables
↓
NAT
↓
Internet
Un simple adaptateur Wi-Fi peut donc devenir un véritable laboratoire réseau Linux.
L’intérêt n’est pas seulement de créer un point d’accès.
C’est de comprendre ce qui se passe entre le moment où un client rejoint le Wi-Fi et celui où son paquet atteint Internet.
GREY-X — Build the lab. Understand the network.