%

Debian : Pont réseau pour QEMU

Article publié, le et modifié le
6 minutes de lecture

Cet article contient 1148 mots.
Source brute de l'article :
Commit version : 6c1c6bd

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.

Attention

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

  1. Cliquez sur le bouton [ + ] pour ajouter une nouvelle connection
  2. Sélectionnez dans la catégorie Virtuel, le choix Pont
    Network Manager : ajout d'un pont
    Network Manager : ajout d'un pont
  3. Nommez la connexion, telle que br0, ainsi que l’interface dans l’onglet ‘Pont’ (ouvert par défaut)
    Network Manager : nommer nouvelle connection 'br0'
    Network Manager : nommer nouvelle connection 'br0'
  • 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 ]
      Network Manager : ajout d'une connection Ethernet
      Network Manager : ajout d'une connection Ethernet
  • 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 ]
    Network Manager : ajout d'un pont
    Network Manager : ajout d'un pont

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’ :

  1. Source du réseau : bridge device…
    • Device name : br0
  2. 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 :

virt-manager : exemple d'interface réseau paramétrée sur le pont 'br0'
virt-manager : exemple d'interface réseau paramétrée sur le pont 'br0'


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

Astuce

⇒ 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 pour master br0, donc faisant bien partie du pont br0

⇒ 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.


Info

Enjoy-IT!
Enjoy-ID!