Ce premier exemple sert à mettre en place la configuration minimale nécessaire à la validation des communications radio. Il permet aussi d'illustrer le fonctionnement des outils utilisés.
Les caractéristiques générales de cet exemple sont les suivantes :
-
Identification du service Wi-Fi (SSID) :
open
-
Réseau local virtuel (VLAN) utilisé sur le routeur ISR 877W : numéro 2
-
Réseau IP utilisé :
192.168.1.0/24
On commence de façon très classique par la version du système d'exploitation utilisée et par la liste des interfaces réseau reconnues.
Cisco IOS Software, C870 Software (C870-ADVIPSERVICESK9-M), Version 12.4(20)T, RELEASE SOFTWARE (fc3) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2008 by Cisco Systems, Inc. Compiled Fri 11-Jul-08 06:08 by prod_rel_team <snipped/> Cisco 877W (MPC8272) processor (revision 0x300) with 118784K/12288K bytes of memory. Processor board ID FCZ113860FX MPC8272 CPU Rev: Part Number 0xC, Mask Number 0x10 4 FastEthernet interfaces 1 ATM interface 1 802.11 Radio 128K bytes of non-volatile configuration memory. 28672K bytes of processor board System flash (Intel Strataflash)
On décrit ensuite les éléments de configuration minimale à partir des commandes ci-dessous.
-
Configuration du pont au niveau global.
! Activation de la fonction Integrated Routind and Bridging bridge irb ! Choix du protocole Spanning Tree bridge 2 protocol ieee ! Activation du routage des paquets sur l'interface virtuelle de pont ! BVI: Bridge Virtual Interface bridge 2 route ip
-
Configuration de l'interface de pont.
! Interface virtuelle activée automatiquement interface BVI2 ip address 192.168.1.2 255.255.255.0
-
Configuration de l'identificateur de service Wi-Fi (SSID) au niveau global.
dot11 ssid open vlan 2 authentication open guest-mode
-
Configuration de l'interface Wi-Fi.
interface Dot11Radio0 ! Adresse IP affectée au niveau pont (BVI2) no ip address ! Choix du mode de chiffrement minimal encryption mode wep optional ! Correspondance avec le SSID défini ssid open ! Sous interface propre au VLAN 2 et appartenant au pont 2 interface Dot11Radio0.2 encapsulation dot1Q 2 bridge-group 2
-
Configuration de l'interface de réseau local virtuel (Switched Virtual Interface ou SVI).
interface Vlan2 ! Adresse IP affectée au niveau pont (BVI2) no ip address ! Interface appartenant au pont 2 bridge-group 2
-
Configuration des interfaces filaires dans le VLAN numéro 2.
int range fa0 - 3 switchport access vlan 2
On procède de la même façon que dans la section précédente sur la configuration du point d'accès. On donne les caractéristiques de la station utilisée un ordinateur portable.
-
Interface réseau sans-fil reconnue par le noyau Linux :
$ lspci | grep -i network 0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
Sur un ordinateur portable «moderne», l'interface de réseau sans fil est intégrée sur la carte mère. On retrouve cette interface dans la liste des périphériques connectés au bus PCI.
-
Liste des interfaces ayant des fonctions réseau sans-fil :
# iwconfig lo no wireless extensions. eth0 no wireless extensions. wmaster0 no wireless extensions. wlan0 IEEE 802.11 ESSID:"" Mode:Managed Frequency:2.447 GHz Access Point: Not-Associated Tx-Power=15 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
On relève qu'à ce stade de la configuration aucun identifiant de cellule Wi-Fi n'est affecté (
ESSID:""
) et que l'interface n'est associée à aucun point d'accès :Access Point: Not-Associated
. -
Liste des interfaces disponibles à la configuration :
# ifconfig <snipped/> wlan0 Link encap:Ethernet HWaddr 00:1f:3c:54:5e:65 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlan0:avahi Link encap:Ethernet HWaddr 00:1f:3c:54:5e:65 inet adr:169.254.5.5 Bcast:169.254.255.255 Masque:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 wmaster0 Link encap:UNSPEC HWaddr 00-1F-3C-54-5E-65-00-00-00-00-00-00-00-00-00-00 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
On relève qu'aucune adresse IP n'a été affectée à l'interface Wi-Fi.
Une fois que l'on a validé le fonctionnement de l'interface de réseau sans fil, on passe aux tests de communication. Comme nous sommes dans un cas extrêmement simple, on peut se contenter d'une configuration à la console.
-
On désactive les paramètres activés lors de l'initialisation du système d'exploitation.
# ifdown wlan0 There is already a pid file /var/run/dhclient.wlan0.pid with pid 5901 killed old client process, removed PID file Internet Systems Consortium DHCP Client V3.1.1 Copyright 2004-2008 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ wmaster0: unknown hardware address type 801 wmaster0: unknown hardware address type 801 Listening on LPF/wlan0/00:1f:3c:54:5e:65 Sending on LPF/wlan0/00:1f:3c:54:5e:65 Sending on Socket/fallback
-
On affecte l'identifiant de réseau Wi-Fi.
# iwconfig wlan0 essid open # iwconfig <snipped/> wlan0 IEEE 802.11 ESSID:"open" Mode:Managed Frequency:2.447 GHz Access Point: Not-Associated Tx-Power=15 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
-
On vérifie que l'association avec le point d'accès se fait bien ; dès que l'interface est active.
# ifconfig wlan0 up # iwconfig <snipped/> wlan0 IEEE 802.11 ESSID:"open" Mode:Managed Frequency:2.447 GHz Access Point: 00:1D:45:B7:EF:00 Bit Rate=54 Mb/s Tx-Power=15 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Link Quality=100/100 Signal level=-19 dBm Noise level=-60 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
On relève l'adresse MAC du point d'accès auquel l'interface est associée (
Access Point: 00:1D:45:B7:EF:00
) ainsi que les paramètres qualitatifs de la couverture radio. Voir Section 3.1, « Commande iwconfig ». -
La configuration du niveau réseau ne présente pas difficulté. Elle se fait soit manuellement soit à l'aide du client DHCP lorsque ce service est disponible. Voir la référence Configuration d'une interface réseau.
# dhclient3 wlan0 Internet Systems Consortium DHCP Client V3.1.1 Copyright 2004-2008 Internet Systems Consortium. All rights reserved. For info, please visit http://www.isc.org/sw/dhcp/ wmaster0: unknown hardware address type 801 wmaster0: unknown hardware address type 801 Listening on LPF/wlan0/00:1f:3c:54:5e:65 Sending on LPF/wlan0/00:1f:3c:54:5e:65 Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8 DHCPOFFER from 192.168.1.1 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 bound to 192.168.1.103 -- renewal in 690 seconds.
Comment éviter les HotSpots ? | |
---|---|
Suivant le contexte de couverture radio, il est fort probable que les manipulations soient perturbées par la présence de point d'accès de type HotSpots. Ces points d'accès émettent des trames de type beacon à un rythme assez élevé. Pour éviter une association à un point d'accès HotSpot, on peut utiliser les commandes de configuration dans l'ordre suivant :
En tout état de cause, un recensement des points d'accès présents dans la zone de couverture radio permet de repérer les «éléments perturbateurs». Voir Section 4, « Utilisation de kismet ». |
Le tour est joué ! Il est maintenant possible de communiquer avec l'Internet «en clair» dans la zone de couverture radio du point d'accès sachant qu'il est lui même raccordé à une passerelle via le réseau filaire. Cette configuration correspond presque aux hotspots disponibles dans les lieux publics. Il manque le portail captif opérateur qui permet «d'extorquer des sommes exorbitantes» aux usagers isolés qui n'ont pas d'autre solution de communication.
Enfin, il reste à afficher les messages des systèmes permettant de confirmer que les opérations de configuration se sont bien déroulées.
-
Côté station, les messages systèmes donnent les informations sur le fonctionnement de l'interface réseau sans fil IEEE 802.11.
# dmesg <snipped/> Registered led device: iwl-phy0:radio Registered led device: iwl-phy0:assoc Registered led device: iwl-phy0:RX Registered led device: iwl-phy0:TX ADDRCONF(NETDEV_UP): wlan0: link is not ready wlan0: Initial auth_alg=0 wlan0: authenticate with AP 00:1d:45:b7:ef:00 wlan0: RX authentication from 00:1d:45:b7:ef:00 (alg=0 transaction=2 status=0) wlan0: authenticated wlan0: associate with AP 00:1d:45:b7:ef:00 wlan0: RX AssocResp from 00:1d:45:b7:ef:00 (capab=0x421 status=0 axml:id=4) wlan0: associated wlan0: switched to short barker preamble (BSSID=00:1d:45:b7:ef:00) ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready wlan0: no IPv6 routers present
Le message
wlan0: link becomes ready
déclenche les opération de configuration de niveau réseau une fois la partie association effectuée. On retrouve les étapes du synoptique ci dessous.__________ _¡_____¡_ | STA | | AP | ¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯ <--- beacons probe request ---> <--- probe response authentication request ---> <--- authentication response association request ---> <--- association response
-
Côté point d'accès, les mêmes éléments sont présents dans les journaux systèmes et dans la table des associations.
#sh dot11 associations 802.11 Client Stations on Dot11Radio0: SSID [open] : MAC Address IP address Device Name Parent State 001f.3c54.5e65 192.168.1.103 unknown - self Assoc #sh dot11 statistics client-traffic Clients: 4-001f.3c54.5e65 pak in 9387 bytes in 1288304 pak out 5915 bytes out 2475207 dup 170 decrpyt err 0 mic mismatch 0 mic miss 0 tx retries 280 data retries 280 rts retries 0 signal strength 32 signal quality 130
Dans la section précédente, toutes les opérations réalisées à la console sont à répéter à chaque réinitialisation du système sachant qu'aucune sauvegarde de la configuration n'a été faite. L'objectif de cette section est justement de mettre en place une configuration sauvegardée. De plus, on présente les outils qui vont permettre d'utiliser différentes méthodes d'authentification par la suite.
Pour être capable de sauvegarder une configuration avec ou sans authentification il faut d'abord spécifier qu'une interface est de type Wi-Fi et qu'elle a recours à un supplicant.
Sur un système Debian GNU/Linux, c'est le fichier /etc/network/interfaces
qui contient les
paramètres de niveau 3 (IP) des
interfaces réseau. Les paquets wpasupplicant et wpagui fournissent le logiciel nécessaire au
processus conduisant à l'association
de la station au point d'accès au niveau 2 (MAC).
De façon classique, on obtient les informations sur les paquets relatifs au supplicant en interrogeant le gestionnaire de paquets.
# dpkg -l wpa* |grep ^ii ii wpagui 0.6.4-1 GUI for wpa_supplicant ii wpasupplicant 0.6.4-1 Client support for WPA and WPA2 (IEEE 802.11i)
La principale ressource documentaire se trouve dans le fichier
/usr/share/doc/wpasupplicant/README.Debian.gz
du
paquet wpasupplicant. Le mode de
configuration le plus intéressant et celui utilisé dans ce document
est baptisé Mode #2: Roaming Mode. Ce
mode offre plusieurs fonctionnalités intéressantes.
Comme son nom l'indique, le mode «vagabondage» (roaming) doit supporter plusieurs configurations suivant la zone de couverture radio dans laquelle se trouve la station : lieu public, infrastructure d'entreprise, réseau domestique, etc. Le système de la station doit donc pouvoir changer de configuration dynamiquement sans qu'il soit nécessaire de le réinitialiser. Dans le contexte de ce document, il est possible d'interagir avec le supplicant et de tester les paramètres de configuration au cas par cas.
Voici une copie du fichier /etc/network/interfaces
faisant appel au
supplicant en mode roaming. Aucune définition d'infrastructure de
réseau sans-fil n'a encore été implantée dans ce fichier.
# The loopback network interface auto lo iface lo inet loopback # The Ethernet network interface allow-hotplug eth0 iface eth0 inet dhcp # The Wi-Fi network interface allow-hotplug wlan0 iface wlan0 inet manual wpa-driver wext wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
Ce fichier comprend trois interfaces :
-
L'interface de boucle locale
lo
nécessaire aux communications réseau (TCP/IP) entre les processus locaux exécutés sur la station. -
L'interface filaire Ethernet
eth0
dont la configuration réseau est obtenue dynamiquement via le service DHCP. -
L'interface Wi-Fi
wlan0
est configurée en mode manuel. Ses paramètres sont détaillés ci-après.
L'interface de réseau sans-fil est placée en mode manuel pour la configuration du niveau réseau sachant que l'on doit faire appel à un service particulier pour la configuration au niveau liaison : le supplicant. C'est cet outil qui est responsable de la gestion des associations entre la station (STA) et les différents point d'accès (AP) accessibles. La configuration du niveau réseau se fait à partir d'un
identifiant d'interface partagé entre les fichiers de configuration
du supplicant et celui des interfaces ;
c'est à dire le fichier présenté ci-dessus ( |
|
Le paramètre |
|
Le paramètre |
Voici une copie du fichier de configuration du supplicant avant introduction de définition de réseau sans-fil.
# cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant update_config=1
Le paramètre |
|
La valeur du paramètre |
Avant de se lancer dans les opérations de configuration avec
l'interface graphique fournie par le paquet wpagui, il faut que l'utilisateur normal ait
la capacité à utiliser cette interface. Dans ce but, on doit
déléguer les droits d'utilisation du programme /usr/sbin/wpa_gui
en suivant la démarche donnée
dans la Section 4.2.1,
« Délégation des droits d'accès avec sudo ». La ligne
concernant l'utilisateur normal phil
du fichier /etc/sudoers
devient :
phil ALL=NOPASSWD: /sbin/iwspy, /sbin/iwconfig, /usr/bin/kismet, /usr/sbin/wpa_gui
À partir de cette étape, on peut lancer les opérations de
configuration en dialoguant avec le supplicant via le socket dédié à l'interface. Voici un exemple
d'identification de l'exécution du processus
supplicant et du socket de communication avec l'interface réseau
wlan0
.
# ps auxww |grep wpa |grep -v grep root 2801 0.0 0.0 21020 1020 ? S<s 09:42 0:00 \ /sbin/wpa_supplicant -B -P /var/run/wpa_supplicant.wlan0.pid \ -i wlan0 -D wext -q -f /var/log/wpa_supplicant.wlan0.log \ -C /var/run/wpa_supplicant # ll /var/run/wpa_supplicant/wlan0 srwxrwx--- 1 root root 0 aoû 20 09:42 /var/run/wpa_supplicant/wlan0
Voici les copies d'écran présentant la mise en place de la configuration minimale sans authentification.
-
Lancement de wpagui.
$ sudo wpa_gui Selected interface 'wlan0' Trying to connect to '/var/run/wpa_supplicant/wlan0'
-
Une fois l'application lancée, la première opération à faire est de lancer un recensement des points d'accès visibles depuis la station en utilisant le bouton
. -
Un nouvel appui sur le bouton
lance la reconnaissance des points d'accès accessibles.Le résultat du recensement donne la liste des cellules visibles de la station avec leurs identifiants SSID ainsi que les modes d'authentification supportés. Ces informations sont issues des trames de requête probe émises par la station en direction des différents points d'accès «visibles». Cette «visibilité» dépend elle-même des trames beacon émises par les points d'accès.
-
Un double click sur le SSID du réseau Wi-Fi voulu ouvre une fenêtre de configuration des paramètres d'authentification.
Dans le cas présent, on utilise l'identifiant
open
et il n'est pas nécessaire de modifier les paramètres d'authentification puisque l'on accède à un réseau ouvert. -
Enfin, une fois l'association réalisée, il ne reste plus qu'à lancer le client DHCP pour solliciter le serveur, obtenir une configuration réseau IP correcte et une référence de serveur de noms de domaines. Sachant qu'aucune configuration de niveau réseau n'a encore été sauvegardée dans le fichier
/etc/network/interfaces
, il est nécessaire de lancer manuellement la requête DHCP, à l'aide de la commande :
. On obtient ainsi une fenêtre du type ci-dessous.#
dhclient3 wlan0 -
Pour sauvegarder les paramètres de la configuration courante, on passe par le menu
puis par l'option . Cette opération est possible grâce au paramètreupdate_config=1
préalablement placé dans le fichier/etc/wpa_supplicant/wpa_supplicant.conf
.
Le résultat des manipulations réalisées via l'interface graphique du programme wpa_gui se retrouve dans le fichier de configuration du supplicant.
# cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant update_config=1 network={ ssxml:id="open" key_mgmt=NONE id_str="" }
Cette configuration doit être complétée au niveau réseau en
faisant le lien entre le fichier de configuration du supplicant (/etc/wpa_supplicant/wpa_supplicant.conf
) et le
fichier de configuration de niveau réseau des interfaces
(/etc/network/interfaces
) via la
chaîne de caractères d'identification désignée par le paramètre
id_str
.
Dans cet exemple, on utilise la chaîne open_testPod
et les fichiers de configuration sont
édités comme ci-dessous.
-
Fichier
/etc/wpa_supplicant/wpa_supplicant.conf
:ctrl_interface=/var/run/wpa_supplicant update_config=1 network={ id_str="open_testPod" ssxml:id="open" key_mgmt=NONE }
-
Fichier
/etc/network/interfaces
:# The Wi-Fi network interface allow-hotplug wlan0 iface wlan0 inet manual wpa-driver wext wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf # id_str="open_testPod" iface open_testPod inet dhcp
Dans les lieux publics, la tendance est au développement de la couverture radio Wi-Fi via un accès de type hotspot. Les opérateurs de téléphonie mobile sont très présents sur ce segment de marché. L'idée force consiste à dupliquer le modèle économique de la téléphonie mobile sur les accès aux réseaux sans-fils. Dans ce contexte, la station doit s'associer à n'importe quel point d'accès, obtenir une configuration réseau complète et se retrouver «piégée» par un portail captif qui intercepte toutes les communications réseau IP. Ce portail captif tient le rôle de point de facturation en fonction du temps de communication de la même façon qu'une carte téléphonique prépayée.
Du point de vue configuration de l'interface de station, on reprend les mêmes éléments que dans la section précédente en omettant de préciser l'identifiant Service Set IDentifier. Les fichiers de configuration sont complétés de la façon suivante :
-
Fichier
/etc/wpa_supplicant/wpa_supplicant.conf
:ctrl_interface=/var/run/wpa_supplicant update_config=1 network={ id_str="open_testPod" ssxml:id="open" key_mgmt=NONE } network={ id_str="hotspot" ssxml:id="" key_mgmt=NONE }
-
Fichier
/etc/network/interfaces
:# The Wi-Fi network interface allow-hotplug wlan0 iface wlan0 inet manual wpa-driver wext wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf # id_str="open_testPod" iface open_testPod inet dhcp # id_str="hotspot" iface hotspot inet dhcp
Dans le contexte des sections précédentes, le trafic réseau IP émis depuis la station circule «en clair» sur les ondes radio.
# dpkg -l ipsec-tools racoon |grep ^ii ii ipsec-tools 1:0.7.1-1 IPsec tools for Linux ii racoon 1:0.7.1-1 IPsec IKE keying daemon