Creación de Dispositivo Puente para VirtManager KVM-QEmu en Ubuntu 24.04 Desktop

· 10min · virt

Introducción

Uno de los problemas que tenemos cuando creamos máquinas virtuales con Virt Manager KVM y Qemu es que por defecto no nos permite colocar un interfaz de red en la máquina virtual para que dicha máquina pueda tener una configuración de red en Puente y que la tarjeta de red de la máquina pueda estar en la misma red que el servidor host.

En esta entrada realizaremos la creación de este dispositivo puente para que las máquinas virtuales puedan configurarse a nivel de red de esta manera.

Primeros pasos

Lo primero que deberíamos hacer sería instalar el paquete bridge-utils que nos permitirá crear el dispositivo puente.

sudo apt update
sudo apt install bridge-utils

Para después comprobar la configuración de red de la máquina donde hemos instalado el Virt Manager

ip a s

Esto debería sacarnos una salida similar a esta:

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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:1f:39:de brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.119/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
       valid_lft 2982sec preferred_lft 2982sec
    inet6 fe80::5054:ff:fe1f:39de/64 scope link
       valid_lft forever preferred_lft forever

Como vemos nos daría dos interfaces de red el típico lo de loopback (el 127.0.0.1) y la tarjeta de red normal en este caso se llamaría enp1s0 y tendría la dirección ip asignada de 192.168.122.119

Creando el interfaz puente

Para crear el dispositivo puente en el cado de Ubuntu 24.04 Desktop debemos usar el cli de NetworkManager llamado nmcli.

Por ejemplo si queremos que nos saque la configuración de los dispositivos, ejecutaríamos:

nmcli device status

Que podría darnos una salida similar a la siguiente:

DEVICE           TYPE      STATE                   CONNECTION
enp1s0         ethernet  conectado               Conexión cableada

Usando el nmcli el CLI de NetworkManager creamos el dispositivo

sudo nmcli connection add type bridge con-name br0 ifname br0

Posible salida:

Conexión «br0» (c92f961b-91cd-497f-9c0e-515fd97c1914) añadida con éxito.

Asociamos el Dispositivo de red físico enp1s0 como esclavo del bridge br0

sudo nmcli connection add type bridge-slave con-name enp1s0-slave ifname enp1s0 master br0

Posible salida:

Conexión «enp1s0-slave» (826865ba-2516-415b-baf8-ce6ba6b703ac) añadida con éxito.

Asignamos una ip estática 192.168.122.70 al nuevo interfaz br0:

sudo nmcli connection modify br0 ipv4.method manual ipv4.addresses 192.168.122.70/24 ipv4.gateway 192.168.122.1 ipv4.dns "8.8.8.8 8.8.4.4"

Activamos el puente

sudo nmcli connection up br0

Posible salida:

La conexión se ha activado correctamente (master waiting for slaves) (ruta activa D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/9)

Damos de baja el interfaz físico:

sudo nmcli connection down "Conexión cableada"

Posible salida:

La conexión «Conexión cableada» se desactivó correctamente (ruta activa D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/13)

Verificando la conexión

Hacemos ping al gateway

ping 192.168.122.1

Hacemos ping a google

ping google.es

Configuración de la Máquina Virtual

Como vemos en el apartado de la Tarjeta de Red (NIC) debemos configurar el dispositivo puente br0 y el modelo de dispositivo VirtIO