Ejemplo 1: Trabajando con redes puentes públicas
Redes puente compartiendo la interfaz física del host
En este primer ejemplo, vamos a partir del siguiente escenario:
-
No tenemos creado un puente externo
br0como hemos visto anteriormente. Por lo tanto, la interfaz del host, que en este caso se llamaenp1s0está conectada directamente a la red local del host. Para poder compartir una interfaz física usando un dispositivo macvtap no debe estar conectado a un puente externo. -
Hemos definido la red
red_macvtap:usuario@kvm~$ virsh net-define red-macvtap.xml usuario@kvm~$ virsh net-start red_macvtap -
El host está conectado a una red con direccionamiento
192.168.100.0/24, la puerta de enlace y el servidor DNS es la dirección192.168.100.1. Existe un servidor DHCP que configura de manera dinámica los equipos conectados a esta red.
Con la máquina parada, vamos a desconectar la interfaz de red a la red actual y vamos a conectarla a la red red_macvtap. Para hacer la operación de desconexión necesito la dirección MAC que obtengo con la primera instrucción:
usuario@kvm~$ virsh domiflist debian12
usuario@kvm~$ virsh detach-interface debian12 network --mac xx:xx:xx:xx:xx:xx --persistent
usuario@kvm~$ virsh attach-interface debian12 network red_macvtap --model virtio --persistent
Arrancamos la máquina, y podemos comprobar el direccionamiento que ha tomado la máquina virtual, que estará conectada a la misma red del host. Existe una limitación en la implementación de macvtap: estas conexiones no permiten la comunicación directa entre el host (suponemos que su dirección IP es 192.168.100.127) y la máquina virtual.
usuario@debian12:~$ ip a
...
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:eb:56:fd brd ff:ff:ff:ff:ff:ff
inet 192.168.100.250/24 brd 192.168.100.255 scope global dynamic enp1s0
...
usuario@debian12:~$ ping 192.168.100.127
PING 192.168.100.127 (192.168.100.127) 56(84) bytes of data.
From 192.168.100.250 icmp_seq=1 Destination Host Unreachable
...
Redes puente conectadas a un bridge externo
En este caso partimos de que hemos configurado el puente externo br0, donde está conectado el host y vamos a conectar nuestra máquina virtual. Hacemos la misma operación, pero ahora conectamos la interface de red a la red red_bridge que corresponde a la red puente:
usuario@kvm~$ virsh detach-interface debian12 network --mac xx:xx:xx:xx:xx:xx --persistent
usuario@kvm~$ virsh attach-interface debian12 network red_bridge --model virtio --persistent
Recuerda que también podemos hacer la conexión indicando al puente donde nos conectamos:
usuario@kvm~$ virsh attach-interface debian12 bridge br0 --model virtio --persistent
Accedemos a la máquina y comprobamos la configuración de la interface de red:
usuario@debian12:~$ ip a
...
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:eb:56:fd brd ff:ff:ff:ff:ff:ff
inet 192.168.100.250/24 brd 192.168.100.255 scope global dynamic enp1s0
...
Desde el host o desde cualquier otra máquina conectada a esta red, se podrá hacer una conexión a la máquina virtual sin ningún problema.
usuario@kvm~$ ping 192.168.100.250
PING 192.168.100.250 (192.168.100.250) 56(84) bytes of data.
64 bytes from 192.168.100.250: icmp_seq=1 ttl=64 time=0.418 ms
...