J'ai constaté sur internet une grosse sur-information en matière de la configuration de votre interface wifi sous linux avec des logiciels divers (network-manager, wicd, ...), mais très peu d'information claire et concise concernant le fond du problème qui est de configurer son interface wifi à la main dans le terminal à l'aide de wireless-tools. En effet, les logiciels que vous utilisez ne sont d'une façade à ce qui se fait dans le terminal. Alors pourquoi ne pas mettre les mains à la pâte et essayer de configurer votre interface vous-même?
Petit rappel
Pour bien comprendre comment ça marche, je me permet de vous rappeler comment fonctionne une interface réseau et comment elle se connecte à un réseau. Il y a plusieurs éléments à tenir en compte. D'abord il faut établir la connexion réseau à proprement parler (connexion par ondes radio dans une fréquence qui varie entre 2 et 2.5 GHz). Ensuite, en fonction que vous souhaitiez établir une connexion ad-hoc ou managée, vous devrez fixer votre adresse IP à la main ou utiliser un serveur DHCP.
Observer ce qui se passe sur votre interface wifi
Avant de mettre les mains dans le cambuis, il est toujours intéressant d'avoir une vitrine sur ce qui se passe plus concrètement sur votre interface. Dès lors la commande qui va bien c'est
[bash] iwevent
Lancez un terminal avec iwevent de manière à avoir un log de ce qui se passe
Detecter les réseaux disponibles
Vous disposez sans doute de plusieurs interfaces (au moins d'une interface loopback) mais toutes les interfaces ne gèrent pas nécessairement le wifi (la loopback entre autre). Donc inutile de demander à ces interfaces de scanner le réseau et trouver les réseaux disponibles.
Ici la commande à utiliser c'est :
[bash] iwlist eth1 scan
NB : je considère que mon interface sans fil est eth1
Cette commande va vous permettre d'afficher les différents réseaux auxquels vous pouvez vous connecter ainsi que vous donner des informations intéressantes sur ces réseaux comme :
- essid
- canal / fréquence
- encryption
- adresse mac du point d'accès (du routeur en général)
- mode de fonctionnement
NB : il est cependant nécessaire de souligner que certains réseaux cachés peuvent ne pas s'afficher (au cas où la trame broadcast est désactivé). Dans ce cas vous devrez utiliser d'autres techniques pour détecter ces réseaux. Je vous conseille l'outil Kismet qui est très efficace pour ça, mais je ne vais pas le développer ici.
Connexion en mode Managed
Maintenant passons à la connexion en tant que tel. Vous avez lancé iwevent
dans un terminal à part, lancer un nouveau terminal où vous allez lancer les prochaines commandes !
- Désactiver les interfaces que vous n'utiliser pas (dans mon cas, eth0 est une interface filaire que je vais désactiver car je veux utiliser mon interface sans fil eth1)
[bash] sudo ifconfig eth0 down sudo ifconfig eth1 up
- Se connecter au bon réseau avec la bonne fréquence :
[bash] sudo iwconfig eth1 mode managed channel $CHAN essid $ESSID
Dans mon cas je n'ai pas de clé d'encryption donc je ne précise pas l'argument "key".
- $CHAN est le numéro du canal utilisé que vous avez trouvé grâce à
iwlist
- $ESSID est le nom du réseau auquel vous souhaitez vous connecter. Même si le essid que vous utilisé proviens d'un réseau caché, cela ne change rien à la manipulation.
Si tout se passe bien, vous devriez observer dans le terminal de iwevent
que vous êtes correctement authentifié. Afin de vérifier que vous l'êtes bel et bien, tappez la commande iwconfig
et comparez l'adresse MAC se trouvant dans l'argument cell avec l'adresse se trouvant dans le iwlist eth1 scan
que vous avez fait au début.
- Terminer la connexion pour pouvoir accéder au réseau. En effet, jusqu'à maintenant vous avez juste la couche physique entre vous et le point d'accès qui est configurée. Ceci ne suffit pas pour vous permettre d'accéder au réseau. Vous allez devoir demander au serveur DCHP de vous attribuer une adresse IP :
[bash] sudo dhclient eth1
voilà, normalement maintenant votre adresse IP est configurée et vous avez normalement accès au réseau local sans problème.
Enjoy
Se connecter en mode Ad-Hoc
Petit rappel de nouveau pour ceux qui ne savent pas ce que c'est que le mode adhoc? Il s'agit d'une connexion entre ordinateur qui ne nécessite pas d'infrastructure autour. C'est à dire que les ordinateurs se connectent directement l'un à l'autre. On pourrais faire une analogie avec un cable rj45 croisé entre deux ordinateurs. Sauf que dans le cas d'une connexion ad-hoc, on peut communiquer directement avec tous les ordinateurs qui se trouvent dans le rayon de puissance d'émission.
Nous n'avons donc pas de point d'accès (access point) dans le réseau, et de ce fait, nous n'avons pas non plus de serveur DHCP pour attribuer les adresses IP. Il y a donc une contrainte en plus, c'est que nous devrons configurer l'adresse IP à la main.
- Activation de l'interface sans fil :
[bash] sudo ifconfig eth0 down sudo ifconfig eth1 up
- Lancement du réseau ad-hoc (soit vous vous connectez à un réseau existant, soit vous créer un nouveau réseau. La manipulation est la même car il n'y a pas de point d'accès) :
[bash] sudo iwconfig eth1 mode ad-hoc essid $ESSID channel $CHAN key off ap off
Je fais ici le choix de vous donner la commande avec le mode d'encryption désactivé car je pars du principe qu'il est rare qu'en mode ad-hoc on en ait besoin. Mais dans ce cas, vous pouvez bien sur adapter la commande. Vous remarquerez aussi que j'ai désactiver le point d'accès, en effet, ici vous n'avez pas de point d'accès car nous sommes en mode ad-hoc.
- Configuration de son adresse IP :
[bash] sudo ifconfig eth1 172.16.0.X up
Veuillez à ne pas utiliser une adresse déjà utilisée. Je vous conseille d'utiliser le préfixe 172.16.0.0/16 car il est dédié aux réseaux locaux donc vous êtes certains de ne pas rencontrer de problèmes. Vous pouvez aussi utiliser le préfixe 192.168.0.0/16 qui est aussi réservé pour les réseaux locaux. A votre guise
Conclusion
Voilà, je pense que vous avez maintenant toutes les informations pour faire fonctionner convenablement votre interface wifi à l'aide des wireless-tools. Je n'aborde pas ici tous les problèmes liés aux réseaux encryptés tel les réseaux avec un clé WEP ou WPA car ce n'est pas mon but et que je ne suis pas assez spécialiste en la matière pour ne pas prendre le risque de dire des conneries.
Si vous avez des problèmes pour configurer votre interface wifi à la main, n'hésitez pas à poster des questions ici. Je souligne quand même (car moi j'ai perdu plusieurs jours avant de comprendre) que toutes les interfaces wifi ne supportent pas le mode Ad-Hoc. Certaines cartes un peu trop vieilles peuvent poser des problèmes pour ce genre de configurations.
Note supplémentaire pour les possesseurs de Mac OS X
Pour les possesseur d'un ordinateur sous Mac OS X qui n'ont malheureusement pas la chance d'avoir wireless-tools à disposition, il existe un autre outil qui fonctionne assez bien et qui permet le même genre de manipulations qui s'appelle airport
mais qui n'est pas configuré par défaut dans votre PATH. Il vous faudra donc faire un petit :
cd /usr/sbin sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
Pour que la commande apparaisse dans votre PATH. Ensuite un petit airport --help
vous donnera les infos nécessaires pour apprendre à jongler avec cet outil.
$ airport --help airport AirPort v.455.2 (455.2.0) Supported arguments: -a --autojoin Join first available, trusted network from list -p --applyprefs Apply settings as currently configured via System Preferences -u --updateprefs Examine network preferences and repair if necessary -z --disassociate Disassociate from any network -i[<arg>] --ibss=[<arg>] Create IBSS -f<arg> --file=<arg> Use <arg> as airport preference file instead of /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist -m<arg> --mac=<arg> Use <arg> instead of current AirPort MAC Address -x --xml Print info as XML -o<arg> --oldencrypt=<arg> Encrypt string <arg> with Panther-style encryption -s[<arg>] --scan=[<arg>] Perform a wireless broadcast scan. Will perform a directed scan if the optional <arg> is provided -r<arg> --repeats=<arg> Repeat the command the specified number of times -A[<arg>] --associate=[<arg>] Associate to network. Will prompt for network name if arg is not specified and if necessary, for a password if the network is using WEP or WPA. The following additional arguments may be specified with this command: --bssid=<arg> Specify BSSID to associate with --password=<arg> Specify a WEP key or WPA password -I --getinfo Print current wireless status, e.g. signal info, BSSID, port type etc. -P<arg> --psk=<arg> Create PSK from specified pass phrase and SSID. The following additional arguments must be specified with this command: --ssid=<arg> Specify SSID when creating a PSK -S --showstack Print the current list of known networks -c[<arg>] --channel=[<arg>] Set arbitrary channel on the card -h --help Show this help