= Théorie des réseaux sans fil =
Les réseaux sans fil PAN.
PAN : Personal Area Network
La norme ZBEE.
La norme définit trois débits différents :
La norme Wireless USB.
Objectif : remplacer l'USB
Autres noms : W-USB (Wireless USB), UWB (Ultra-Wide Band), Wimedia
Débits théoriques :
La norme Bluetooth.
La norme Bluetooth utilise la fréquence 2.4 GHz et définit trois puissances d'émission :
Un réseau Bluetooth, un piconet, est composé d'un maître et de 7 esclaves maximum. Le débit sera partagé entre les différents membres du piconet.
On peut interconnecter des piconets pour former un scatternet (scatter : dispersion)
Les communications peuvent être symétrique (vitesses d'émission et de réception identiques) ou asymétrique (vitesses d'émission et de réception différentes).
Les réseaux sans fil LAN.
LAN : Local Area Network
La norme Wifi.
Principales normes 802.11 :
Très proche de l'ethernet câblé (802.3), utilise la sous-couche LLC générique de la couche 2, et ré-implémente la sous-couche MAC.
Contrairement à ethernet câble qui est basé sur la technique d'accès CSMA/CD, la norme Wi-Fi utilise le CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance).
Il y a plusieurs modes de fonctionnement, dont voici les principaux :
Le Wi-Fi utilise des trames de synchronisation temporelle, appelée les beacon frames. Ces trames contiennent l'heure du point d'accès.
Les réseaux sans fil MAN.
MAN : Metropolitan Area Network
Les réseaux sans fil WAN.
WAN : Wide Area Network
La norme 802.20.
= Mise en pratique =
Les commandes Wi-Fi.
Utilisateurs de Gnome, Attention ! les commandes ci-dessous ne fonctionneront que si vous avez désactivé au préalable Network Manager :
Ubuntu 9.10 et supérieur :
 # service network-manager stop
Ubuntu 9.04 :
 # service NetworkManager stop
iwconfig.
Invoquée seule, la commande iwconfig affiche toutes les interfaces réseaux :
 # iwconfig 
 lo no wireless extensions.
 eth0 no wireless extensions.
 wmaster0 no wireless extensions.
 wlan0 IEEE 802.11bg ESSID:" 
 Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated 
 Tx-Power=20 dBm 
 Retry long limit:7 RTS thr:off Fragment thr:off
 Encryption key:off
 Power Management: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 peut indiquer à la commande iwconfig l'interface à afficher :
 # iwconfig wlan0
 wlan0 IEEE 802.11bg ESSID:" 
 Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated 
 Tx-Power=20 dBm 
 Retry long limit:7 RTS thr:off Fragment thr:off
 Encryption key:off
 Power Management: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 peut également utiliser la commande iwconfig pour configurer les paramètres du réseau sans fil :
 # iwconfig wlan0 essid "MON RESEAU"
 # iwconfig wlan0 channel 3
on peut également spécifier la fréquence avec l'option freq :
 # iwconfig wlan0 freq 2.412G
 # iwconfig wlan0 rate auto
 # iwconfig wlan0 rate 11M
Le 802.11b définit les débits suivants : 1, 2, 5.5 et 11 Mbit/s.
Le 802.11g définit en plus les débits suivants : 6, 9, 12, 18, 24, 36, 48 et 54 Mbit/s.
 # iwconfig wlan0 key off
 # iwconfig wlan0 key 1234567890
on peut gérer de trousseau de quatre clés. On indique le numéro de clé entre crochets :
 # iwconfig wlan0 key [1] 1234567890
Attention, il faut que la configuration côté IP soit arrêtée :
 # ifconfig wlan0 down
 # iwconfig wlan0 mode Ad-Hoc
 # ifconfig wlan0 up
 # iwconfig eth0 txpower 60mW
On peut également spécifier plusieurs paramètres sur la même ligne :
 # iwconfig wlan0 channel 11 key off essid NETGEAR
iwlist.
La commande iwlist permet d'obtenir des informations complémentaires. Invoquée seule, elle affiche la liste des options disponibles :
 # iwlist
 Usage: iwlist [interface] scanning [essid NNN] [last]
 [interface] frequency 
 [interface] channel 
 [interface] bitrate 
 [interface] rate 
 [interface] encryption 
 [interface] keys 
 [interface] power 
 [interface] txpower 
 [interface] retry 
 [interface] ap 
 [interface] accesspoints 
 [interface] peers 
 [interface] event 
 [interface] auth 
 [interface] wpakeys 
 [interface] genie 
 [interface] modulation
On peut optionnellement spécifier l'interface réseau (inutile si il n'y en a qu'une).
 # iwlist scan
 wlan0 Scan completed :
 Cell 01 - Address: 00:09:5B:6F:3C:38
 Channel:11
 Frequency:2.462 GHz (Channel 11)
 Quality=57/70 Signal level=-53 dBm 
 Encryption key:off
 ESSID:"NETGEAR"
 Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
 Mode:Master
 Extra:tsf=0000001241f8f0da
 Extra: Last beacon: 192ms ago
 IE: Unknown: 00074E455447454152
 IE: Unknown: 010482840B16
 IE: Unknown: 03010B
 # iwlist freq # OU iwlist channel
 wlan0 13 channels in total; available frequencies :
 Channel 01 : 2.412 GHz
 Channel 02 : 2.417 GHz
 Channel 03 : 2.422 GHz
 Channel 04 : 2.427 GHz
 Channel 05 : 2.432 GHz
 Channel 06 : 2.437 GHz
 Channel 07 : 2.442 GHz
 Channel 08 : 2.447 GHz
 Channel 09 : 2.452 GHz
 Channel 10 : 2.457 GHz
 Channel 11 : 2.462 GHz
 Channel 12 : 2.467 GHz
 Channel 13 : 2.472 GHz
 Current Frequency:2.447 GHz (Channel 8)
 # iwlist encryption # OU iwlist keys
 wlan0 2 key sizes : 40, 104bits
 4 keys available :
 [1]: 1234-5678-90 (40 bits)
 [2]: off
 [3]: off
 [4]: off
 Current Transmit Key: [1]
 # iwlist auth
 wlan0 Authentication capabilities :
 WPA
 WPA2
 CIPHER-TKIP
 CIPHER-CCMP
 Current Authentication algorithm :
 open
 shared-key
 # iwlist ap # OU iwlist accesspoints
 ath0 Peers/Access-Points in range:
 5A:1D:14:86:97:BC : Quality=34/70 Signal level=-61 dBm Noise level=-95 dBm
 5A:1D:14:86:97:BE : Quality=34/70 Signal level=-61 dBm Noise level=-95 dBm
 5A:1D:14:86:97:BF : Quality=33/70 Signal level=-62 dBm Noise level=-95 dBm
iwevent.
La commande iwevent permet d'afficher en temps réel les évènements Wi-Fi de la carte.
On lance iwevent sur une console, et sur une autre, on passe des commandes iwconfig. On constate que iwevent affiche les évènements générés :
 # iwevent
 09:15:01.261767 wlan0 New Access Point/Cell address:Not-Associated
 09:15:01.261858 wlan0 Set Frequency=2.412 GHz (Channel 1)
 09:15:40.112202 wlan0 Set Frequency=2.462 GHz (Channel 11)
 09:16:01.762209 wlan0 Custom driver event:ASSOCINFO(ReqIEs=00074e455447454152010402040b16 RespIEs=010482840b16)
 09:16:01.762247 wlan0 New Access Point/Cell address:00:09:5B:6F:3C:38
iwpriv.
La commande iwpriv permet de configurer des paramêtres propres à la carte Wi-Fi.
 # iwpriv wlan0
 wlan0 no private ioctls.
Par exemple, le driver de cette carte ne fournit de paramêtres spécifiques à configurer.
Avec un autre driver, on obtient la liste des ioctl configurables :
 # iwpriv ath0
 ath0 Available private ioctls :
 setoptie (8BEE) : set 256 byte & get 0 
 getoptie (8BEF) : set 0 & get 256 byte 
 setkey (8BF2) : set 64 byte & get 0 
 delkey (8BF4) : set 7 byte & get 0 
 setmlme (8BF0) : set 42 byte & get 0 
Certaines cartes ethernet câble permettent également de configurer des paramêtres internes :
 # iwpriv eth0
 eth0 Available private ioctl :
 setqualthr (89F0) : set 1 byte & get 0
 gethisto (89F7) : set 0 & get 16 int
 # iwpriv eth0 setqualthr 20
 # iwpriv eth0 gethisto
iwspy.
Si la carte et le driver le permettent, la commande iwspy permet d'afficher des statistiques en temps réel sur la liaison Wi-Fi :
 # iwspy ath0
 ath0 Statistics collected:
 00:15:6D:D0:E3:E0 : Quality=22/70 Signal level=-74 dBm Noise level=-96 dBm
 Link/Cell/AP : Quality=22/70 Signal level=-74 dBm Noise level=-96 dBm
 Typical/Reference : Quality:0 Signal level:0 Noise level:0
Par exemple, la carte (et/ou driver) ci-dessous ne permet pas de collecter des informations.
 # iwspy wlan0
 wlan0 Interface doesn't support wireless statistic collection
Autres commandes utiles.
lspci.
 # lspci
 00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
 00:1f.2 IDE interface: Intel Corporation 82801GB/GR/GH (ICH7 Family) SATA IDE Controller (rev 01)
 00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01)
 04:04.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
 04:08.0 Ethernet controller: Intel Corporation PRO/100 VE Network Connection (rev 01)
lsusb.
 # lsusb
 BUS 005 Device 003: ID 0846:6a00 Netgear, Inc. WG111 WiFi (v2)
lshw.
 # lshw -class network
 *-network:0 
 description: Wireless interface
 product: Atheros AR5001X+ Wireless Network Adapter
 vendor: Atheros Communications Inc.
 physical id: 4
 bus info: pci@0000:04:04.0
 logical name: wmaster0
 version: 01
 serial: 00:24:01:13:fe:de
 width: 32 bits
 clock: 33MHz
 capabilities: pm bus_master cap_list logical ethernet physical wireless
 configuration: broadcast=yes driver=ath5k latency=168 maxlatency=28 mingnt=10 multicast=yes wireless=IEEE 802.11bg
 resources: irq:18 memory:50000000-5000ffff
Test du réseau Ad-Hoc.
Il faut tout d'abord passer la carte en mode Ad-Hoc :
 # ifconfig wlan0 down
 # iwconfig wlan0 mode Ad-Hoc
 # ifconfig wlan0 up
On ajuste ensuite les paramêtres Wifi :
 # iwconfig wlan0 essid "UPVD" channel 3 key off
On spécifie ensuite une adresse MAC commune à tout le réseau Ad-Hoc :
 # iwconfig wlan0 ap 00:11:22:33:44:55
On spécifie les paramêtres IP :
 # ifconfig wlan0 10.0.0.1 netmask 255.255.255.0
Désormais, les différents membres du réseau Ad-Hoc doivent pouvoir se pinguer.
Si ce n'est pas le cas, on peut essayer de changer la fréquence et de la remettre pour forcer une ré-detection / re-configuration.
Connexion à un réseau sans chiffrement.
 # iwconfig wlan0 essid "NETGEAR" channel 11 key off
 # dhclient wlan0
Connexion à un réseau WEP.
 # iwconfig wlan0 essid "NETGEAR" channel 11 key CAFECAFECA
 # dhclient wlan0
Connexion à un réseau WPA.
Pour se connecter à un réseau WPA depuis Linux, il faut avoir installé le package wpasupplicant :
 # apt-get install wpasupplicant
On crée le fichier de configuration suivant :
 # cat /etc/wpa_supplicant.conf 
 network={
 ssid="RESEAUWPA"
 scan_ssid=1
 proto=WPA
 key_mgmt=WPA-PSK
 psk="supermotdepassetressecure"
On lance la commande wpa_supplicant :
 # wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant.conf
Cette commande ne rend pas la main, donc soit on la lance en tâche de fond avec &, soit on la laisse tourner et on ouvre une nouvelle fenêtre.
On lance ensuite le client DHCP pour obtenir une adresse IP :
 # dhclient wlan0