L'idée...
  • L'idée est que tu veux brancher plusieurs babasses dans ta chambre, sans acheter de switch ni de hub. Prenons le cas de deux babasses dans une chambre. L'une sera une babasse normale appellée "client", l'autre sera un babasses sous Linux avec deux cartes réseau, que nous appellerons "serveur". Pour que le client puisse avoir accès au réseau à partir du serveur, il faut brancher la première carte réseau (eth0) du serveur à la prise murale, et brancher le client à la deuxième carte réseau du serveur (eth1) à l'aide d'un câble croisé (les câbles "normaux" ne sont pas croisés). Ensuite, au niveau de la configuration du serveur, il existe deux méthodes :
    1. Détection des deux cartes réseau La première chose à faire est de mettre deux cartes réseau dans le serveur et de s'assurer qu'il les détecte bien au démarrage. Deux cas se présentent :
      • Soit ça marche du premier coup : au démarrage, le serveur détecte les deux cartes réseau et leur donne des IRQs et des ports I/O différents. Pour le voir, il suffit de regarder les messages au démarrage. On les obtient en tapant dmesg.
        PCI: Found IRQ 10 for device 00:09.0
        eth0: 3Com PCI 3c905C Tornado at 0xe000,  00:01:02:1e:9b:8b, IRQ 10
          product code 4552 rev 00.13 date 05-05-00
          8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
          MII transceiver found at address 24, status 782d.
          Enabling bus-master transmits and whole-frame receives.
        eth0: scatter/gather enabled. h/w checksums enabled
        
        PCI: Found IRQ 11 for device 00:0b.0
        eth1: 3Com PCI 3c905C Tornado at 0xe400,  00:01:02:ac:ca:d4, IRQ 11
          product code 4552 rev 00.13 date 07-29-00
          8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
          MII transceiver found at address 24, status 782d.
          Enabling bus-master transmits and whole-frame receives.
        eth1: scatter/gather enabled. h/w checksums enabled
        
      • Ca ne marche pas du premier coup... dommage. Munis-toi des drivers des cartes, en particulier des programmes (souvent sous DOS) permettant de configurer l'IRQ et le port I/O des cartes. Débrouille-toi comme tu veux (s'il le faut en mettant une carte puis l'autre), mais il faut des IRQ et des port I/O différent pour chaque carte. Si tu n'arrives toujours pas à voir les deux cartes en même temps (typiquement un des deux programmes de configuration ne voit pas la carte), essayer d'échanger les deux cartes sur la carte mère.
    2. Le modules du noyau Pour faire un bridge, on a besoin du module bridge du noyau Linux. Il se trouve dans le menu "Networking Options" sous le nom "802.1d Ethernet Bridging". Active-le en module. Remarque : pour les noyaux 2.2 (en tout cas jusqu'au 2.2.20), le bridge est un module qualifié d'expérimental, alors qu'il marche très bien. Donc, pour le voir et pouvoir l'activer, il faut cocher la case "Prompt for development and/or incomplete code/drivers" dans le premier menu intitulé "Code maturity level options". Ce n'est plus le cas dans les noyaux 2.4.10 et supérieurs. Ensuite, il faut compiler ce module et l'installer :
      En utilisateur : make modules En root : make modules_install Il faut ensuite vérifier que le module marche et peut s'insérer :
      En root :modprobe bridge Si ça marche, alors on va modifier la configuration des modules pour qu'il se charge tout seul quand le périphérique "br0" est appelé. Pour cela, crée en root le fichier : /etc/modutils/bridge et met dedans la ligne suivant :
      alias br0 bridge
      puis lance update-modules.
    3. L'utilitaire de configuration du bridge C'est le programme bridge-utils qui va te permettre de configurer le bridge. Si tu es en Woody ou Sid, il est disponible directement dans la distribution. Il suffit alors de taper :
      apt-get install bridge-utils Si tu es en Potato, tu as peux télécharger le package de la Woody, puis l'installer en faisant dpkg -i xxx.deb (je n'ai pas testé...).
    4. Lancer le bridge au démarrage Tout d'abord, il faut voir quelle adresse MAC va prendre le bridge. C'est très important pour pouvoir utiliser le DHCP et aussi pour ne pas perturber les outils de surveillance du réseau de VIA. Il faut savoir que le bridge choisi son adresse MAC parmi les adresses MAC d'eth0 et d'eth1 et il prend la plus petite des deux. Pour être plus précis, il lit les adresses MAC d'eth0 et d'eth1 de gauche à droite et note la première différence : il les compare et donne au bridge l'adresse MAC où la première différence est la plus faible. Attention, les adresses MAC sont notées en hexadécimal, donc les chiffres sont plus faibles que les lettres. Un exemple : sur mon bridge :
      • eth0 a pour adresse MAC : 00:01:02:1E:9B:8B
      • eth1 a pour adresse MAC : 00:01:02:AC:CA:D4
      Donc on lit de gauche à droite, et on note la première différence : elle intervient au niveau du septième terme où on a 1 pour eth0 et A pour eth1. Comme les nombres sont plus faibles que les lettres, c'est eth0 qui a la MAC la plus faible. Donc le bridge prendra la MAC d'eth0. Maintenant que l'on sait quelle MAC prend le bridge, il faut déclarer cette MAC à VIA comme étant celle qui sera utilisée sur le réseau. Pour cela, passer en perm ou écrire à perms@via.ecp.fr. Nous allons maintenant modifier à la main /etc/network/interfaces qui est le fichier de configuration des interfaces réseau. Recopie le modèle ci-dessous, les commentaires (i.e. les lignes qui commençent par "#") doivent te permettre de comprendre chaque paramètres :
      # /etc/network/interfaces
      # Fichier de configuration des interfaces réseau sous Debian GNU/Linux
      
      # D'abord l'interface "loopback"
      auto lo
      iface lo inet loopback
      
      # Ensuite le bridge qui se configure par DHCP
      auto br0
      iface br0 inet dhcp
      # Liste des interfaces qui participent au bridge
      # ATTENTION : il faut mettre l'interface dont la MAC est la plus petite d'abord !
      # sinon, cela perturbe les outils de surveillance du réseau VIA
      	bridge_ports eth0 eth1
      # Je désactive le Spanning tree, pour ne pas perturber le réseau
      	bridge_stp off
      # Temps en secondes entre "learning state" et "forwarding state"
      	bridge_fd 2
      # Temps maximum en secondes où le script de lancement du bridge attendra
      # lors du démarrage que le bridge passe en mode "forwarding state" pour passer
      # la main et laisser les autres services démarrer.
      	bridge_maxwait 0
      
      Pour plus d'informations sur les options du bridge, lire /usr/share/doc/bridge-utils/README.Debian.gz. Pour relancer la configuration des interfaces réseau : en root :
      /etc/init.d/networking restart
      Pendant ce redémarrage, regarde ta console de log (si tu as suivi la formation depuis le début, c'est la douzième console) ou fait apparaître la fin du syslog en direct avec la commande :
      tail -f /var/log/syslog Tu verras alors 3 étapes dans la lancement du bridge :
      1. listening : il regarde sur eth0 et eth1 les packets qui arrivent,
      2. learning : il en déduit la configuration du réseau tout seul, nottamment quels adresses MAC sont derrière quels ports,
      3. forwarding : il entre en production, le réseau marche enfin !


      Précédent   Index   Suivant