Un routeur sans fils avec le Toshiba Satellite T2130CT

Objectif initial.

Créer un routeur dans le cadre du réseau sans fil communautaire (Lille-sansfil.org) à partir d'un vieil ordinateur portable récupéré dans une cave. Ce portable devra être installé dans mon grenier, le plus près possible d'une antenne installée sur une des cheminées de ma maison. Il sera administré par le réseau sans fil via ssh. Il supportera le protocole de routage ad-hoc OLSR.

Juin 2003.
Récupération d'un portable qui dormait dans la cave d'un collègue.

Spécifications :

Toshiba  T2130CT
486 DX4 75 mhz
16MB Ram
Video : Chips & Technologie 65545 - 1MB de mémoire vidéo.
DD : 520MB
Ecran : 10.4' TFT matrice active.
Carte réseau : 3com 3cce589et, remplacée ensuite par une 3Com Etherlink III 3C589TPD
Carte réseau sans fil : Compaq WL110

Choix Debian comme distribution.

J'ai choisi Debian car elle peut s'installer par le réseau est qu'elle est réputée pour sa stabilité.
Ayant déjà essayé vainement d'installer une 2.4.18 (pour ma passerelle et parce que j'avais besoin de Netfilter et du support USB), je décide de faire au plus simple en choisissant le noyau le plus stable du moment, le 2.2.22.

Installation de Debian Woody

Choix d'une méthode d'installation.

J'ai à peu près tout envisagé avant de me fixer sur le choix du réseau.
- Avec un câble parallèle (imprimante) et un serveur NFS. Si vous n'avez pas le câble en question, un carte réseau PCMCIA de base coûte à peine plus cher sur eBay et est nettement plus rapide.
- Distribution 100% disquettes : oblige à compiler le noyau sur une machine séparée, oblige aussi à créer toutes les disquettes. Peut-être que LRP ou coyote Linux sont intéressant ?
- Déplacer le disque dur dans une autre machine munie d'un CD-rom. Attention les connecteurs pour PC portable ne sont pas les même que dans les PCs de bureaux. Ce système est recommandé mais la reconnaissance du matériel en automatique lors de l'installation m'inquiète un peu...
- Acheter une carte réseau PCMCIA et installer par le réseau. La carte ne m'a coûté que 14 euros avec le port sur ebay. C'est une 10baseT 3com Mégahertz 3cce589et .

Comme par ailleurs j'ai un réseau de maison qui fonctionne avec une passerelle sous Linux (P100 - Mandrake 9.1 - Sagem f@st 800) pour le partage de la connexion Internet ADSL, cette dernière solution est vraiment la meilleure.

Ma première carte réseau arrive début Juillet 2003.

Principe d'installation par le réseau.

1) Installation d'une partie de l'OS via des disquettes.
2) Configuration du réseau.
3) Poursuite de l'installation via Internet (en se connectant à un serveur FTP hébergeant Debian).

Création des disquettes.

Il existe plusieurs jeux de disquettes de démarrage (stable, compact, idepci, bf24...). J'ai choisi la stable (6 disquettes). Si c'était à refaire, je crois que je réessaierais avec l'IDEPCI.
Ces disquettes ne peuvent pas être crée depuis l'explorateur de Windows. Il faut un utilitaire spécial pour écrire ce type de disquettes de démarrage. Une version pour Windows existe et fonctionne très bien (rawritewin, à télécharger).
Attention il faut des disquettes neuves. Si on veut s'amuser avec des disquettes récupérées cela peut prendre beaucoup de temps (pour une des disquettes j'ai du créer 4 disquettes avant de réussir à l'utiliser).

Démarrage à partir des disquettes.

1) Démarrer sur la disquette Rescue.bin
2) Fournir la disquette boot.bin.
3) Préparer le disque (formatage, partition swap...)
4) Suivre l'ordre proposé par dboostrap (l'utilitaire prenant en charge l'installation) sauf pour le point suivant :
5) Avant de configurer les modules il faut activer le support PCMCIA (j'ai passé des heures avant de réussir à configurer proprement le réseau).
6) Pour le PCMCIA il y a 2 options. La première fonctionne (l'autre "pcic" ne fonctionne pas sur ce Toshiba).
7) Lors de la configuration du réseau la première question est de mémoire un truc du genre "il y a une carte réseau PCMCIA sur votre système, voulez-vous l'utiliser pour l'installation ?". Il me semble que j'ai toujours répondu OUI mais ça n'a pas fonctionné tant que, très fatigué, j'ai commis l'erreur de répondre NON et là MIRACLE, mon réseau est devenu opérationnel et j'ai pus accéder au serveur FTP de Debian pour la suite. Rétrospectivement, je me demande si ce n'est pas un disfonctionnement dans mon câble réseau qui est à l'origine de tous ces soucis.

Installation des paquetages.

Je recommande de ne rien faire à ce moment là, une installation des paquetages minimum est faite et cela prend déjà énormément de temps. Il vaut mieux le faire ensuite en particulier après avoir choisi le serveur le plus rapide de votre coin (voir NETSELECT ci dessous).

Le moment de vérité :

Il s'agit du premier démarrage de la machine avec son nouvel OS. On est bien content quand on est arrivé là.

Paramétrage post-installation.

Rien à dire sur cette étape (mot de passe root, création utilisateur...).

Après l'installation.

NETSELECT.

Il s'agit d'un utilitaire qui sélectionne la source la plus rapide pour l'installation des paquetages. Un must quand on voit la lenteur du serveur par défaut. Le Howto Apt-get est clair mais l'étape de mise à jour des paquetages disponibles après changement des serveurs n'est pas indiquée dans le même chapitre que l'installation d'Apt-get.
Etapes pour configurer installer NETSELECT (ce qui suit le signe # est à taper sous root) :
1) Installer le paquetage #apt-get install netselect
2) Aller dans le répertoire des sources #cd /etc/apt
3) Renommer l'ancien fichier des sources #XXX
4) Récupérer le nouveau chemin pour les sources #XXX
5) Mettre à jour la liste des paquetages suite au changement de sources #XXX

Changement de la coloration du shell.

Par défaut c'est une horreur. La fonction "ls" affiche tous les fichiers en blanc sur fond noir. Donc impossible de repérer les exécutables, les répertoires, les fichiers...
Merci à Thomas Clavier de Lille Sans Fils pour le truc :
Dans /home/~/.bashrc : décommenter la ligne XXX
Dans /home/~/.bash_profile : décommenter l'appel de .bashrc.
Cela dit la coloration disparaît quand je passe sous root...

Installation des utilitaires Toshiba.

toshet : utilitaire pour les consoles.
Toshutil : utilitaires graphique.


Mise en place de l'apm (Advanced Power Management)

Installation de la carte sans fil 802-11b Compaq  WL110

Le paquetage pcmcia_cs est inclut par défaut dans la distribution de base.
modconf permet de visualiser et d'installer les modules nécessaires au fonctionnement des cartes. D'après Thomas, si les modules sont là il n'est pas nécessaire de compiler le noyau pour les activer. D'ailleurs modconf propose de charger les modules dans le noyau.
Le paquetage wireless-tools doit être installé (apt-get install wireless-tools).
D'après la doc wireless-tools si on a le message "No wireless extension", c'est qu'il faut compiler le noyau.


Mi Juillet 2003

Plus de réseau filaire.

Mon PC étant connecté à un hub, j'ai pu constater que le réseau était dans les choux (apt-get impossible...). La led orange qui indique une connexion à 10 méga bits sur mon switch (D-link 5 ports) ne s'allumait plus. Ayant l'impression que le problème vient du câble de raccordement au réseau, plutôt que de racheter un câble (±5 euros hors frais de port), je rachète une carte PCMCIA sur ebay avec un nouveau câble pour 5,5 euros + 2 euros de port. Cette nouvelle carte est une 3Com Etherlink III 3C589TPD qui fonctionne sans problème sous Linux.


Compiler le noyau.

Intéressant sur ce genre de machine pour améliorer les performances en libérant de la RAM occupée par des trucs inutiles.
Il parait que ça va prendre des heures avec un processeur aussi peu puissant (pour les standards actuels et futurs). Le mieux est de compiler un noyau sur une machine rapide et de l'installer ensuite dans la lente. A priori, quand j'aurais le temps, je vais quand même compiler sur le 486 et je vous dirais combien de temps ça aura pris.
Première compilation 29/07/03 (après avoir reçu ma nouvelle carte réseau).
Il existe d'excellents tutoriels sur le web :
Beaucoup de paquetages à télécharger (GCC - kernel-source ...) : apt-get install nom_du_paquetage.
Make menuconfig : messages d'erreur tant que l'on n'a pas téléchargé tous les paquetages. Le nom du paquetage manquant n'est pas toujours explicite (c'est idiot - au sens d'évident - mais sans GCC, le compilateur, rien n'est possible).
Choix dans menuconfig : suppression de la prise en charge SCSI (attention sur certaines machines, la prise en charge de l'USB est peut-être liée à cette prise en charge).
Ajout de la prise en charge des portables Toshiba.
Prise en charge Wireless-lan.
Temps de compilation : faire tout en une fois (&&). Le lendemain matin c'était terminé.
Normalement la compilation crée un nouveau paquet debian. Mais le lendemain de ma première tentative de compilation je n'ai pas réussi à le trouver. J'ai relancé la compilation pour étudier les messages d'erreur (entre 2 et 3 heures d'attente). Le problème venait du fichier as86, ce fichier n'est pas un paquetage en lui même et une rechercher dans Google m'a indiqué qu'il fallait récupérer le paquet bin86.
La troisième tentative de compilation aura permis de franchir l'étape de la création du paquet Debian.
Ensuite j'ai renommé le répertoire qui contient les modules et j'ai installé le nouveau noyau. Evidement je n'ai pas créé de disquette de récupération et lorsque j'ai rebooté sur le nouveau noyau : kernel panic et message du genre: un noyau pour pentium ne peut pas tourner sur un 486. Je suis pourtant sur de ne pas avoir déclaré que je compilais sur un Pentium. Peut-être que ce sont des option du genre "Toshiba notebook" qui ont mis la pagaille ?
Maintenant il faut donc que remette en place l'ancien noyau avant de pouvoir tenter une énième nouvelle compilation.

Le 08/09/03
Après quelques vacances bien agréables me voici de nouveau devant mon Toshiba. La mise en place du réseau citoyen devient urgente, car mon étudiant cobaye est lui aussi revenu de vacances et me demande ou j'en suis. Je lui promet que d'ici un mois un pourra en reparler.
Avant de partir en vacance, j'avais testé mon nouveau noyau sans rester devant l'écran (préparatifs obligent) mais en fait au début du boot le système (LILO) demande quel OS utiliser et il suffit d'indiquer LinuxOLD à ce moment là pour récupérer une machine à peu près opérationnelle (avec plein de charabia au sujet des modules). La disquette susnommée ne m'aurait donc pas été d'une grande utilité.
Ensuite je n'ai pas eu trop de problème à refaire une compilation. Je ne sais pas du tout comment cela a pu se produire mais j'avais compilé pour un Power PC (ppx86 ou quelque chose comme ça). Je corrige dans les options de compilation et en avant. A part qu'il faut d'abord supprimer le répertoire des modules (/lib/modules/2.2.22 ?) tout se passe correctement. Le paquet .deb est bien créé. Je l'installe et je reboote : le redémarrage est beaucoup plus rapide qu'avec le noyau d'origine (pas de message au sujet du SCSI...) mais j'ai quelques message ennuyeux au sujet d'Orinoco_cs et du support PCMCIA.
Demain j'essaie d'aller plus loin.

Le 12/09/03.
Me disant que j'avais peut-être raté une marche je décide de tout réinstaller en repartant des disquettes, je compile un nouveau noyau et toujours pas de pcmcia. Comme j'avais constaté que le noyau initial était un 2.2.20 et que celui compilé était un 2.2.22 je ne déplace pas mon répertoire des modules. Du coup alors que le nouveau noyau ne fonctionne pas (pour le PCMCIA), je peux rebooter sur l'ancien noyau avec un système 100% opérationnel qui me permet de récupérer des paquetages manquants.

18/09/03
En fait comme j'utilise un noyau 2.2.xx le support PCMCIA n'est pas compilable dans le noyau. Il faut donc faire une compilation supplémentaire des modules.

24/09/03.
La semaine a été riche en événements.

PCMCIA avec les noyaux 2.2.xx

Tout d'abord pour pouvoir faire fonctionner les cartes Pcmcia avec un nouveau noyau 2.2.XX il faut installer les paquetage pcmcia-cs et pcmcia-sources:
La page sur Parinux ( http://www.parinux.org/ressources/mini-howtos/noyau.html ) est très bien faite sur ce sujet.
Paquet à récupérer (apt-get) : pcmcia-cs + pcmcia-sources
Détarer dans /usr/src :
#tar -zxvf pcmcia-cs.tar.gz
Puis :
#cd /usr/src/modules/pcmcia-cs
#make clean
#make config
#cd /usr/src/linux
#make-kpkg --revision=custom.1.0 modules_image
#cd /usr/src/
#dpkg -i pcmcia-modules*.*.deb

A partir de là les cartes PCMCIA devraient fonctionner.

Tentative d'utilisation des Wireless-Tools

Le paquet debian (apt-get install wireless-tools) est bugué. Il fonctionne sans doute avec un noyau 2.4.xx mais pas avec un noyau 2.2.XX.
On s'en rend vite compte quand iwconfig renvoie un message d'erreur du genre : le driver n'a pas été compilé pour la bonne version des Wireless Extension.

Première piste : installer un noyau 2.4.18 : le problème dans mon cas c'est que même en essayant de faire un peu de message mon disque dur de 520MB est occupé à plus de 70%. J'arrive donc à récupérer le paquet des sources du noyau mais impossible de l'installer (pas assez de place). Il doit y avoir d'autres moyens (noyau précompilé, autre distribution, essayer d'installer ce noyau dès le début...) mais je renonce à poursuivre dans cette voie.

Deuxième piste : recompiler les Wireless-Tools. Ça ne me plaît pas beaucoup à priori mais je tente la manoeuvre :
        - Suppression du paquet debian : apt-get remove --XXX wireless-tools
        - Récupération d'un utilitaire de téléchargement : apt-get install wget.
        - Téléchargement des sources : #wget http://pcmcia-cs.sourceforge.net/...
        - Détarer dans /usr/src
        - Se rendre dans le répertoire /usr/src/wireless-tools.26 (de mémoire).
        - Lire la documentation
        - Make install
Attention, il y a des spécificité Debian (qui n'utilise apparemment pas le fichier ld.so.conf). Le script d'installation envoie un message du genre "don't forget to add /XXX/XXX to /XXX/XXX/ld.so.conf and run ldconfig".J'ai réussi à m'en sortir en créant le fichier XXX.so.conf avec une ligne/XXX/XXX et en lançant ldconfig.
A partir de ce moment là iwconfig fonctionne mais sans ses fichiers de configuration (/etc/pcmcia/wireless.opts pour les installations standard ou /etc/network/interfaces pour Debian). J'arrive cependant à passer les paramètres à ma carte en tapant par exemple :
# iwconfig essid bombolong
Je suis super content et décide de ne pas m'acharner sur ce petit désagrément. Pour régler le problème je vais essayer de créer un script qui s'exécutera au boot et fera rentrer tout ça dans l'ordre.
Je finit la soirée en pâmoison devant l'écran de monitoring de la carte réseau de mon portable de test qui tourne sous Windows 95. Par contre je n'arrive pas à surfer. Je pense qu'il va falloir que j'active IP_FORWARDING ou quelque chose comme ça sur ma machine Linux. Je compile encore un nouveau noyau avec l'option Advanced Routing (de mémoire).

Le 25/09/03
L'IP_FORWARDING n'est pas tout à fait standard dans Debian (ça commence à me plaire ces déviation dans la norme). Le système cat 1>...\IP_FORWARDING ne fonctionne pas car le pseudo fichier n'existe pas non plus. Je tente l'opération en remplaçant IP_FORWARDING par IP_FORWARD (le fichier existe) mais c'est sans doute une connerie.
Dans Debian il y a fichier /etc/network/options (de mémoire) qui permet de  passer ce paramètre. Je le modifie. Ensuite il y a une opération qui permet de redémarrer le réseau avec les nouveaux paramètres (/etc/network restart de mémoire).
Ensuite j'essaie de voir si je me connecte bien de mon client Windows mais je n'arrive toujours pas à surfer.
Deux pistes :
- Client sous Windows mal configuré.
- IP_FORWARDING pas activé sur Debian (mais RAS à ce sujet dans /var/log/messages).

Script de démarrage.

Encore tout un bazar dans debian.
Les script doivent être dans /ect/init.d/

En gros mon script

#! /bin/sh

# L'argument $1 est renvoyé par le système-V (start ou stop).
case $1 in
start)
#Montage des interfaces réseaux, pkoi pas fait par debian ?
ifup -- force eth0
ifup --force eth1
#Paramétrage wireless : pkoi pas dans /etc/network/interfaces ou /etc/pcmcia/wireless.opts ?
iwconfig eth1 essid bombolong
iwconfig eth1 mode ad-hoc
iwconfig eth1 channel 10
echo -1 " Script /ect/init.d/boot.yann01 OK"."
        ;;
stop)
        ;;
esac
#end

Rendre exécutable le script :
chmod 755 boot.yann01

Le rendre utilisable par debian :
#update-rc.d boot.yann01 start 99 N N N . stop 99 N N N .
(N correspond à un runlevel, attention à la syntaxe avec les points avent le stop et après le dernier chiffre). 99 permet d'exécuter ce script tout à la fin de la procédure de boot.
S'il y a start et stop dans le script :
#update-rc.d boot.yann01 default 99

Pour le jour où je n'en aurai plus besoin :
#update-rc.d boot.yann01 remove

Problèmes : il semble qu'il faille prévoir start et stop + ajouter un petit code de fin de script (voir fichier exemple skeleton).
Mis en 99 pour qu'il s'exécute après toutes les étapes du boot (cf procédure bizarre de gestion des scripts de démarrage "à la debian").

Ce script se lance avec
/etc/init.d/boot.yann01 start

Voilà à peut près la substance de ma soirée.

26/09/03

Quelques réflexions sur ma topologie de réseau.

Je crois avoir trouvé quel est le problème qui m'empêche de sortir depuis mon client wireless : erreur de topologie. Mon réseau sans fil est du type 10.59.XX.XX (interface Wireless eth1 du routeur), tandis que mon réseau filaire est du type 169.168.0.XX (interface ethernet eth0 du routeur). Sur le routeur j'ai indiqué une passerelle : 192.168.0.NN (PC relié à l'ADSL faisant du NAT et du NETFILTER). Le firewall sur la passerelle ne laisse sortir que les connexion établies depuis le réseau local (192.168.0.X) et quand je l'attaque depuis le wireless l'IP de l'émetteur est probablement de la forme 10.59.XX.XX : rejet assuré par la passerelle. Il va donc falloir que j'aille jeter un coup d'oeil dans le script qui active NETFILTER sur mon routeur. Avant, il faudrait que j'essaie de faire un ping du client Wireless vers l'interface filaire du routeur pour valider cette hypothèse.

TODO

Installer d'OLSR.

Sécuriser de la machine.
Objectif : empêcher n'importe qui de passer root sur la machine. Permettre l'administration à distance via ssh.

Permettre le war-driving.
C'est un détournement de l'objectif initial.
Le war driving consiste à se balader en ville à la recherche de réseaux sans fils. Utiliser un 486 comme base n'est pas si idiot qu'il y parait puisque ce sont des appareils bien moins gourmand en énergie que les portables modernes. Comparer l'autonomie de la bête avec celle d'un Zaurus.
Problème : il faut un noyau 2.4 pour exploiter à fond les possibilités du driver et des wireless tools ?
Logiciel Kismet ?





Page mise en ligne le 21/03/05 (bien après la prise des notes) - Dernière mise à jour le 05/04/05
Document made with Nvu    - accueil - tondeuse à gazon - GPS Linux - forum -