Connexion réseau wifi

La configuration de la communication wifi est une étape supplémentaire dans la configuration de la communication Ethernet. Pour ce faire, deux outils d'administration de réseau wifi sont disponibles sous Debian :

Ces deux outils peuvent coexister dans une installation. Dans ce qui suit, on utilise les commandes fournies par iw.

1 - Préparation

1.1 - Installer les paquets

Télécharger et installer les paquets manquants par rapport à la liste suivante :

$ sudo aptitude install iproute2 rfkill iw wpasupplicant isc-dhcp-client dnsutils bind9-host host

1.1 - Vérifier la configuration matérielle de l'interface

$ ls /sys/class/net
eth0 lo wlan0
$ ls -la /sys/class/net/wlan0
lrwxrwxrwx 1 root root 0 mars 17 21:24 /sys/class/net/wlan0 -> ../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0
$ lspci -k |grep -A2 -i wireless
03:00.0 Network controller: Intel Corporation Centrino Wireless-N 1030 [Rainbow Peak] (rev 34)
Subsystem: Intel Corporation Centrino Wireless-N 1030 BGN
Kernel driver in use: iwlwifi
....

Comme indiqué (Kernel driver in use), le module (ici iwlwifi) est chargé, ce que l'on peut vérifier avec la commande lsmod :

$ lsmod |grep iwlwifi
iwlwifi 131072 1 iwldvm
cfg80211 544768 3 iwlwifi,mac80211,iwldvm
$ sudo dmesg |grep firmware
[ 96.992075] iwl3945 0000:0c:00.0: firmware: failed to load iwlwifi-3945-2.ucode (-2)
[ 96.992081] iwl3945 0000:0c:00.0: Direct firmware load failed with error -2

1.2 - Vérifier la boucle lo

$ ip link show lo |grep lo:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
# ip link set dev lo up
$ ping -c2 127.0.0.1 |grep loss
2 packets transmitted, 2 received, 0% packet loss, time 999ms

1.3 - Désactiver les services réseau

Si l'objectif est d'établir une connexion "manuelle", il est préférable d'éliminer les interférences possibles avec d'éventuels autres services ou gestionnaires de réseau actifs, tels que wicd ou network-manager. Pour cela, vérifier le statut des services correspondants :

$ systemctl -a |grep -E 'wicd|networking|NetworkManager'
networking.service loaded active running LSB: Raise network interfaces.
wicd.service loaded active running LSB: Starts and stops Wicd

Dans l'exemple ci-dessus,

$ sudo aptitude purge wicd-daemon

1.4 - Effacer les traces d'une configuration préalable

De même, si l'objectif est d'établir une connexion "à partir de zéro", sans interférence avec une configuration préalable, désactiver l'interface eth0 et purger les adresses et routes réseaux :

$ sudo ip link set dev wlan0 down

$ sudo ip -s -s address flush dev wlan0

$ sudo ip -s -s route flush dev wlan0

$ sudo ip -s -s neigh flush dev wlan0

2 - Connexion wifi

2.1 - Débloquer les interrupteurs wifi

$ sudo aptitude install rfkill

$ sudo rfkill list wifi 0: asus-wlan: Wireless LAN Soft blocked: yes Hard blocked: no 2: phy0: Wireless LAN Soft blocked: yes Hard blocked: yes

$ sudo rfkill unblock wifi
$ sudo rfkill list wifi
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
1: asus-wlan: Wireless LAN
Soft blocked: no
Hard blocked: no

2.2 - Activer l'interface wifi

$ sudo ip link set wlan0 up
$ sudo ip link show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
link/ether 4c:80:93:7b:29:a1 brd ff:ff:ff:ff:ff:ff

2.3 - Sélectionner la zone de régulation

$ sudo iw reg get
country 00: DFS-UNSET
....
$ cat /usr/share/zoneinfo/zone.tab
....
FR +4852+00220 Europe/Paris
....
GB +513030-0000731 Europe/London
....
SE +5920+01803 Europe/Stockholm
$ sudo iw reg set FR
$ sudo iw reg get
country FR: DFS-ETSI
(2402 - 2482 @ 40), (N/A, 20), (N/A)
(5170 - 5250 @ 80), (N/A, 20), (N/A)
(5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS
(5490 - 5710 @ 160), (N/A, 27), (0 ms), DFS
(57000 - 66000 @ 2160), (N/A, 40), (N/A)

$ sudo iwlist wlan0 freq
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.472 GHz (Channel 13)
$ sudo nano /etc/default/crda

Changer la dernière ligne pour désigner la région retenue, par exemple FR

REGDOMAIN=FR

2.4 - Détecter les réseaux wifi présents

La commande iw dev wlan0 scan fournit, pour chaque réseau détecté, un grand nombre d'informations.

Pour par exemple, obtenir la liste des réseaux avec leurs BSS, SSID et signal

$ sudo iw dev wlan0 scan |grep -wE "BSS|SSID|signal"
SS 30:7e:cb:7a:8d:ac(on wlan0)
signal: -76.00 dBm
SSID: VANCAP
BSS 9a:7e:cb:7a:8d:ad(on wlan0)
signal: -73.00 dBm
SSID: SFR WiFi FON
BSS 9a:7e:cb:7a:8d:af(on wlan0)
signal: -71.00 dBm
SSID: SFR WiFi Mobile
BSS 52:1f:9f:fc:1a:b0(on wlan0)
signal: -58.00 dBm
SSID: Bouygues Telecom Wi-Fi
................

2.5 - Etablir la connexion wifi

Les commandes pour établir la connexion wifi sont fonction du chiffrage ou non chiffrage de la liaison.

2.5.1 Chiffrage

$ sudo iw dev wlan0 scan |grep -iwE "BSS|SSID|capability|WPA|RSN"
BSS 30:7e:cb:7a:8d:ac(on wlan0)
capability: ESS Privacy ShortSlotTime (0x0411)
SSID: VANCAP
RSN: * Version: 1
WPA: * Version: 1
BSS 9a:7e:cb:7a:8d:ad(on wlan0)
capability: ESS ShortSlotTime (0x0401)
SSID: SFR WiFi FON
.........

Le premier réseau de la liste (VANCAP) est chiffré, le chiffrage est de type WPA/WPA2.

Le second réseau de la liste (SFR WiFi FON) est ouvert (non chiffré).

2.5.2 Cas d'un réseau ouvert

Pour se connecter au réseau ouvert NEUF SFR :

$ sudo iw --debug dev wlan0 connect "SFR WiFi FON"

L'option --debug, facultative, permet de confirmer que la connexion s'est correctement déroulée. Dans le cas contraire, un message d'erreur apparaît en dernière ligne.

2.5.3 Cas d'un réseau à "cléWEP"

Ce type de chiffrage offre un niveau de sécurité très faible et ne devrait pas être utilisé. Pour se connecter, que la clé soit ascii ou héxadécimale, dans la commande suivante, remplacer mon_essid et ma_clé_WEP par leurs valeurs :

$ sudo iw dev wlan0 connect "mon_essid" key 0:ma_clé_WEP

2.5.4 Cas d'un réseau à "clé WPA ou WPA2"

Installation

Installer si ce n'est pas encore fait wpasupplicant

$ sudo aptitude install wpasupplicant

Fichier de configuration

Créer un fichier de configuration wpa_supplicant.conf, de la forme :

$ cat /etc/wpa_supplicant/wpa_supplicant.conf

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

network={
ssid="mon_essid"
#psk="ceci est un exemple de passphrase WPA"
psk=c0ea3cf625816dad27ed32b4d2fd4145119596af47c586af1a7ad61c3620927a
}
$ wpa_passphrase "mon_essid" "ceci est un exemple de passphrase WPA" >> /etc/wpa_supplicant/wpa_supplicant.conf

Connexion

Se connecter (en utilisant wpa_supplicant) :

$ sudo wpa_supplicant -D wext,nl80211 -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

État de la connexion

La commande wpa_cli status permet de confirmer la connexion entre les modems wifi :

$ sudo wpa_cli status
Selected interface 'wlan0'
bssid=b0:47:xx:xx:xx:xx
freq=0
ssid=FoxFi82
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
address=00:1b:xx:xx:xx:xx
uuid=ebf66b6c-44c0-58ae-xxxx-xxxxxxxxxx

Changement de réseau :

Pour faire prendre en compte une nouvelle configuration du fichier wpa_supplicant.conf

$ sudo wpa_cli reconfigure
Selected interface 'wlan0'
OK

Fermeture de la connexion

$ sudo wpa_cli terminate

2.6 - Vérifier la connexion

Pour vérifier la connexion entre modems

$ iw wlan0 info
Interface wlan0
ifindex 3
wdev 0x1
addr xxxxxxxxxxxxxxxxx
ssid SFR WiFi FON
type managed
wiphy 0
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz

ou bien

$ sudo iw dev wlan0 link
Connected to xxxxxxxxxxxx (on wlan0)
SSID: SFR WiFi FON
freq: 2412
RX: 680158 bytes (8009 packets)
TX: 4160 bytes (32 packets)
signal: -72 dBm
tx bitrate: 1.0 MBit/s

bss flags: short-slot-time
dtim period: 3
beacon int: 100

ou bien

$ sudo iw dev wlan0 scan |grep -A8 associated
BSS xxxxxxxxxxxxxx (on wlan0) -- associated
TSF: 4736344346471 usec (54d, 19:39:04)
freq: 2412
beacon interval: 100 TUs
capability: ESS ShortSlotTime (0x0401)
signal: -71.00 dBm
last seen: 0 ms ago
Information elements from Probe Response frame:
SSID: SFR WiFi FON

3 - Configurer le réseau

La suite de la configuration s'effectue comme pour une liaison Ethernet filaire : attributions d'adresse, de routes et d'adresses de serveurs. Dans ce qui suit, on prend l'exemple d'une configuration par DHCP.

3.1 - Configuration par DHCP

$ sudo dhclient wlan0
$ ip route show dev wlan0
default via 10.0.2.2 dev eth0 
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15 
$ ip route show dev wlan0 |grep src | awk '{print $(NF-1) " " NF$NF;exit}'
src 10.0.2.15
$ ip route show dev wlan0 |grep via| awk '{print $2 " " $3;exit}'
via 10.0.2.2
$ ping 8.8.8.8

3.2 - Hotspots

Dans certains cas, hot spots en particulier, la connexion internet n'est possible qu'après authentification auprès du fournisseur d'accès,cette authentification s'effectuant sur une page web (portail) située sur le routeur. Lors d'une tentative de connexion internet, si l'on n'est pas redirigé automatiquement sur cette page,effectuer la connexion manuellement :

$ ip route
default via 192.168.2.1 dev wlan0
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.75
$ iceweasel 192.168.2.1