Table des matières

wpa-supplicant : configuration wifi

Introduction

Vous avez un ordinateur portable, et vous connectez souvent de WiFi en WiFi. Le matin, c'est le WiFi de la maison, puis y'a le wifi de la station de métro, le wifi de la gare, le wifi du train (pour les veinards qui en ont un), le wifi du boulot, le wifi des clients, etc. Dans ce cas, vous faîtes déjà certainement du roaming, i.e. de l'itinérance, entre les différents points d'accès qui vous irradient au fil de votre route.

En mode graphique, on connaît bien NetworkManager et Wicd qui sont tous les deux capables de faire du roaming, c'est à dire de détecter les réseaux présents et de se connecter à ceux connus.

NetworkManager peut également être utilisé en mode console. Mais aujourd'hui, nous allons étudier wpasupplicant qui permet déjà de faire cela.

Avertissement

WPA Supplicant et NetworkManager peuvent entrer en conflit s'ils tentent tous deux de gérer la même interface.

Installation

apt-get install wpasupplicant

Utilisation

Tester le programme wpa_supplicant

Le but est de vérifier que wpa_supplicant contrôle bien l'interface wifi.

On supposera que wlan0 est votre interface wifi.

wpa_passphrase votre-ssid votre-mot-de-passe >> /etc/wpa_supplicant/wpa_supplicant.conf

On commence par tuer tous les processus wpa_supplicant tournant :

pkill wpa_supplicant

On va ensuite lancer wpa_supplicant dans un terminal :

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Successfully initialized wpa_supplicant

Si wpa_supplicant ne vous rend pas la main après avoir affiché le message, au-dessus, c'est que tout va bien.

Sinon, vous pouvez lancer wpa_supplicant en mode debug pour comprendre ce qui ne va pas :

wpa_supplicant -d -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

Scanner les points d'accès disponibles

Dans un autre terminal, on va lancer l'interface commande wpa_cli :

wpa_cli -i wlan0
wpa_cli v2.4
Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.

Interactive mode

>
A partir d'ici, on se retrouve dans l'interface commande de wpa_cli.
Le prompt > doit être affiché.

Lancer un scan des points d'accès :

> scan
OK
> 
<3>CTRL-EVENT-SCAN-STARTED 
> 
<3>CTRL-EVENT-SCAN-RESULTS 
> 
<3>WPS-AP-AVAILABLE

Afficher le résultat du scan :

> scan_results
bssid / frequency / signal level / flags / ssid
42:03:81:d1:d4:53	2457	-16	[WPA-EAP-CCMP][ESS]	FreeWifi_secure
42:03:81:d1:d4:50	2457	-16	[WPA-PSK-CCMP][ESS]	
42:03:81:d1:d4:51	2457	-17	[WPA2-PSK-CCMP][ESS]	
f4:ca:e5:92:3f:58	2422	-64	[WPA-PSK-CCMP][ESS]	Freebox-59C501
f4:ca:e5:92:3f:5a	2422	-64	[WPA2-EAP-CCMP+TKIP][ESS]	FreeWifi_secure
00:19:70:7c:1e:d5	2437	-85	[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]	Livebox-9a79
42:03:81:d1:d4:52	2457	-16	[ESS]	FreeWifi
f4:ca:e5:92:3f:59	2422	-64	[ESS]	FreeWifi
06:19:70:7c:1e:d5	2437	-87	[ESS]	orange

Quitter wpa_cli :

> quit

Arrêter wpa_supplicant en faisant un CTRL-C dans le terminal où il tourne.

Ajouter un profil wifi

La commande wpa_passphrase permet de créer des profils wifi :

wpa_passphrase votre-ssid votre-mot-de-passe >> /etc/wpa_supplicant/wpa_supplicant.conf

en remplaçant votre-ssid par le nom de votre réseau Wifi et votre-mot-de-passe par votre mot de passe.

Ceci va ajouter l'entrée suivante à la fin de votre /etc/wpa_supplicant/wpa_supplicant.conf :

/etc/wpa_supplicant/wpa_supplicant.conf
network={
	ssid="votre-ssid"
	#psk="votre-mot-de-passe"
	psk=360b2c805ecd920b79a370af532d2f7636bab7049ed2dc068c2dae17f5e1c38e
}

Pensez à effacer la ligne avec votre mot de passe en clair !

Il est également possible de directement supprimer la ligne de votre mot de passe en utilisant la commande sed
wpa_passphrase votre-ssid votre-mot-de-passe | sed 3d >> /etc/wpa_supplicant/wpa_supplicant.conf
A partir d'ici, si vous installez le paquet dhcpcd5, la connexion réseau wifi devrait être fonctionnelle à condition qu'aucune interface réseau ne soit configurée dans /etc/network/interfaces.

Configuration du réseau wifi par la méthode traditionnelle

Associer un identifiant au profil wifi

Dans le fichier /etc/wpa_supplicant/wpa_supplicant.conf :

/etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="wifi-maison"
        psk=123456789...
        # Cet id_str indiquera à /sbin/wpa_action de faire un 'ifup maison'
        id_str="maison"
}

La directive id_str va associer l'identifiant maison au profil wifi.
Cet identifiant pourra, alors, être utilisé comme interface réseau wifi dans le fichier /etc/network/interfaces.

Demander à l'interface réseau wifi d'utiliser wpa supplicant

Dans le fichier /etc/network/interfaces :

/etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet manual
  wpa-driver      wext
  wpa-roam        /etc/wpa_supplicant/wpa_supplicant.conf
Si vous n'arriviez pas à faire fonctionner votre carte avec le driver wext, vous pouvez essayer avec le driver nl80211 à la place.

Configuration du réseau en dhcp

Dans le fichier /etc/network/interfaces :

/etc/network/interfaces
# L'identifiant 'maison' est utilisé comme interface wifi.
iface maison inet dhcp

Configuration du réseau en ip statique

Dans le fichier /etc/network/interfaces :

/etc/network/interfaces
# id_str="maison"
iface maison inet static
        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Redémarrer le wifi et chercher à se connecter à un réseau connu

Tapez la commande suivante dans un terminal root :

wpa_cli reconfigure

Vous devriez alors lire un message semblable à celui-ci :

reconfigure
  Selected interface 'wlan0' 
  OK

Sources

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !