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.
apt-get install wpasupplicant
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
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 >
>
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.
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
:
network={ ssid="votre-ssid" #psk="votre-mot-de-passe" psk=360b2c805ecd920b79a370af532d2f7636bab7049ed2dc068c2dae17f5e1c38e }
Pensez à effacer la ligne avec votre mot de passe en clair !
wpa_passphrase votre-ssid votre-mot-de-passe | sed 3d >> /etc/wpa_supplicant/wpa_supplicant.conf
/etc/network/interfaces
.
Dans le fichier /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
.
Dans le fichier /etc/network/interfaces
:
allow-hotplug wlan0 iface wlan0 inet manual wpa-driver wext wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
wext
, vous pouvez essayer avec le driver nl80211
à la place.
Dans le fichier /etc/network/interfaces
:
# L'identifiant 'maison' est utilisé comme interface wifi. iface maison inet dhcp
Dans le fichier /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
Tapez la commande suivante dans un terminal root :
wpa_cli reconfigure
Vous devriez alors lire un message semblable à celui-ci :
Selected interface 'wlan0' OK
/usr/share/doc/wpasupplicant/README.Debian.gz