Outils pour utilisateurs

Outils du site


reseau:si5-howto23

Comment créer un switch virtuel sous linux ?

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

Pour créer un bridge, le paquet “bridge-utils” doit être préalablement installé.

Créer un bridge "à la volée"

Création du bridge br0

root@netLXC2017:/home/btssio# brctl addbr br0
root@netLXC2017:/home/btssio# ifconfig -a
br0       Link encap:Ethernet  HWaddr 0a:ce:29:99:80:7f  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 08:00:27:4a:d2:c0  
          inet adr:10.0.2.15  Bcast:10.0.2.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

...

On voit bien que le bridge br0 a été créé ! :-)

Créons un autre bridge br1 pour la route !

root@netLXC2017:/home/btssio# brctl addbr br1
root@netLXC2017:/home/btssio# brctl addbr br0
root@netLXC2017:/home/btssio# ifconfig 
br0       Link encap:Ethernet  HWaddr be:33:d7:fb:3c:c3  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

br1       Link encap:Ethernet  HWaddr b2:de:c1:60:d2:c6  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 08:00:27:4a:d2:c0  
          inet adr:10.0.2.15  Bcast:10.0.2.255  Masque:255.255.255.0
          adr inet6: fe80::a00:27ff:fe4a:d2c0/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX pac

La commande "brctl show" permet d'avoir une vue synthétique sur ce que l'on fait...

root@netLXC2017:/home/btssio# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000000000000	no		
br1		8000.000000000000	no		
root@netLXC2017:/home/btssio#

Attribuons maintenant toujours "à la volée" une adresse IP à br0

root@netLXC2017:/home/btssio# ifconfig br0 172.17.30.30/16
root@netLXC2017:/home/btssio# ifconfig br0
br0       Link encap:Ethernet  HWaddr be:33:d7:fb:3c:c3  
          inet adr:172.17.30.30  Bcast:172.17.255.255  Masque:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          RX bytes:0 (0.0 B)  TX bytes:2235 (2.1 KiB)

On détruit les bridges !

root@netLXC2017:/home/btssio# brctl delbr br1
bridge br1 is still up; can't delete it
root@netLXC2017:/home/btssio# ifconfig br0 down
root@netLXC2017:/home/btssio# ifconfig br1 down
root@netLXC2017:/home/btssio# brctl delbr br1 br0
root@netLXC2017:/home/btssio# 

Usage de la commande brctl

root@netLXC2017:/home/btssio# brctl 
Usage: brctl [commands]
commands:
	addbr     	<bridge>		add bridge
	delbr     	<bridge>		delete bridge
	addif     	<bridge> <device>	add interface to bridge
	delif     	<bridge> <device>	delete interface from bridge
	hairpin   	<bridge> <port> {on|off}	turn hairpin on/off
	setageing 	<bridge> <time>		set ageing time
	setbridgeprio	<bridge> <prio>		set bridge priority
	setfd     	<bridge> <time>		set bridge forward delay
	sethello  	<bridge> <time>		set hello time
	setmaxage 	<bridge> <time>		set max message age
	setpathcost	<bridge> <port> <cost>	set path cost
	setportprio	<bridge> <port> <prio>	set port priority
	show      	[ <bridge> ]		show a list of bridges
	showmacs  	<bridge>		show a list of mac addrs
	showstp   	<bridge>		show bridge stp info
	stp       	<bridge> {on|off}	turn stp on/off

Créer un bridge persistant

La définition d'un pont se fait normalement en utilisant la commande brctl.

Pour que la configuration soit appliquée à chaque démarrage de la machine, nous allons en fait modifier le fichier de configuration des interfaces réseau /etc/network/interfaces en utilisant le fichier de configuration d'exemple infra et en le personnalisant :

# Commentez les lignes suivantes :
# L’interface réseau principale 
#allow-hotplug eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
        bridge_stp off # stp inactif
        bridge_ports eth0
        bridge_fd 0 # pas de délai de transfert
        bridge_maxwait 0

# Décommentez ci-dessous  et commentez ci-dessus pour avoir une ip statique sur l’hôte
#auto br0
#iface br0 inet static
#       bridge_ports eth0
#       bridge_fd 0
#       address < IP de l’hôte ici, exemple: 192.168.1.20>
#       netmask 255.255.255.0
#       network <IP du réseau ici, exemple: 192.168.1.0>
#       broadcast <IP de broadcast ici, exemple: 192.168.1.255>
#       gateway <IP de la passerelle ici, exemple: 192.168.1.1>
#       # les options dns-* sont implémentées par le paquet resolvconf package, si installé
#       dns-nameservers <Adresse IP du DNS ici, exemple: 192.168.1.1>
#       dns-search votre.domaine.de.Recherche.ici
reseau/si5-howto23.txt · Dernière modification: 2020/06/08 12:13 (modification externe)