wikiroute

networking recipes

User Tools

Site Tools


extension_d_un_reseaux_sans-fil

Extension d'un réseaux sans-fil

La maquette mise en place dans ce document consiste à étendre un réseau local à l'aide d'un point d'accès sans-fil. Le schéma de la figure 1 illustre le contexte de la réalisation.

Figure 1. Schéma du réseau

On dispose d'un modem routeur connecté à Internet. Ce modem annonce un SSID host-network. Le réseau IP correspondant est 192.168.1.0/24. Dans la suite, on présente les configurations nécessaires pour permettre à un point d'accès sans-fil d'étendre la connectivité du réseau local. En particulier, le point d'accès se connecte en mode station au modem routeur. De plus, il annonce un SSID guest-network et une plage d'adresses IP 192.168.66.0/24. Ainsi, les machines peuvent s'associer au SSID annoncé par le point d'accès et accéder à Internet.

Cette maquette permet d'atteindre trois objectifs principaux:

  1. étendre la couverture radio du modem routeur.
  2. mettre en place une séparation entre les réseaux guest-network et host-network.
  3. mettre en place des règles pour garantir la qualité de service.

Les configurations suivantes sont proposées pour un point d'accès sans-fil TP-LINK MR3020. Une distribution OpenWrt ATTITUDE ADJUSTMENT (12.09, r36088) a été installée sur ce routeur. Le mode d'installation à partir du firmware d'origine est expliqué ici.

Commençons par modifier le contenu du fichier /etc/config/wireless sur le point d'accès sans-fil. En particulier, il s'agit de créer deux interfaces radio.

  • Une première interface wwan est configurée en mode sta ou station. Le SSID (dans cet exemple guest-network) et la clé sont donc ceux fournis par le modem routeur connecté à Internet. De ce point de vue, le point d'accès se comporte comme une machine terminale avec une liaison sans-fil.
  • Une deuxième interface lan est configurée en mode ap ou access point. Le SSID host-network et la clé correspondante peuvent être librement choisis. En particulier, ce sont les éléments à communiquer aux utilisateurs qui bénéficient de l'extension du réseau.
/etc/config/wireless
config wifi-device 'radio0'
	option type 'mac80211'
	option macaddr 'f8:ff:ff:ff:f:ff'
	option hwmode '11ng'
	option htmode 'HT20'
	list ht_capab 'SHORT-GI-20'
	list ht_capab 'SHORT-GI-40'
	list ht_capab 'RX-STBC1'
	list ht_capab 'DSSS_CCK-40'
	option channel '4'
	option txpower '27'
 
config wifi-iface
	option network 'wwan'
	option ssid 'host-network'
	option encryption 'psk'
	option device 'radio0'
	option mode 'sta'
	option bssid '00:17:33:F2:FF:FF'
	option key 'mysecretkey'
 
config wifi-iface
	option device 'radio0'
	option mode 'ap'
	option ssid 'guest-network'
	option network 'lan'
	option encryption 'psk2'
	option key 'FAFBFCFDFF'

Ensuite, modifions le contenu du fichier /etc/config/network. L'interface wwan est configurée comme un client DHCP et récupère les paramètres IP proposés par le modem routeur. L'interface lan (qui forme un pont avec l'interface Ethernet du MR3020) dispose de paramètres de configuration statiques. L'adresse IP de cette dernière détermine la plage d'adresses distribuées aux clients du réseau guest-network.

/etc/config/network
config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'
 
config interface 'lan'
	option ifname 'eth0'
	option type 'bridge'
	option proto 'static'
	option netmask '255.255.255.0'
	option dns '8.8.8.8'
	option ipaddr '192.168.66.1'
 
config interface 'wwan'
	option proto 'dhcp'

Terminons avec la configuration du fichier /etc/config/dhcp. Le protocole DHCP est activé sur l'interface lan. Ainsi, le point d'accès joue le rôle d'un serveur DHCP sur le réseau guest-network. Il attribue des adresses IP entre 192.168.66.100/24 et 192.168.66.150/24 aux machines clientes. Par contre, ce protocole est désactivé sur l'interface wwan qui récupère ses paramètres IP (adresse IP, passerelle, serveur DNS) à partir modem routeur.

/etc/config/dhcp
config dhcp lan
	option interface	lan
	option start 	100
	option limit	150
	option leasetime	12h
 
config dhcp wan
	option interface	wan
	option ignore	1

Afin de préserver la bande passante du réseau, il est possible de limiter le débit du trafic vers ou depuis les machines associées au point d'accès sans-fil.

Commençons par mesurer le débit du réseau avec l'outil iperf3 installé sur un ordinateur PC-test-guest-network associé au point d'accès sans-fil. Le site iperf.fr propose un ensemble de serveurs publics de test. Les deux extraits suivants montrent le résultat du test de débit avec le serveur iperf.testdebit.info. Le débit moyen montant est de 719 Kbits/sec, alors que le débit moyen descendant est de 6.33 Mbits/sec.

PC-test-guest-network$ iperf3 -c iperf.testdebit.info
Connecting to host iperf.testdebit.info, port 5201
[  6] local 192.168.66.156 port 58318 connected to 89.84.127.54 port 5201
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-1.00   sec   234 KBytes  1.91 Mbits/sec                  
[  6]   1.00-2.00   sec   117 KBytes   959 Kbits/sec                  
[  6]   2.00-3.00   sec   121 KBytes   995 Kbits/sec                  
[  6]   3.00-4.00   sec   677 KBytes  5.52 Mbits/sec                  
[  6]   4.00-5.00   sec  76.6 KBytes   627 Kbits/sec                  
[  6]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-10.00  sec  1.20 MBytes  1.00 Mbits/sec                  sender
[  6]   0.00-10.00  sec   878 KBytes   719 Kbits/sec                  receiver

iperf Done.

PC-test-guest-network$ iperf3 -Rc iperf.testdebit.info
Connecting to host iperf.testdebit.info, port 5201
Reverse mode, remote host iperf.testdebit.info is sending
[  6] local 192.168.66.156 port 58324 connected to 89.84.127.54 port 5201
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-1.00   sec   557 KBytes  4.56 Mbits/sec                  
[  6]   1.00-2.00   sec   710 KBytes  5.80 Mbits/sec                  
[  6]   2.00-3.00   sec   765 KBytes  6.28 Mbits/sec                  
[  6]   3.00-4.00   sec   802 KBytes  6.57 Mbits/sec                  
[  6]   4.00-5.00   sec   783 KBytes  6.41 Mbits/sec                  
[  6]   5.00-6.00   sec   851 KBytes  6.98 Mbits/sec                  
[  6]   6.00-7.00   sec   864 KBytes  7.07 Mbits/sec                  
[  6]   7.00-8.00   sec   711 KBytes  5.82 Mbits/sec                  
[  6]   8.00-9.00   sec   799 KBytes  6.54 Mbits/sec                  
[  6]   9.00-10.00  sec   761 KBytes  6.25 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  6]   0.00-10.00  sec  7.68 MBytes  6.45 Mbits/sec   21             sender
[  6]   0.00-10.00  sec  7.55 MBytes  6.33 Mbits/sec                  receiver

iperf Done.

Nous choisissons de limiter le débit montant à 200 Kbits/sec et descendant à 2 Mbits/sec. Pour cela, nous avons recours à l'outil tc de contrôle de trafic. Commençons par installer les modules nécessaires pour OpenWrt sur le point d'accès sans-fil.

root@ap-openwrt:~# opkg update
root@ap-openwrt:~# opkg install tc iptables-mod-ipopt
root@ap-openwrt:~# opkg install kmod-sched

Activons le module de gestion de files d'attentes en saut à jetons:

root@ap-openwrt:~# insmod sch_tbf

Ensuite, appliquons une règle de limitation du trafic montant sur l'interface logique wlan0-1 (interface sortante du point d'accès). Le débit maximal choisi est 200 Kbits/sec avec des pics jusuqu'à 350 Kbits/s. Les paquets qui séjournent plus que 50 msec dans la file d'attente sont supprimés.

root@ap-openwrt:~# tc qdisc add dev wlan0-1 root tbf rate 200kbit burst 10kb latency 50ms peakrate 350kbit minburst 1540

Les noms des interfaces logiques du point d'accès peuvent être identifiés dans le résultat de la commande ifconfig.

De même, appliquons une règle de limitation du trafic descendant à 2 Mbit/sec sur l'interface br-lan (interface entrante du point d'accès):

root@ap-openwrt:~# tc qdisc add dev br-lan root tbf rate 2mbit burst 10kb latency 50ms peakrate 4mbit minburst 1540

Vérifions la mise en place des règles de limitation de trafic:

root@ap-openwrt:~# tc -s qdisc ls dev br-lan
qdisc tbf 8004: root refcnt 2 rate 2000Kbit burst 10Kb peakrate 4000Kbit minburst 1540b lat 50.0ms 
 Sent 10180 bytes 35 pkt (dropped 0, overlimits 9 requeues 0) 
 backlog 0b 0p requeues 0 
root@ap-openwrt:~# tc -s qdisc ls dev wlan0-1
qdisc tbf 8003: root refcnt 5 rate 200000bit burst 10Kb peakrate 350000bit minburst 1540b lat 50.0ms 
 Sent 3682 bytes 28 pkt (dropped 0, overlimits 0 requeues 0) 
 backlog 0b 0p requeues 0 

Afin de valider la limitation du débit, nous utilisons à nouveau le logiciel iperf3. Les résultats suivants montrent clairement que le débit montant est maintenant limité à 184 Kbits/sec et le débit descendant à 2.02 Mbits/sec.

PC-test-guest-network$ iperf3 -c iperf.testdebit.info
Connecting to host iperf.testdebit.info, port 5201
[  6] local 192.168.66.156 port 58340 connected to 89.84.127.54 port 5201
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-1.00   sec   151 KBytes  1.23 Mbits/sec                  
[  6]   1.00-2.00   sec  9.90 KBytes  81.1 Kbits/sec                  
[  6]   2.00-3.00   sec  26.9 KBytes   220 Kbits/sec                  
[  6]   3.00-4.00   sec  25.5 KBytes   208 Kbits/sec                  
[  6]   4.00-5.01   sec  24.0 KBytes   197 Kbits/sec                  
[  6]   5.01-6.00   sec  25.5 KBytes   209 Kbits/sec                  
[  6]   6.00-7.01   sec  22.6 KBytes   185 Kbits/sec                  
[  6]   7.01-8.01   sec  15.6 KBytes   127 Kbits/sec                  
[  6]   8.01-9.00   sec  25.5 KBytes   209 Kbits/sec                  
[  6]   9.00-10.00  sec  25.5 KBytes   208 Kbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-10.00  sec   351 KBytes   288 Kbits/sec                  sender
[  6]   0.00-10.00  sec   225 KBytes   184 Kbits/sec                  receiver

iperf Done.

PC-test-guest-network$ iperf3 -Rc iperf.testdebit.info
Connecting to host iperf.testdebit.info, port 5201
Reverse mode, remote host iperf.testdebit.info is sending
[  6] local 192.168.66.156 port 58348 connected to 89.84.127.54 port 5201
[ ID] Interval           Transfer     Bandwidth
[  6]   0.00-1.00   sec   240 KBytes  1.97 Mbits/sec                  
[  6]   1.00-2.00   sec   233 KBytes  1.91 Mbits/sec                  
[  6]   2.00-3.00   sec   232 KBytes  1.90 Mbits/sec                  
[  6]   3.00-4.00   sec   232 KBytes  1.90 Mbits/sec                  
[  6]   4.00-5.00   sec   233 KBytes  1.91 Mbits/sec                  
[  6]   5.00-6.00   sec   233 KBytes  1.91 Mbits/sec                  
[  6]   6.00-7.00   sec   232 KBytes  1.90 Mbits/sec                  
[  6]   7.00-8.00   sec   215 KBytes  1.76 Mbits/sec                  
[  6]   8.00-9.00   sec   250 KBytes  2.05 Mbits/sec                  
[  6]   9.00-10.00  sec   233 KBytes  1.91 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  6]   0.00-10.00  sec  2.47 MBytes  2.07 Mbits/sec   29             sender
[  6]   0.00-10.00  sec  2.40 MBytes  2.02 Mbits/sec                  receiver

iperf Done.

Dans ce paragraphe, il s'agit d'automatiser la limitation du début à l'aide d'un script utilisant les commandes précédentes.

Commençons par créer deux fichiers qui rassemblent les commandes d'activation et de suppression de la limitation de débit. Ces fichiers sont nommés tc_qdisc_start.sh et tc_qdisc_stop.sh respectivement. Notons le chargement du module sch_tbf indispensable pour le bon fonctionnement de la gestion des files d'attentes.

/etc/tc_qdisc_start.sh
#!/bin/sh
 
insmod sch_tbf
tc qdisc add dev wlan0-1 root tbf rate 200kbit burst 10kb latency 50ms peakrate 350kbit minburst 1540
tc qdisc add dev br-lan root tbf rate 2mbit burst 10kb latency 50ms peakrate 4mbit minburst 1540
/etc/tc_qdisc_stop.sh
#!/bin/sh
 
tc qdisc del dev br-lan root
tc qdisc del dev wlan0-1 root
rmmod sch_tbf

Rendons ces fichiers exécutables:

root@ap-openwrt:~# chmod +x /etc/tc_qdisc_start.sh /etc/tc_qdisc_stop.sh

Créons le fichier /etc/init.d/ratelimit qui permet d'exécuter les scripts précédents.

/etc.init.d/ratelimit
#!/bin/sh /etc/rc.common
 
START=50
 
start() {
        echo "Starting traffic control"
        /etc/tc_qdisc_start.sh
}
 
stop() {
       echo "Stopping traffic control"
       /etc/tc_qdisc_stop.sh
}

Ainsi, un appel de la commande suivante permet de lancer le script /etc/tc_qdisc_start.sh, et par conséquent active la limitation de débit:

root@ap-openwrt:~# /etc/init.d/ratelimit start

Alors que la commande stop lance le script /etc/tc_qdisc_stop.sh et supprime la limitation de débit:

root@ap-openwrt:~# /etc/init.d/ratelimit stop

Pour terminer, il ne reste plus qu'à lancer le script ratelimit et l'activer automatiquement au démarrage du point d'accès avec les commandes suivantes:

root@ap-openwrt:~# /etc/init.d/ratelimit start
root@ap-openwrt:~# /etc/init.d/ratelimit enable

Si besoin, les commandes suivantes permettent de supprimer la limitation du débit et désactiver le lancement automatique au démarrage:

root@ap-openwrt:~# /etc/init.d/ratelimit stop
root@ap-openwrt:~# /etc/init.d/ratelimit disable
extension_d_un_reseaux_sans-fil.txt · Last modified: 2015/07/27 14:17 by samer