





Dans la série des points d’accès WiFi, nous allons voir le point d’accès WiFi routé, qui permet d’étendre un réseau existant d’un nouveau sous-réseau dédié au WiFi. Il met en œuvre le cas échéant ses propres services d’infrastructure (passerelle, serveur DHCP, serveur DNS, etc).
Configuration des interfaces
Ici pas de bridge, mais on configure les interfaces réseau de la même manière que pour le point d’accès WiFi bridgé, que je trouve plus propre. Chaque interface réseau est configurée dans un fichier à part qui prendra place dans le dossier /etc/network/interfaces.d/
.
Le premier contiendra l’interface de loopback et l’inclusion des autres :
1 2 3 4 5 6 7 8 9 10 |
# 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' allow-auto lo iface lo inet loopback # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d |
Comme suggéré dans les commentaires, il peut-être pertinent de consulter les pages man interfaces (5), ifup (8), et ifdown (8).
L’interface Ethernet :
1 2 3 4 |
# interfaces(5) file used by ifup(8) and ifdown(8) allow-hotplug eth0 iface eth0 inet dhcp |
L’interface WiFi. Contrairement au réseau bridgé, elle aura une adresse IP statique :
1 2 3 4 5 6 |
# interfaces(5) file used by ifup(8) and ifdown(8) allow-hotplug wlan0 iface wlan0 inet static address 192.168.3.1 netmask 255.255.255.0 |
Mon sous-réseau Ethernet est en 192.168.2.0/24
, je vais donc utiliser le sous-réseau 192.168.3.0/24
pour le WiFi.
Nous allons ensuite redémarrer le réseau pour appliquer les modifications. Si vous êtes connecté en SSH par l’interface eth0
et que vous ne l’avez pas modifié, le réseau reviendra de lui même. Dans le cas contraire, vous devrez connaître ou retrouver la nouvelle adresse par vos propres moyens.
Hostapd
Hostapd est le daemon qui va gérer le point d’accès WiFi et l’authentification. On l’installe par les dépôts :
1 |
$ sudo apt-get install hostapd hostap-utils |
S’il n’y a pas de configuration par défaut (et c’était mon cas), le fichier /etc/default/hostapd
nous indique que nous pouvons en trouver une dans /usr/share/doc/hostapd/examples/hostapd.conf.gz
. Comme souvent, ce fichier est plutôt bien documenté. Nous allons donc partir de ce dernier :
1 2 |
$ sudo cp /usr/share/doc/hostapd/examples/hostapd.conf.gz /etc/hostapd/ $ sudo gunzip /etc/hostapd/hostapd.conf.gz |
En cas de souci, nous pourrons toujours repartir du fichier d’origine.
Dans le lanceur (/etc/init.d/hostapd
), nous allons renseigner le chemin du fichier de configuration (/etc/hostapd/hostapd.conf
) dans la variable DAEMON_CONF
.
Dans sa configuration (/etc/hostapd/hostapd.conf
) nous allons créer un point d’accès WiFi de base, mais sécurisé quand même. Pour faire plus court, je vais ignorer ici les lignes de commentaires (grâce à la commande grep "^[^#]" /etc/hostapd/hostapd.conf
) , et je ne vais même vous montrer que les lignes qui ont changé par rapport aux valeurs par défaut :
1 2 3 4 5 6 7 8 |
interface=wlan0 ssid=NomDuReseau channel=7 wpa=2 wpa_passphrase=MotDePasse wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP rsn_pairwise=CCMP |
- La seule différence avec le réseau bridgé, c’est le paramètre
bridge
, qui disparaît. - L’interface doit correspondre à celle que nous avons vu plus haut. Le plus souvent ce sera wlan0.
- Le SSID est le nom sous lequel le point d’accès sera visible.
- Les canaux sont numérotés de 1 à 14. Nous allons nous placer vers le milieu.
- Les lignes suivantes paramètrent la sécurité WPA2.
Nous allons ensuite (re) démarrer le service hostapd pour prendre en compte la configuration :
1 2 |
$ sudo service hostapd stop $ sudo service hostapd start |
À ce stade, vous devriez pouvoir visualiser votre nouveau réseau WiFi et vous authentifier dessus. En revanche, vous ne pourrez pas encore obtenir d’adresse IP.
Dnsmasq
Dnsmasq est à la fois un cache DNS (comme son nom l’indique) et un serveur DHCP. Son comportement est assez intéressant puisque la partie serveur DNS peut convertir les données plusieurs sources (serveur DNS, fichier /etc/hosts
, etc) en données DNS qu’elle servira de façon conventionnelle. La partie DHCP n’est pas en reste malgré son rôle secondaire, avec un niveau de configuration qui n’a rien à envier à des serveurs DHCP dédiés.
1 |
$ sudo apt-get install dnsmasq |
Comme pour la configuration d’hostapd, je ne vais reporter que les lignes modifiées de la configuration :
1 2 3 |
domain-needed interface=wlan0 dhcp-range=192.168.3.2,192.168.3.254,12h |
- Le serveur DNS refusera les requêtes incomplètes, sans nom de domaine après le nom d’hôte.
- Les serveurs DNS et DHCP ne seront à l’écoute que sur l’interface WiFi. On ne peut avoir qu’un seul serveur DHCP par sous-réseau.
- Les machines clients du serveur DHCP se verront attribuer une adresse IP comprise entre
192.168.3.2
et192.168.3.254
; et la durée de bail sera de 12h.
Nous allons ensuite (re) démarrer le service dnsmasq pour prendre en compte la configuration :
1 2 |
$ sudo service dnsmasq stop $ sudo service dnsmasq start |
À ce stade, vous devriez pouvoir visualiser votre nouveau réseau WiFi et vous authentifier dessus. Vous pourrez obtenir une adresse IP faisant partie du réseau 192.168.3.0/24, et résoudre des noms de domaine. Mais ce dernier point sera difficile à confirmer puisque vous ne serez pas encore routé vers l’extérieur
Le routage
Nous allons maintenant activer le transit des paquets entre les interfaces :
1 |
$ sudo sysctl -w net.ipv4.ip_forward=1 |
Pour persister cette configuration sur disque afin de la retrouver après redémarrage, il faut la décommenter dans /etc/sysctl.conf
:
1 2 3 4 |
(...) # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 (...) |
Pour lus d’informations, voir la page man sysctl.conf (5).
Et enfin, nous allons activer la translation d’adresse. Les paquets ne feront plus que transiter. Ils seront altérés au fur et à mesure pour être redirigés vers la prochaine passerelle. À leur retour, ils seront reconnus et altérés à nouveau pour atteindre leur cible. La translation d’adresse nécessite l’installation de Netfilter, plus connu sous le nom d’iptables :
1 |
$ sudo apt-get install iptables |
Lorsqu’on manipule iptables, chaque erreur peut être fatale. Le pire que l’on puisse faire est de verrouiller le port sur lequel nous sommes connecté. Sur mon Raspberry Pi 2 de test, ce n’est pas trop grave. Il me suffirait de brancher un écran et un clavier pour rattrapper le coup. Sur une machine hébergée en revanche, cela peut devenir très délicat. Heureusement il existe une procédure qui nous protège de toute mauvaise manipulation.
Créer le fichier iptables.conf :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# /etc/iptables.conf # # Table nat =================================================================== # *nat # # Comportement par défaut ----------------------------------------------------- # :PREROUTING ACCEPT :INPUT ACCEPT :OUTPUT ACCEPT :POSTROUTING ACCEPT # # Règles utilisateur ---------------------------------------------------------- # # Activation de la translation d'adresse --append POSTROUTING --jump MASQUERADE # COMMIT |
Puis appeler iptables-apply, qui est capable en cas de perte de communication de rétablir les précédents réglages valides :
1 |
$ sudo iptables-apply /etc/iptables.conf |
Cette fois vous avez accès à Internet depuis votre réseau WiFi.
Pour que les règles de pare-feu se chargent automatiquement au démarrage, il faut les persister sur disque, comme pour le reste :
1 2 |
$ sudo touch /etc/network/if-up.d/iptables $ sudo chmod +x /etc/network/if-up.d/iptables |
1 2 3 |
#!/bin/sh iptables-restore < /etc/iptables.conf |
Retourner aux points d’accès WiFi.






2 commentaires