En mi equipo personal ahora mismo estoy utilizando Fedora y Virtual Machine Manager para gestionar mis máquinas virtuales sobre KVM. Una de las cosas que más hecho de menos de VirtualBox es la posibilidad de utilizar una interfaz puente para poder asignar una IP de mi red local a una de mis máquinas virtuales. En esta publicación veremos cómo hacerlo.

Doy por entendido que tienes un conocimiento básico de lo qué es una interfaz puente y que conoces el comando nmcli. En caso contrario, busca un poco por Internet e infórmate de si realmente necesitas crear este tipo de interfaz. 😜

Crear la interfaz puente

El primer paso es crear la interfaz puente mediante el siguiente comando:

$ sudo nmcli con add ifname br0 type bridge con-name br0
Conexión «br0» (9a659c12-715f-4186-add1-fa92a1b7fd25) añadida con éxito.

Ahora tenemos que crear la interfaz esclava que vincularemos con nuestro puente

$ sudo nmcli con add type bridge-slave ifname enp8s0 master br0
Conexión «bridge-slave-enp8s0» (5009e0de-0e28-448c-b1b4-91dd4053232e) añadida con éxito.

En mi caso voy a desactivar spanning tree (STP) porque no me hace falta.

$ sudo nmcli con modify br0 bridge.stp no

Verificamos que todo está configurado como queremos.

$ nmcli -f bridge con show br0
bridge.mac-address:                     -- 
bridge.stp:                             no
bridge.priority:                        32768 
bridge.forward-delay:                   15 
bridge.hello-time:                      2 
bridge.max-age:                         20 
bridge.ageing-time:                     300 
bridge.group-forward-mask:              0 
bridge.multicast-snooping:              sí 
bridge.vlan-filtering:                  no 
bridge.vlan-default-pvid:               1 
bridge.vlans:

Como yo tengo activa la interfaz por defecto que genera Fedora, tengo que desactivarla para poder utilizar la nueva interfaz puente.

$ sudo nmcli con down "Conexión cableada 1"
$ sudo nmcli con up br0
$ nmcli con show
NAME     UUID                                  TYPE      DEVICE  
br0      9a659c12-715f-4186-add1-fa92a1b7fd25  bridge    br0     
virbr0   b994e990-6364-4fa8-afaf-3016881b4cfb  bridge    virbr0  
enp8s0   5009e0de-0e28-448c-b1b4-91dd4053232e  ethernet  enp8s0

Crear la interfaz en VMM

Hay que crear el siguiente fichero XML que nos permitirá definir la interfaz puente en VMM. En mi caso lo he ubicado en la carpeta /tmp y lo he llamado br0.xml

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0" />
</network>

Ahora ejecutamos el siguiente comando para importar el fichero XML y que se genere la interfaz puente.

$ sudo virsh net-define /tmp/br0.xml
$ sudo virsh net-start br0

La red br0 se ha iniciado

$ sudo virsh net-autostart br0
La red br0 ha sido marcada para iniciarse automáticamente 
$ sudo virsh net-list --all 
Nombre   Estado   Inicio automático   Persistente 
---------------------------------------------------- 
br0      activo   si                  si 
nat      activo   si                  si

Si abrimos la consola de VMM ya podemos ver que se ha creado la nueva interfaz y está lista para ser usada con nuestras máquinas virtuales.

image-20210806-network-manager