Le point d'accès WiFi bridgé

Le point d’accès WiFi bridgé

Dans la série des points d’accès WiFi, nous allons voir le point d’accès WiFi bridgé (ou Dumb AP), qui permet d’ajouter une connectivité WiFi à un réseau existant, sans autre nouveaux services que la négociation et l’authentification. Il utilise les services d’infrastructure existants.

Le pont réseau ou bridge

Le pont réseau est un moyen de bas niveau (couche 2 du modèle OSI) de relier des segments de réseau, généralement de technologies différentes. Nous allons l’utiliser ici pour relier un segment Ethernet à un segment WiFi. Nous aurons besoin du paquets bridge-utils :

$ sudo apt-get install bridge-utils

Nous allons commencer par séparer les différentes interfaces dans des fichiers de configuration différents exploitant le mécanisme de /etc/network/interfaces.d/. Le premier contiendra l’interface de loopback et l’inclusion des autres :

# 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 :

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

allow-hotplug eth0
iface eth0 inet dhcp

L’interface WiFi :

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

allow-hotplug wlan0
iface wlan0 inet manual

Et le pont réseau :

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

allow-auto br0
iface br0 inet dhcp
        bridge_fd 1
        bridge_hello 3
        bridge_maxage 10
        bridge_stp off
        bridge_ports eth0 wlan0

Ici on mettra notre point d’accès en DHCP, mais on peut très bien le fixer en static si on le souhaite.

Comme le montre la ligne 9, le pont relie entre elles les interfaces eth0 (Ethernet) et  wlan0 (WiFi).

Il reste à redémarrer la pile réseau. Si vous êtes connecté en SSH sur le point d’accès et qu’il est en DHCP, la communication devrait couper quelques secondes puis réutiliser le bail précédent et rétablir la connexion :

$ sudo service networking restart

Vous devriez maintenant avoir 4 interfaces :

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether b8:27:eb:f3:f5:23 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.14/24 brd 192.168.2.255 scope global eth0
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether e8:4e:06:19:47:ee brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether b8:27:eb:f3:f5:23 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.14/24 brd 192.168.2.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 ****:****:****:****:****:****/64 scope link 
       valid_lft forever preferred_lft forever

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 :

$ 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 :

$ 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 :

interface=wlan0
bridge=br0
ssid=NomDuReseau
channel=7
wpa=2
wpa_passphrase=MotDePasse
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
  1. L’interface doit correspondre à celle que nous avons vu plus haut. Le plus souvent ce sera wlan0.
  2. Le SSID est le nom sous lequel le point d’accès sera visible.
  3. Les canaux sont numérotés de 1 à 14. Nous allons nous placer vers le milieu.
  4. Les lignes suivantes paramètrent la sécurité WPA2.

Pour terminer, nous allons activer le transit des paquets à travers le pont :

$ 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 :

(...)
# 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).

Hormis la partie Hostapd, qui est spécifique aux réseaux WiFi, cette configuration peut aussi être utilisée telle quelle pour relier deux segments Ethernet, un segment Ethernet et un segment fibre, etc.

La différence avec un point d’accès routé réside dans le fait que les paquets transitent directement d’une interface à l’autre, sans être altérés, ce qui permet d’étendre le réseau sans en créer un nouveau. Tous les paramètres IP (masque, passerelle, broadcast, etc) restent inchangés, à part l’adresse, naturellement.

Retourner aux points d’accès WiFi.

Un commentaire

Les commentaires sont fermés.