WiFi sous Linux
Ce tutoriel s'adresse aux personnes sous debian et les distributions qui se basent dessus (ubuntu, xandros...).
Le tutoriel s'appuie directement sur les gestionnaires de paquets en ligne de commande pour s'affranchir de l'interface graphique utilisée (KDE, gnome...), mais on pourrait installer ces paquets via synaptic, adept ou tout autre assistant graphique. De même, dans ce tutoriel, on modifie directement les fichiers de configuration réseau pour s'abstraire des éventuels assistants (comme Network Manager) et de leur interface graphique.
Toutefois, de plus en plus linux permet (si la carte wifi est correctement prise en charge par linux !) de se connecter à un réseau sans fil très facilement. Le but de ce tutoriel est de détailler pas à pas toute mise en place manuelle du wifi sous debian ou distribution dérivée.
Pour toutes ces raisons, le tutoriel ne parlera que de commandes à taper dans un terminal et s'abstrait complètement de l'interface graphique utilisée. Pour lancer un terminal :
http://doc.ubuntu-fr.org/terminal
Première étape : diagnostic
Les cartes wifi sont de mieux en mieux reconnues et souvent tout marche directement. Le wifi se configure avec iwconfig, qui appartient au paquet wireless-tools.
1) Sous debian, ce paquet n'est pas présent par défaut (sous ubuntu passer à l'étape 2). Pour l'installer :
sudo aptitude update
sudo aptitude safe-upgrade
sudo aptitude install wireless-tools
Évidemment, ça suppose d'avoir un autre moyen de se connecter (ethernet,...). Sinon, relevez l'adresse des paquets qu'aptitude cherche à télécharger, récupérez-les (par exemple sous un système ou le Wi-Fi fonctionne) et mettez-les dans /var/cache/apt/archives. Puis relancez la commande :
sudo aptitude install wireless-tools
2) Listons à présent les cartes disponibles. Sur les portables, vérifiez que l'interrupteur de la carte wifi est activé (la diode devrait être allumée même si sous linux ça ne veut pas dire grand chose) :
(mando@cenedra) (~) $ /sbin/iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wmaster0 no wireless extensions.
eth1 IEEE 802.11g ESSID:"xxxxx" Nickname:""
Mode:Managed Frequency:2.412 GHz Access Point: xx:xx:xx:xx:xx:xx
Bit Rate=48 Mb/s Tx-Power=27 dBm
Retry min limit:7 RTS thr:off Fragment thr=2346 B
Power Management:off
Link Quality=57/100 Signal level=-74 dBm Noise level=-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Dans cet exemple, tout va bien, une carte wifi nommée eth1 a été trouvée. Selon la machine et la marque, la carte peut s'appeler différemment (eth2, wlan0, ra0, ...), la seule chose qui compte, c'est ce qui apparaît dans iwconfig. Si la carte n'apparaît pas dans le iwconfig, c'est que la carte n'est pas prise en charge. Dans ce cas, passez à la seconde étape, et sinon, directement à la troisième étape.
Deuxième étape : la carte n'est pas reconnue
Si la carte n'est pas directement reconnue, il faut essayer selon la marque. En général, il suffit de s'inspirer de ce qui est dit ici :
http://doc.ubuntu-fr.org/wifi
Dans les grandes lignes ou si la carte n'est pas référencée sur la page de documentation mentionnée ci-dessus, on adoptera la démarche suivante.
1) Chercher un drivers linux
Pour les ralink :
(mando@cenedra) (~) $ apt-cache search ralink
rt2400-source - source for rt2400 wireless network driver
rt2500-source - source for rt2500 wireless network driver
rt2570-source - source for rt2570 wireless network driver
Pour les atheros, on utilise par exemple madwifi.
Pour les intel : il faut installer un firmware (pensez à rajouter les dépôts non-free dans /etc/apt/sources.list si ces paquets n'apparaissent pas) :
(mando@aldur) (~) $ apt-cache search firmware | grep -i intel | grep -i firmware
firmware-ipw2x00 - Binary firmware for Intel Pro Wireless 2100, 2200 and 2915
firmware-iwlwifi - Binary firmware for Intel Wireless 3945 and 4965
Parfois d'autre cartes peuvent marcher avec
cette méthode
2) Convertir le driver windows avec ndiswrapper. On pourra s'inspirer des liens suivants (le premier est appliqué à une mandriva mais modulo le urpmi évoqué au début, la démarche reste la même) :
Wifi livebox et ndiswrapper sous Mandriva 2005
Installer un pilote wifi grâce à Ndiswrapper
http://doc.ubuntu-fr.org/ndiswrapper
Troisième étape : configurer la carte
Je pars du principe que le point d'accès distribue dynamiquement (par DHCP) une adresse IP, des routes, des DNS, ce qui est le cas de la majorité des points d'accès wifi (box en particulier).
Sur les dernières distributions, plutôt que d'aller modifier les fichiers de configuration à la main, on utilisera une interface graphique comme par exemple Network Manager.
http://doc.ubuntu-fr.org/networkmanager
Si on ne veut pas ou peut pas passer par Network Manager, la méthode "manuelle" est détaillée ci-dessous.
En WEP
Il suffit de modifier le fichier /etc/network/interfaces conformément à cet exemple en tapant en root ou avec sudo :
sudo nano /etc/network/interfaces
Ensuite, on modifie la section relative à la carte (ici eth1) sans toucher au reste :
auto eth1
iface eth1 inet dhcp
wireless-essid Mon_EssiD
wireless-key 1234567890ABCDEF
... où 1234567890ABCDEF désigne la clé WEP. Attention à bien respecter la casse au moment de saisir l'ESSID. On sauve et quitte (ctrl x).
En WPA
C'est à peine plus compliqué, mais il faut au préalable installer wpa_supplicant. Si seule la connexion Ethernet est possible et que ce paquet manque, reproduisez la démarche proposée dans la première étape pour récupérer wpasupplicant et ses dépendances :
sudo aptitude install wpasupplicant
Ensuite, on corrige /etc/network/interfaces :
sudo nano /etc/network/interfaces
Et on modifie la section correspondant à la carte wifi (ici eth1) :
auto eth1
iface eth1 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
On sauve et on quitte (ctrl x). Il faut à présent configurer wpasupplicant :
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Dans ce fichier, on met :
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="Mon_EssiD"
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
psk=1234567890ABCDEF
priority=5
}
... où 1234567890ABCDEF désigne la clé WPA. Attention à bien respecter la casse au moment de saisir l'ESSID. On sauve et quitte (ctrl x).
Note : sur les versions récentes, il semblerait que la clé WPA puisse directement être configurée dans /etc/network/interfaces et qu'il n'y ait plus forcément besoin de wpa_supplicant.
Quatrième étape : se connecter au point d'accès
1) Préparez le routeur :
- Pour les détenteurs d'une freebox, assurez-vous que le service wifi est activé sur l'interface web de la freebox et que vous êtes en mode routeur. Pensez à configurer les éventuelles redirections de ports dont vous pourriez avoir besoin si vous étiez en mode modem.
- Pour les détenteurs de livebox, appuyez sur le bouton qui fait clignoter la diode wifi (au bas de la livebox, ou au dos de la livebox)
- Pour les détenteurs de routeurs wifi effectuant un filtrage sur l'adresse MAC, ajoutez au préalable l'adresse MAC de votre carte wifi dans la liste des interfaces autorisées par votre routeur, en vous connectant en ethernet ou USB à l'interface de votre routeur. Vous pouvez récupérer cette adresse avec la commande ifconfig :
(mando@cenedra) (~) $ /sbin/ifconfig
...
eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet adr:192.168.0.13 Bcast:192.168.0.255 Masque:255.255.255.0
...
d- Pour les autres... ben... lisez la notice, j'ai jamais testé :-)
2) Connectez l'interface.
Étant donné que /etc/network/interfaces est prêt, on peut directement utiliser ifup (connecte l'interface) et ifdown (déconnecte l'interface) :
sudo ifup eth1
Notons que ceci équivaut à :
sudo ifconfig eth1 up
sudo dhclient eth1
Si tout se passe bien, ça devrait ressembler à ça :
(mando@cenedra) (~) $ sudo dhclient eth1
[sudo] password for root:
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/eth1/00:19:d2:4d:2e:f5
Sending on LPF/eth1/00:19:d2:4d:2e:f5
Sending on Socket/fallback
DHCPREQUEST of 192.168.0.13 on eth1 to 255.255.255.255 port 67
....
DHCPACK of 192.168.0.13 from 192.168.0.254
bound to 192.168.0.13 -- renewal in 343576 seconds
Ici la carte wifi a reçu l'IP locale 192.168.0.13 (qui a dit que 13 portait malheur ?)
A priori, si le DHCPACK a marché, tout devrait être bon car on a aussi reçu des routes et des DNS. Pour s'en assurer :
/sbin/route -n
cat /etc/resolv.conf
On peut vérifier que tout marche bien :
nslookup www.google.fr
ping -c2 www.google.fr
Partant de là tout devrait marcher ;-)
Toujours en difficulté ?
Il suffit d'ouvrir un message sur le
forum linux
Pensez à préciser :
- votre modèle de carte wifi
- votre distribution
- votre type de routeur
Il faudra aussi reporter les résultats des commandes de diagnostic suivantes :
/sbin/iwconfig
/sbin/ifconfig
/sbin/route -n
cat /etc/resolv.conf
nslookup www.google.fr
ping -c2 www.google.fr
... et le contenu des fichiers de configurations wifi :
cat /etc/network/interfaces
cat /etc/wpa_supplicant/wpa_supplicant.conf
Pensez à anonymiser les clés (WEP, WPA) qui pourraient apparaître lors du iwconfig et dans les fichiers de configuration.
Publié par
mamiemando -
Dernière mise à jour le 25 mars 2011 à 21:00 par maxime71500