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

# 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
$ 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,

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

# ip link set dev wlan0 down

# ip -s -s address flush dev wlan0

# ip -s -s route flush dev wlan0

# ip -s -s neigh flush dev wlan0

2 - Connexion wifi

2.1 - Débloquer les interrupteurs wifi

# aptitude install rfkill

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

# rfkill unblock wifi
# 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

# ip link set wlan0 up
# 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

# 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
# iw reg set FR
# 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)
# 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)
# 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

# 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

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

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

# 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

# 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
}
$ echo "update_config=1" > /etc/wpa_supplicant/wpa_supplicant.conf
$ echo "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev" >> /etc/wpa_supplicant/wpa_supplicant.conf
$ wpa_passphrase "mon_essid" "ceci est un exemple de passphrase WPA" >> /etc/wpa_supplicant/wpa_supplicant.conf

Connexion

Se connecter (en utilisant wpa_supplicant) :

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

# 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

# wpa_cli reconfigure
Selected interface 'wlan0'
OK

Fermeture de la connexion 

# 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

# 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

# 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

# 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