Introduction
La mise en réseau d’une machine virtuelle passe soit par du nat entre votre réseau ethernet et un réseau local virtuel, soit par un pont réseau (bridge).
Par défaut, s’il n’y a pas de pont réseau en place, c’est du nat sera mis en place.
L’objectif de cet article est de ponter une carte réseau pour que notre machine virtuelle puisse avoir sa propre adresse IP.
Et, la technique proposé dans cet article est applicable aux distributions UBUNTU et DEBIAN.
Etape 1 : Installation du paquet bridge-utils
Via la commande :
Etape 2 : Arret des services réseaux
Via les commandes (si je souhaite mettre eth0 dans le pont réseau) :
ifdown eth0
Etape 3 : Paramétrage des services réseaux
Dans le fichier /etc/network/interfaces , nous mettons en place le pont br0 :
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.1.213
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_stp on
bridge_maxwait 0
bridge_fd 0
Pour information, le fichier original /etc/network/interfaces était :
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.213
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
On lance le pont réseau, via la commande :
Ensuite, on ajoute la configuration du pont dans le fichier /etc/sysctl.conf :
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Et, enfin on recharge la configuration via la commande suivante :
Remarque :
A l’exécution de la dernière commande, il est possible que vous rencontriez l’erreur suivante :sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: Aucun fichier ou dossier de ce type
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: Aucun fichier ou dossier de ce type
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-arptables: Aucun fichier ou dossier de ce typePour fixer celle-ci, il suffit de charger le module br_netfilter , en tapant la commande suivante :
modprobe br_netfilterOù, en modifiant le fichier /etc/modules, en y ajoutant le module à charger au démarrage br_netfilter .
Pour être sûr que la configuration remonte bien au démarrage de l’ordinateur, on modifie le fichier /etc/rc.local en y ajoutant les lignes suivantes :
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
exit 0
Vérification du paramétrage
On lance les différentes commandes suivantes :
==> /proc/sys/net/bridge/bridge-nf-call-arptables <==
0
==> /proc/sys/net/bridge/bridge-nf-call-ip6tables <==
0
==> /proc/sys/net/bridge/bridge-nf-call-iptables <==
0
==> /proc/sys/net/bridge/bridge-nf-filter-pppoe-tagged <==
0
==> /proc/sys/net/bridge/bridge-nf-filter-vlan-tagged <==
0
==> /proc/sys/net/bridge/bridge-nf-pass-vlan-input-dev <==
0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
bridge name bridge id STP enabled interfaces
br0 8000.f80f41076180 yes eth0
Etape 4 : Paramétrage de QEMU
Il faut donner modifier les droits de l’outil qemu-bridge-helper :
Si vous ne modifiez pas les droits de ce binaire, vous aurez le message d’erreur suivant :
failed to launch bridge helper
Et, on crée le fichier de configuration /etc/qemu/bridge.conf :
Etape 5 : Lancer une machine virtuelle avec une interface réseau virtuelle sur le pont
Via la commande suivante :
Ici, la machine virtuelle sera toujours accessible via un client VNC pour accèder à la sortie écran de la machine virtuelle sur l’ip de la machine hôte. Mais en regardant le paramétrage réseau de votre machine virtuelle, vous verrez une ip allouée à l’interface réseau de celle-ci.
Références :
BridgeNetworkConnections (debian)
Documentation libvirt
QEMU - Features-Done/HelperNetworking