22/12/2024

Commandes et Système

CentOS 7 : Comment supprimer l’interface de bridge virbr0 ?

I. Présentation

Sur certaines machines utilisant la distribution CentOS7, on peut parfois trouver une interface bizarre appelée virbr0. En réalité, il s’agit d’une interface de type bridge appelée Virtual Bridge 0 et servant essentiellement à réaliser de la translation d’adresse (ou NATNetwork Address Translation). Ceci est généralement couvert par la bibliothèque de virtualisation libvirt et les environnements virtuels (comme Gnome boxes ou VirtualBox), pour pouvoir rendre accessible depuis les réseaux extérieurs, les machines virtuelles. La question que l’on peut se poser, c’est si l’on n’a aucune utilité de ces fonctionnalités de virtualisation, comment se débarrasser de cette interface étrange ?

REMARQUE: cette bibliothèque libvirt est la plupart du temps installée sur les nouvelles machines en CentOS7 (à moins de ne pas sélectionner l'option de virtualisation). Mais, ce serait se priver d'une fonctionnalité très utile, surtout si l'on souhaite faire des containers à l'aide de docker. Donc, il est préférable de procéder uniquement à la désactivation de l'interface virbr0 plutôt que de ne pas installer libvirt.

Aussi, je vous propose dans ce tutoriel une petite procédure pour rapidement désactiver, voire supprimer l’interface virbr0 sur une distribution CentOS7, sans avoir à tout casser et tout reconstruire. D'autant que ce genre de bridge introduit des règles netfilter au niveau de l'utilitaire iptables qui ne sont pas toujours souhaitables.

II. Arrêt de l'interface virbr0

La première chose à faire c’est de constater la présence de l’interface virbr0 via la commande ifconfig :

# ifconfig
…
virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:db:0a:e9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

On peut vérifier via la commande brctl que l’on retrouve bien un bridge dédié à la virtualisation appelé virbr0:

# brctl show
bridge name     bridge id                        STP enabled     interfaces
virbr0              8000.000000000000         no

On peut également vérifier au niveau du routage que l’on dispose aussi d’une entrée concernant l’interface virbr0 :

# netstat –rn
…
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 bond1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 bond0
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

Une fois ce constat établit, on peut alors arrêter l’interface en question grâce à l’instruction suivante :

# ifconfig virbr0 down

III. Suppression de l'interface virbr0

Maintenant, on peut alors utiliser la commande brctl pour supprimer cette interface gênante en exécutant la commande ci-dessous :

# brctl delbr virbr0

La liste des interfaces actives devraient alors se résumer à celles du réseau d’entreprise et uniquement à celles-ci :

bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.1.227  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::217:a4ff:fe77:6014  prefixlen 64  scopeid 0x20<link>
        ether 00:17:a4:77:60:14  txqueuelen 1000  (Ethernet)
        RX packets 115799095  bytes 165715687327 (154.3 GiB)
        RX errors 0  dropped 497  overruns 0  frame 0
        ...
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 10.57.8.26  netmask 255.255.255.0  broadcast 10.57.63.255
        inet6 fe80::217:a4ff:fe77:6000  prefixlen 64  scopeid 0x20<link>
        ether 00:17:a4:77:60:00  txqueuelen 1000  (Ethernet)
        RX packets 18015809  bytes 8210185642 (7.6 GiB)
        RX errors 0  dropped 16849  overruns 0  frame 0
        ...
eno49: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:a4:77:60:14  txqueuelen 1000  (Ethernet)
        RX packets 115508539  bytes 165697902415 (154.3 GiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        ...
eno50: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:a4:77:60:16  txqueuelen 1000  (Ethernet)
        RX packets 288614  bytes 17667298 (16.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        ...
eno51: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:a4:77:60:00  txqueuelen 1000  (Ethernet)
        RX packets 11576493  bytes 7727678479 (7.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        ...
eno52: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:17:a4:77:60:64  txqueuelen 1000  (Ethernet)
        RX packets 6439316  bytes 482507163 (460.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        ...
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 56704  bytes 4630853 (4.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        ...

Dans l’exemple précèdent, nous présentons deux interfaces en bond (bond0 et bond1),  regroupant chacune deux interfaces principales : eno49, eno50 pour bond0 et eno51, eno52 pour bond1.

IV. Conclusion

Pour ma part, j'ai cherché assez longtemps avant de trouver ce moyen simple et efficace de neutraliser cette interface virtuelle. Ainsi, on peut se préoccuper uniquement du réseau d’entreprise LAN sans avoir à vérifier ce qui est fait en termes de routages et de translation d’adresse.

La validation de cette désactivation s’effectue en trois étapes :

  • Vérification de routage:
# netstat –rn (on ne devrait plus voir apparaître de ligne virbr0)

  • Vérification des interfaces :
# ifconfig (on ne devrait plus voir apparaître l’interface virbr0)

  • Vérification de bridge:
# brctl show
bridge name     bridge id               STP enabled     interfaces (plus de ligne)

Voilà, désormais, fini l’affichage d’interface de virtualisation dont on ne se sert pas. On peut alors facilement la supprimer. De plus, si l'on scrute l'ensemble des règles de l'utilitaire iptables, on devrait n'avoir que des chaînes vides:

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Bien évidemment, si par contre vous avez besoin d'utiliser VirtualBox ou un quelconque outil de virtualisation tel que Qemu ou KVM, alors il vous faudra recréer l'interface virbr0 et la réactiver au niveau  du réseau.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.