5. Vue d'ensemble de la configuration d'un réseau sans-fil

Une fois que vous avez le matériel nécessaire et que vous aurez compilé tout ce dont vous avez besoin, vous devrez effectuer les étapes fondamentales de configuration d'un réseau sans-fil :

N.B. : les étapes 1, 2 et 3 correspondent au niveaux correspondant du modèle OSI, alors que l'étape 4 est un complément destiné à résoudre les situations générées par les masques de réseau 255.255.255.255. En fait un masque de sous-réseau dont les 32 bits sont à 1 viole le standard OSI car cela force le réseau à utiliser la même adresse pour les messages de diffusion et les messages destinés à l'IP de la machine. De plus, l'adresse du réseau n'existe pas.

On pourrait critiquer ce point de vue, mais l'utilisation du modèle OSI pour configurer un réseau sans-fil entraînerait une perte importante lors de la configuration des sous-réseaux ; en effet, chaque sous-réseau gaspille 2 adresses IP (adresse réseau et adresse de diffusion) et cette structure fait perdre en souplesse pour l'affectation des adresses IP (de manière géographique). Vous en trouverez plus à ce sujet en annexe (cf. Annexe A. Le masque 255.255.255.255, le mandataire ARP et la fonction de pont ).

Vous noterez que l'étape 2 n'est pas nécessaire dans un réseau filaire, car il n'y a pas de paramètres particuliers à configurer à ce niveau.

Il s'agit d'un problème récurrent dans l'administration d'un PC : faire que votre noyau (ou vos logiciels d'une manière générale) reconnaisse votre matériel.

Les cartes sans-fil sont encore plus complexes car beaucoup d'entre-elles se branchent sur un port PCMCIA. Donc, vous devrez d'abord permettre à votre noyau de voir l'adaptateur PCMCIA, ensuite vous pourrez essayer d'installer le pilote matériel spécifique à votre carte sans-fil.

Dans les configurations PCMCIA, vous devrez :

  1. Installer les sources du noyau Linux, de http://www.kernel.org dans /usr/src/linux (cf. les utilitaires tar et gzip)

  2. Installer les sources des pilotes pcmcia, se trouvant sur http://pcmcia-cs.sourceforge.net/ dans /usr/src/pcmcia (voir les utilitaires tar et gzip)

  3. Configurer et recompiler votre noyau : lisez le fichier README inclus dans /usr/src/linux

  4. Configurez et recompilez les sources du pilote pcmcia : dans /usr/src/pcmcia utilisez configure et make. Assurez vous que votre pilote est présent, sinon vous devrez l'installer en suivant les instruction du pilote (normalement, un tar xvzf driver.tgz dans le répertoire pcmcia devrait suffire). Ensuite, entrez make all pour compiler. Enfin, entrez make install.

  5. Après l'installation, vous trouverez des fichiers de configuration utiles dans /etc/pcmcia.

Dans les autres cas :

  1. Si votre pilote est présent dans les sources du noyau Linux (ce qui est souvent le cas des cartes récentes), vous devrez l'installer dans un répertoire puis le compiler.

Une fois que vous connaîtrez le nom du module, vous devrez le charger : dans une configuration PCMCIA vous aurez seulement besoin de lancer le démon pcmcia (/etc/rc.d/init.d/pcmcia start sous RedHat). Pour les autres configurations, il suffira d'utiliser modprobe nom_du_module options . Dans les options, vous donnerez les ports d'E/S, ainsi que les paramètres d'IRQ et de la liaison données (voir la Section 5.3) au pilote sans-fil.

Dans tous les cas, voici les outils pouvant être utilisés pour vérifier si votre matériel est correctement reconnu par le pilote :

  1. tail /var/log/messages qui affiche les dernières entrées du journal système (syslog) ;

  2. dmesg qui affiche les messages du noyau ;

  3. le répertoire /proc : les fichiers ioports (informations sur les ports d'E/S), devices (périphériques reconnus), interrupts (IRQ) et les sous-répertoires de driver, contenant des informations spécifiques à certains pilotes.

Il s'agit du troisième problème auquel vous allez faire face. À cette étape, la situation ne devient problématique que lorsque votre réseau évolue pour devenir plus grand.

Souvenez-vous : le réseau IP sans-fil ne vous stressera pas si vous ne le stressez pas !

Une configuration simple

                      Chaque hôte voit tous les autres
 
                               A - - - - - C
                                 \       /
                               |   \   /   |
                                     /\
                               |   /    \  |
                                 /       \
                               B - - - - - D

Une configuration comme celle-ci ne requiert rien de particulier (à un niveau IP) : vous devez seulement attribuer une adresse IP à chaque hôte et un masque de sous-réseau global cohérent.

Une configuration plus complexe

                       A ne voit pas B directement
 
                                A <- - - -
                            Pas \        |
                             de \        C
                  communication \        |
                                B <- - - -

Dans ce cas, A et B ne peuvent communiquer qu'en passant par C

Si le réseau est en mode Infrastructure et que C est le point d'accès, il n'y a pas de problème. En mode Ad-hoc, vous pouvez aussi donner à un hôte le rôle de maître (Je sais que ce terme n'est pas si cérémonieux !). Celui-ci pourra créer un BSS auquel n'importe quel autre hôte pourra se joindre.

Au niveau IP, nous sommes ici totalement connectés : A et B communiquent avec C en utilisant la même interface de C. En conséquence, si vous essayez de faire un ping de A vers B, vous recevrez de nombreux paquets ICMP REDIRECT (redirection ICMP) envoyés par C, celui-ci informant A que sa destination se trouve déjà dans le réseau d'où provient sa requête.

Solution : sur la machine C, entrez echo 0 > /proc/sys/net/ipv4/conf/ethx/send_redirects (où ethx est l'interface de C vers A et B) pour annuler l'envoi de ces messages.

Un autre problème : quel masque de sous-réseau attribuer à A et B ? Si vous attribuez à A un masque qui inclut A et B, rien ne fonctionnera, car A n'utilisera pas la passerelle (C) mais fera directement des requêtes ARP afin d'obtenir l'adresse MAC de sa destination, qui hélas est injoignable directement.

Vous pourriez envisager d'utiliser un mandataire ARP (proxy arp), mais cela ne marchera pas non plus. En effet, un mandataire ARP ne répondra à la source que si la destination et la source se trouvent sur deux interfaces différentes, ce qui n'est pas le cas !

Vous devrez donc attribuer un masque de sous-réseau très petit (Win9x autorise 255.255.255.254, alors que sous WinNT il faudra au moins 255.255.255.248), et vous devez vous assurer que les hôtes A et B n'ont pas une adresse réseau identique.

Exemples :

En général, avec un masque de sous-réseau de 255.255.255.254, le système fonctionne avec 2 adresses IP en changeant simplement le dernier chiffre, et en s'assurant que si le dernier chiffre de l'un des adresses est paire, le dernier chiffre de l'autre adresse n'est pas le chiffre impair immédiatement supérieur.

Ce sont des contraintes de TCP/IP, mais c'est la seule méthode permettant d'obtenir un haut niveau de flexibilité.

Accès à Internet

                               A - - - - - C - - Internet
                                 \       /
                               |   \   /   |
                                     /\
                               |   /    \  |
                                 /       \
                               B - - - - - D

Il existe plusieurs situations :

Réseaux mixtes : filaires et sans-fil

                                Internet         
                                       \      
                                        \        E
                                         \     /
                                          \  /       sans-fil
                               A - - - - - C - - F
                                 \       /   \
                               |   \   /   |   \
                      filaire        /\          G                             
                               |   /    \  |
                                 /       \
                               B - - - - - D

Maintenant, C relie deux réseaux : sans-fil à droite et filaire à gauche.

De plus, il y a un accès à Internet, vous avez donc au total 3 cartes réseau dans C.

Quels adresses IP attribuer aux hôtes ? Vous avez deux solutions :

Examinons cette deuxième solution plus en détails

Par exemple, considérez que vous avez un sous-réseau public en x.y.z.0/24

Les interfaces sont :

ifconfig eth0 x.y.z.C netmask 255.255.255.255 # filaire
ifconfig eth1 x.y.z.C netmask 255.255.255.255 # sans-fil
ifconfig eth2 x.y.z.C netmask 255.255.255.255 # vers Internet

Les routes statiques pour eth2 sont :

route add adresse_passerelle dev eth2
route add default gw adresse_passerelle

Ces routes servent à diriger vers votre passerelle par défaut toutes les requêtes vers Internet : comme vous pouvez le remarquer, vous devez d'abord indiquer à Linux où se trouve le routeur, puis de diriger par défaut les requêtes vers celui-ci.

Routes statiques sur eth0 :

route add x.y.z.A dev eth0
route add x.y.z.B dev eth0
route add x.y.z.D dev eth0

(Les hôtes A, B et D se trouvent sur le réseau filaire.)

Routes statiques sur eth1 :

route add x.y.z.E dev eth1
route add x.y.z.F dev eth1
route add x.y.z.G dev eth1

(Les hôtes E, F et G se trouvent sur le réseau sans-fil.)

Cela vous donnera une très grande souplesse, mais vous devrez définir à la main la configuration relative à chaque hôte.



[5] NdT : les prix ont maintenant beaucoup baissé en ce qui concerne le 802.11b. L'achat d'un point d'accès peut donc se révéler une solution plus économique que l'utilisation d'une machine Linux.