Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


4. Les réseaux sans fil

Table des matières :

4.a. Introduction

Actuellement, nous supportons la configuration des interfaces sans fil au moyen des outils wireless-tools et wpa_supplicant. Une chose essentielle à retenir est que la configuration des réseaux sans fil se fait d'une manière globale et non d'une manière propre à l'interface.

wpa_supplicant est le meilleur choix mais il ne gère pas tous les pilotes. Pour une liste des matériels supportés, lisez le site web de wpa_supplicant. De plus, pour le moment, wpa_supplicant ne peut se connecter qu'aux SSID pour lesquels il a été configuré.

wireless-tools supporte pratiquement toutes les cartes et tous les pilotes, mais il ne sait pas se connecter aux points d'accès qui ne font que du WPA.

Attention : Le pilote linux-wlan-ng n'est pas supporté par baselayout pour le moment, à cause de sa mise en place et de sa configuration qui est complètement différente de ce qui se fait ailleurs. Des rumeurs émanant des développeurs de linux-wlan-ng affirmeraient que leur procédure de mise en place se conformerait à celle de wireless-tools. Lorsque ceci sera effectif, vous pourrez utiliser linux-wlan-ng avec notre baselayout.

4.b. WPA Supplicant

WPA Supplicant est un paquet qui vous permettra de vous connecter à un point d'accès WPA. Sa mise en place est assez instable puisque c'est une application bêta ; elle marche pourtant très bien.

Exemple de code 1 : Installer wpa_supplicant

# emerge net-wireless/wpa_supplicant

Important : Vous devez activer CONFIG_PACKET dans votre noyau pour que wpa_supplicant puisse fonctionner.

Nous devons maintenant indiquer dans le fichier /etc/conf.d/net que nous préférons utiliser wpa_supplicant plutôt que wireless-tools (qui est celui par défaut si les deux sont installés).

Exemple de code 2 : Configuration de /etc/conf.d/net avec wpa_supplicant

# On préfère utiliser wpa_supplicant :
modules=( "wpa_supplicant" )

# Il est important de spécifier à wpa_supplicant quel pilote nous
# allons utiliser car il n'est pas encore doué pour les devinettes :
wpa_supplicant_eth0="-Dmadwifi"

Note : Si vous utilisez le pilote host-ap, vous devez placer la carte en mode Managed afin qu'elle puisse être utilisée correctement par wpa_supplicant. Vous pouvez utiliser la commande iwconfig_eth0="mode managed" dans /etc/conf.d/net pour accomplir cette tâche.

Plutôt simple, n'est-ce pas ? Pourtant, nous devons encore configurer wpa_supplicant lui-même, ce qui peut devenir bien plus fastidieux selon le niveau de sécurité demandé par le point d'accès auquel vous souhaitez vous connecter. L'exemple ci-dessous est repris puis adapté depuis le fichier /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz fourni avec wpa_supplicant.

Exemple de code 3 : Un exemple de fichier /etc/wpa_supplicant/wpa_supplicant.conf

# La ligne ci-dessous ne doit pas être changée sinon cela ne marchera pas :
ctrl_interface=/var/run/wpa_supplicant

# On s'assure que seul root peut lire la configuration WPA :
ctrl_interface_group=0

# Laissons wpa_supplicant se charger de scanner et de choisir un
# point d'accès :
ap_scan=1

# Cas simple : WPA-PSK, une phrase ASCII en guise de PSK, on autorise
# tous les mécanismes disponibles :
network={
    ssid="simple"
    psk="une phrase super secrete"
    # Plus la priorité est haute, plus tôt se fera la reconnaissance :
    priority=5
}

# Idem, mais en demandant un scan spécifique à un SSID (pour les points
# d'accès qui rejettent les SSID de diffusion (broadcast) :
network={
    ssid="second ssid"
    scan_ssid=1
    psk="phrase tres secrete"
    priority=2
}

# Seul WPA-PSK est utilisé. N'importe quel mécanisme est autorisé.
network={
    ssid="exemple"
    proto=WPA
    key_mgmt=WPA-PSK
    pairwise=CCMP TKIP
    group=CCMP TKIP WEP104 WEP40
    psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
    priority=2
}

# Connexion en clair (pas de WPA, pas de IEEE 802.1X) :
network={
    ssid="test-en-clair"
    key_mgmt=NONE
}

# Connexion à clé WEP partagée (pas de WPA, pas de IEEE 802.1X) :
network={
    ssid="static-wep-test"
    key_mgmt=NONE
    wep_key0="abcde"
    wep_key1=0102030405
    wep_key2="1234567890123"
    wep_tx_keyidx=0
    priority=5
}

# Connexion à clé WEP partagée (pas de WPA, pas de IEEE 802.1X) en
# utilisant une authentification à clé partagée IEEE 802.11 :
network={
    ssid="static-wep-test2"
    key_mgmt=NONE
    wep_key0="abcde"
    wep_key1=0102030405
    wep_key2="1234567890123"
    wep_tx_keyidx=0
    priority=5
    auth_alg=SHARED
}

# Réseau IBSS/ad-hoc avec WPA-None/TKIP :
network={
    ssid="test adhoc"
    mode=1
    proto=WPA
    key_mgmt=WPA-NONE
    pairwise=NONE
    group=TKIP
    psk="une phrase secrete"
}

4.c. Wireless Tools

Mise en place et mode « Managed »

Wireless Tools fournit un moyen générique de configurer des interfaces sans fil jusqu'au niveau de sécurité WEP. Bien que WEP soit une méthode faiblement sécurisée, elle reste la plus répandue.

La configuration de Wireless Tools est contrôlée par quelques variables. L'exemple de fichier de configuration ci-dessous devrait couvrir tous vos besoins. Sachez simplement qu'en cas de non-configuration, nous essayons tout de même de connecter l'interface au point d'accès le plus fort, quel qu'il soit.

Exemple de code 4 : Installer wireless-tools

# emerge net-wireless/wireless-tools

Note : Bien que vous puissiez stocker la configuration du réseau sans fil dans le fichier /etc/conf.d/wireless, ce guide vous recommande de la placer dans le fichier /etc/conf.d/net.

Important : Vous devrez consulter la documentation sur les noms des variables.

Exemple de code 5 : Exemple de configuration /etc/conf.d/net avec iwconfig

# On préfère utiliser iwconfig plutôt que wpa_supplicant :
modules=( "iwconfig" )

# On configure les clés WEP pour les points d'accès nommés ESSID1 et ESSID2.
# Vous pouvez mettre jusqu'à quatre clés WEP, mais seulement une pourra
# être active à la fois. Au cas où vous auriez déjà une clé WEP active, on
# spécifie un index [1] lors de la création de la clé. On règle ensuite le
# niveau de sécurité pour ce même index [1].
#
# Le préfixe « s: » de la clé indique que c'est une clé ASCII. Sinon, ce serait
# une clé hexadécimale.
#
# « enc open » spécifie le mode de sécurité « open » (le moins sécurisé),
# « enc restricted » spécifie le mode « restricted » (le plus sécurisé).
key_ESSID1="[1] s:votrecle key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# La variable ci-dessous n'est utilisée que lorsqu'on procède à un scan
# pour trouver les points d'accès disponibles.

# Parfois, plusieurs points d'accès peuvent être accessibles. Nous
# devons donc définir un ordre pour pouvoir choisir auquel se connecter.
preferred_aps=( "ESSID1" "ESSID2" )

Réglages personnalisés pour la sélection de points d'accès

Vous pouvez éventuellement rajouter des options pour contrôler la sélection des points d'accès. Ceci n'est pas indispensable.

Vous pouvez décider si nous devons nous connecter uniquement aux points d'accès listés précédemment ou pas. Par défaut, si tout ce qui a été configuré a échoué et si nous pouvons nous connecter à un point d'accès non chiffré, alors nous le ferons. Ce comportement peut être contrôlé par la variable associate_order. Voici une table qui présente les valeurs acceptables et à quoi elles servent.

Valeur Description
any Comportement par défaut.
preferredonly Nous nous connecterons uniquement à un point d'accès présent dans la liste.
forcepreferred Nous forcerons la connexion à un point d'accès dans l'ordre listé si ceux-ci ne sont pas trouvés lors d'un scan.
forcepreferredonly Ne lance pas le scan. Essaye simplement de se connecter à l'un d'entre eux dans l'ordre indiqué.
forceany Pareil que forcepreferred puis essaie n'importe quel autre point d'accès si cela n'a pas marché.

Enfin, voici les variables blacklist_aps et unique_ap. blacklist_aps fonctionne d'une manière similaire à preferred_aps. unique_ap attend yes ou no pour savoir si une deuxième interface peut se connecter sur le même point d'accès que la première.

Exemple de code 6 : Exemples pour blacklist_aps et unique_ap

# Il se peut que vous souhaitiez ne pas vous connecter à certains
# points d'accès :
blacklist_aps=( "ESSID3" "ESSID4" )

# Si vous avez plus d'une carte sans fil, vous pouvez spécifier ici si vous
# acceptez que plusieurs cartes se connectent au même point d'accès.
# Il faut mettre « yes » (par défaut) ou « no ».
unique_ap="yes"

Modes Ad-Hoc et Master

Vous pouvez aussi vous déclarer comme nœud Ad-Hoc si vous n'arrivez pas à joindre un point d'accès.

Exemple de code 7 : Passer en mode Ad-Hoc

adhoc_essid_eth0="Mon noeud Adhoc"

Et pourquoi pas se connecter à des réseaux Ad-Hoc ou bien tourner en mode Master pour devenir nous-même un point d'accès ? Voici la configuration qu'il vous faut. Vous aurez peut-être à spécifier des clés WEP comme indiqué précédemment.

Exemple de code 8 : Exemple de configuration Ad-Hoc/Master

# Spécifie le mode.
# Peut être « managed » (par défaut), « ad-hoc » ou « master ».
# Attention, tous les pilotes ne supportent pas forcément tous les modes.
mode_eth0="ad-hoc"

# Spécifie l'ESSID des interfaces.
# En mode managed, cela force l'interface à essayer de se connecter à l'ESSID
# spécifié et à aucun autre.
essid_eth0="Mon noeud adhoc"

# Le canal à utiliser (par défaut c'est 3) :
channel_eth0="9"

Important : Ce qui suit est repris tel quel depuis la documentation NetBSD sur WaveLAN. Il y a 14 canaux possibles. Nous avons été informés que les canaux 1 à 11 sont légaux en Amérique du Nord, 1 à 13 dans une grande partie de l'Europe, 10 à 13 en France et uniquement le 14 au Japon. En cas de doute, consultez la documentation fournie avec la carte ou avec le point d'accès. Assurez-vous que le canal choisi correspond à celui du point d'accès (ou de l'autre carte en réseau Ad-Hoc). Par défaut, ce canal est le numéro 3 sur les cartes vendues en Amérique du Nord et dans une grande partie de l'Europe, 11 en France et 14 au Japon).

Problèmes et résolutions concernant Wireless Tools

Il existe quelques variables supplémentaires que vous pouvez utiliser pour vous aider à résoudre les problèmes de pilote ou d'environnement pour faire fonctionner votre réseau sans fil. Voici une table répertoriant ce que vous pouvez essayer :

Variable Valeur par défaut Description
iwconfig_eth0 Lisez man iwconfig pour savoir ce qu'il est possible d'indiquer à iwconfig.
iwpriv_eth0 Lisez man iwpriv pour savoir ce qu'il est possible d'indiquer à iwpriv.
sleep_scan_eth0 0 Le nombre de secondes à attendre avant de lancer un scan. Cette commande est requise lorsque le pilote a besoin de temps supplémentaire pour compléter son activation et pour devenir utilisable.
sleep_associate_eth0 5 Le nombre de secondes permis à l'interface pour qu'elle réussisse à s'associer avec le point d'accès avant de passer au suivant.
associate_test_eth0 MAC Certains pilotes n'assignent pas une adresse MAC invalide pendant qu'ils essayent de se connecter.
Certains pilotes ne remettent pas à zéro le niveau de qualité pendant qu'ils essayent se se connecter.
Les valeurs autorisées sont MAC, quality ou all, pour les deux.
scan_mode_eth0 Certains pilotes doivent scanner en mode Ad-Hoc. Donc si le scan échoue systématiquement, essayez de spécifier ad-hoc ici.
iwpriv_scan_pre_eth0 Envoie des commandes iwpriv à l'interface avant le scan.
Veuillez lire man iwpriv pour les détails.
iwpriv_scan_post_eth0 Envoie des commandes iwpriv à l'interface après le scan.
Veuillez lire le man iwpriv pour les détails.

4.d. Spécifier une configuration réseau selon l'ESSID

Il se peut que lorsque vous vous connectez à ESSID1, vous ayez besoin d'une adresse IP statique et que lorsque vous vous connectez à ESSID2, vous vouliez du DHCP. En fait, on peut spécifier la plupart des variables selon l'ESSID. Voici comment faire.

Note : Cela marche si vous utilisez WPA Supplicant ou Wireless Tools.

Important : Vous devrez consulter la documentation sur les noms des variables.

Exemple de code 9 : Surcharger la configuration réseau selon l'ESSID

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# On peut également définir les serveurs de noms, entre autres.
# Note : DHCP écraserait ces valeurs à moins qu'on ne lui
# indique le contraire.
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="un.certain.domaine"
dns_search_domains_ESSID1="cherche.ce.domaine puis.cherche.celui.la"

# On surcharge en fonction de l'adresse MAC du point d'accès.
# C'est pratique si plusieurs points d'accès ont le même ESSID.
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Dernière mise à jour le 2 juin 2007

Résumé : La mise en place du réseau sans fil n'est pas évidente, suivez le guide.

Sven Vermeulen
Auteur

Grant Goodyear
Auteur

Roy Marples
Auteur

Daniel Robbins
Auteur

Chris Houser
Auteur

Jerry Alexandratos
Auteur

Seemant Kulleen
Développeur Gentoo x86

Tavis Ormandy
Développeur Gentoo Alpha

Jason Huebel
Développeur Gentoo AMD64

Guy Martin
Développeur Gentoo HPPA

Pieter Van den Abeele
Développeur Gentoo PPC

Joe Kallar
Développeur Gentoo SPARC

John P. Davis
Correcteur

Pierre-Henri Jondot
Correcteur

Eric Stockbridge
Correcteur

Rajiv Manglani
Correcteur

Jungmin Seo
Correcteur

Stoyan Zhekov
Correcteur

Jared Hudson
Correcteur

Colin Morey
Correcteur

Jorge Paulo
Correcteur

Carl Anderson
Correcteur

Jon Portnoy
Correcteur

Zack Gilburd
Correcteur

Jack Morgan
Correcteur

Benny Chuang
Correcteur

Erwin
Correcteur

Joshua Kinard
Correcteur

Tobias Scherbaum
Correcteur

Joshua Saddler
Correcteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

Donate to support our development efforts.

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

php|architect

php|architect

Copyright 2001-2007 Gentoo Foundation, Inc. Questions, Comments? Contact us.