Description
Comment créer un pont réseau logiciel sous Debian, pour faciliter les communications réseaux avec les machines virtuelles, gérées par QEMU.
La machine hôte et la|les VM invitées sont sur le même segment réseau.
Installation
Le premier point est d’installer les outils nécessaires au pont réseau logiciel :
$ sudo apt install bridge-utils
Configuration
Cet article propose la configuration soit en mode CLI, soit par le biais de l’interface graphique de Network Manager.
Choisissez l’un ou l’autre, pas les deux !
CLI
Pour le principe, voici comment configurer le pont en mode CLI :
- Pour connaître le nom de votre interface réseau Ethernet filaire :
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.***.***/24 brd 192.168.***.255 scope global enp0s31f6
valid_lft forever preferred_lft forever
Dans mon cas, l’interface filaire 2 en question se nomme enp0s31f6
… adaptez à votre cas !
- Création du pont :
$ sudo brctl addbr br0
- ajout de l’interface réseau :
$ sudo brctl addif br0 enp0s31f6
- configurez le pont dans un fichier dédié, nommé pour l’exemple,
/etc/network/interfaces.d/br0
:
## DHCP ip config file for br0 ##
auto br0
# Bridge setup
iface br0 inet dhcp
bridge_ports enp0s31f6
Si vous préférez avoir une adresse IP statique sur le même segment réseau
que votre machine hôte, adaptez en utilisant static
au lieu de dhcp
et en modifiant selon votre besoin.
- Vérifiez quand même que la configuration par défaut des interfaces réseaux :
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
Si ce n’est pas le cas, adaptez ! (cela signifie que vous avez déjà modifié votre fichier)
Votre pont logiciel br0 est créé et devrait être fonctionnel.
Network Manager GUI
Ce qui suit configure le pont réseau depuis l’interface graphique de Network Manager.
L’interface graphique de Network Manager est utilisable depuis l’applet réseau de votre bureau, soit en ligne de commande grâce à :
$ sudo nm-connection-editor
- Cliquez sur le bouton [ + ] pour ajouter une nouvelle connection
- Sélectionnez dans la catégorie Virtuel, le choix Pont
- Nommez la connexion, telle que br0, ainsi que l’interface dans l’onglet ‘Pont’ (ouvert par défaut)
- Cliquez sur le bouton [ Ajouter ] pour ajouter un nouveau type de connexion
- Laissez le choix par défaut Ethernet puis cliquez sur le bouton [ Créer… ]
- Dans l’onglet ‘Ethernet’ (ouvert par défaut), à ‘Périphérique’, choisissez le périphérique réseau de type Ethernet avec lequel vous souhaitez fonctionner
- Cliquez sur le bouton [ Enregistrer ]
- Vérifiez dans les onglets ‘Paramètres IPv4’ et ‘Paramètres IPv6’, que les méthodes soient de types Automatique - bien sûr ceci est valable si sur votre réseau, vous avez un serveur DHCP ; autrement en choisissant selon votre cas, par exemple si vous préférez un adresse IP statique, en paramétrant sur ‘Manuel’, etc…
- Une fois terminé, clique sur le bouton [ Enregistrer ]
Votre pont réseau logiciel est créé !
QEMU
Hormis le fait d’installer QEMU sur votre machine hôte, il est nécessaire d’installer les bibliothèques libvirt ; celles-ci s’installent en dépendance du paquet virt-manager.
$ sudo apt install libosinfo-bin qemu-system virt-manager
virt-manager
Lors de la création de votre machine virtuelle, dans les détails de l’interface réseau, il faut paramètrer selon votre propre pont réseau, tel que pour reprendre le propos d’un pont nommé ‘br0’ :
- Source du réseau : bridge device…
- Device name : br0
- Modèle du périphérique : soit virtio, soit e1000e
(de dernier émule un périphérique de marque Intel de qualité réseau indéniable)
- État du lien : veillez à ce que la case à cocher [ ] actif, le soit.
Pour l’exemple :
L’édition de votre machine virtuelle peut se faire en mode CLI, aussi,
en appelant l’outil virsh
, tel que pour l’exemple :
$ virsh --connect qemu:///system edit nom-votre-vm
ce qui vous donnera accès à son fichier XML où vous pourrez entre autre
modifier la section interface
, tel que :
(…)
<interface type='bridge'>
<mac address='00:00:00:ad:a1:9f'/>
<source bridge='br0'/>
<model type='e1000e'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
(…)
virt-install
Si jamais vous créez votre VM avec l’outil virt-install
, utilisez le
paramètre network
pour spécifier l’utilisation du pont br0,
tel que pour l’exemple :
$ vir-install … --network bridge=br0,model.type=e1000,type=bridge …
Vérifications
Pensez à redémarrer soit la machine hôte, soit à redémarrer la couche réseau
$ sudo systemctl restart network-manager
⇒ Vérifions avec l’outil contrôleur :
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2ef40298a3d6 yes enp0s31f6
On a bien un pont nommé br0
avec pour interface ethernet enp0s31f6
,
comme le montre la capture écran de l’interface graphique ci-dessus.
⇒ puis par vérifier avec l’outil bridge
:
$ bridge link
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 100
⇒ continuons avec l’outil ip
pour vérifier les différentes interfaces réseaux :
$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 192.168.***.128/24 brd 192.168.***.255 scope global dynamic noprefixroute br0
valid_lft 36709sec preferred_lft 36709sec
inet6 fe80::****:****:****:****/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- nous avons bien le pont
br0
en tant qu’interface 3 - l’interface réseau 2
enp0s31f6
ayant pourmaster br0
, donc faisant bien partie du pontbr0
⇒ puis vérifions la route par défaut :
$ ip r
default via 192.168.***.1 dev br0 proto dhcp src 192.168.***.128 metric 425
192.168.***.0/24 dev br0 proto kernel scope link src 192.168.***.128 metric 425
- la route par défaut est bien celle de ma passerelle passant par le pont…
Voilà !
Rien de bien compliqué pour créer un pont logiciel réseau pour la communication de vos VM, sur le même segment réseau que votre machine hôte.
Enjoy-IT!
Enjoy-ID!