Chapitre 39. Monter un pont réseau

1. Principe
2. Configuration
[Important] Important

Cette partie requiert des connaissances de base en réseau Ethernet. Vous pouvez consulter une formation VIA à ce sujet.

1. Principe

L'idée est d'ajouter à votre ordinateur sous Linux la fonction de commutateur Ethernet aussi appelée pont ou bridge.

Pour ajouter à votre ordinateur sous Linux cette fonction de pont, il lui faut plusieurs cartes réseau, qui seront utilisées comme ports du commutateur, comme sur la Figure 39.1. Ce pont fonctionnera comme un commutateur Ethernet classique, en apprenant les adresses MAC qui sont derrière ses interfaces réseau pour aiguiller les trames Ethernet. En revanche, contrairement à un commutateur classique, il ne croisera pas la connexion réseau : il faudra donc relier le bridge aux autres ordinateurs par des câbles croisés, et aux autres commutateurs par des câbles droits (les câbles normaux sont des câbles droits).

Figure 39.1. Schéma d'un pont

Schéma d'un pont

2. Configuration

Installer le programme de gestion des ponts réseau :

# aptitude install bridge-utils

Lancer le bridge au démarrage

La définition d'un pont se fait normalement en utilisant la commande brctl. Pour que la configuration soit appliquée à chaque démarrage, nous allons en fait modifier le fichier de configuration des interfaces réseau /etc/network/interfaces en utilisant mon fichier de configuration d'exemple et en le personnalisant :

# mv /etc/network/interfaces /etc/network/interfaces.old
# cp ~/fichiers-config/interfaces-bridge /etc/network/interfaces

ou :

% wget http://formation-debian.via.ecp.fr/fichiers-config/interfaces-bridge
# mv /etc/network/interfaces /etc/network/interfaces.old
# mv interfaces-bridge /etc/network/interfaces
[Note] Note

Lorsque vous définissez un pont, les interfaces utilisées comme ports deviennent inutilisables au niveau réseau. En revanche, Linux définit une interface virtuelle (ici, br0), qui peut être configurée et utilisée sur l'ordinateur comme si elle était connectée au pont réseau.

Cette interface reçoit l'adresse MAC la plus faible parmi les interfaces utilisées comme ports, qui sont lues comme des nombres hexadécimaux. Ainsi, si votre pont relie les interfaces eth0 00:0c:6e:b1:c7:95, eth1 00:08:54:3d:cf:bb et eth3 00:05:5d:a1:e1:ad, l'interface virtuelle br0 prendra l'adresse MAC 00:05:5d:a1:e1:ad (son troisième chiffre, 5 étant inférieur à celui des deux autres interfaces, c et 8).

Personnalisez le nouveau fichier /etc/network/interfaces ; les lignes de commentaire doivent vous permettre de comprendre chaque paramètre :

# /etc/network/interfaces
# Fichier de configuration d'exemple des interfaces réseau
# pour faire un bridge
# Formation Debian GNU/Linux par Alexis de Lattre
# http://formation-debian.via.ecp.fr/

# Plus d'informations dans "man interfaces", "man bridge-utils-interfaces" et
# dans "/usr/share/doc/bridge-utils/README.Debian.gz"

# D'abord l'interface "loopback"
auto lo
iface lo inet loopback

# Ensuite l'interface bridge "br0" 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 peut perturber les outils de surveillance du réseau.
    bridge_ports eth0 eth1 eth2
    # Je désactive le Spanning tree
    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

Relancez la configuration des interfaces réseau :

# /etc/init.d/networking restart
Reconfiguring network interfaces: done.

Pendant ce redémarrage, regardez votre console de log (si vous avez suivi la formation depuis le début, c'est la huitième console) ou faites apparaître la fin du syslog en direct avec la commande :

% tail -f /var/log/syslog

Vous verrez alors 3 étapes dans le lancement du bridge :

  1. listening : il regarde sur les interfaces réseau physiques les packets qui arrivent,

  2. learning : il en déduit la configuration du réseau tout seul, notamment quelles adresses MAC sont derrière quels ports,

  3. forwarding : le bridge se met à fonctionner, le réseau marche enfin !