KVM: cómo agregar vm a un puente específico

KVM: cómo agregar vm a un puente específico

Estoy intentando agregar una máquina virtual a una VLAN que creé a través de un puente. Tengo un servidor con 4 NIC. 2 (eno1 y eno2) son NIC de administración de 1 Gig y los otros 2 (enp1s0f0 y enp1s0f1) son NIC de reenvío de 10 Gig. Aquí está mi configuración de red a través de .yaml en netplan:

network:
    version: 2
    renderer: networkd
    ethernets:
        eno1: {}
        eno2: {}
        enp1s0f0: {}
        enp1s0f1: {}

    bonds:
        bond_10G:
            interfaces:
            - enp1s0f0
            - enp1s0f1
            parameters:
                mode: balance-rr
        bond_mgmt:
            addresses:
            - 192.168.21.228/24
            gateway4: 192.168.21.1
            interfaces:
            - eno1
            - eno2
            nameservers:
                addresses:
                - 192.168.91.5
                - 192.168.91.6
                search:
                - blah.net
            parameters:
                mode: active-backup
    vlans:
        vlan66:
            dhcp4: no
            dhcp6: no
            accept-ra: no
            id: 66
            link: bond_10G
        vlan69:
            dhcp4: no
            dhcp6: no
            accept-ra: no
            id: 69
            link: bond_10G
        vlan2232:
            dhcp4: no
            dhcp6: no
            accept-ra: no
            id: 2232
            link: bond_10G

    bridges:
        br66:
            dhcp4: no
            dhcp6: no
            interfaces: [ vlan66 ]
        br69:
            dhcp4: no
            dhcp6: no
            interfaces: [ vlan69 ]
        br2232:
            dhcp4: no
            dhcp6: no
            interfaces: [ vlan2232 ]

Puedo verlos todos cuando hago un brctl show:

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br2232          8000.9e3e2f786260       no              vlan2232
br66            8000.16545d040c3a       no              vlan66
br69            8000.92c5912a358b       no              vlan69
virbr0          8000.525400e3bdfa       yes             virbr0-nic

Cuando inicio sesión en este QEMU/KVM a través de virt-manager, solo obtengo la opción virbr0 y los otros puentes no aparecen como opciones para agregarlos. ¿Hay alguna manera de hacer esto virsho simplemente lo estoy haciendo mal en virt-manager?

También intenté agregarlo a través de virt-installpero no apareció en la VLAN correcta:

sudo virt-install \
--name deb9-vm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/deb9-vm.qcow2,size=20 \
--os-type linux \
--os-variant debian9 \
--network bridge=br66 \
--graphics none \
--console pty,target_type=serial \
--location 'http://ftp.debian.org/debian/dists/stretch/main/installer-amd64/' \
--extra-args 'console=ttyS0,115200n8 serial'

Supongo que mi pregunta es ¿cómo hago para que los otros puentes aparezcan como opciones para una máquina virtual?

Respuesta1

libvirt (y por lo tanto virt-manager, virt-install, ...) no explora/conoce los puentes reales en el sistema. Ya ha definido sus VLAN y puentes a través de netplan, lo cual es excelente y el paso número 1 correcto.

De forma predeterminada, solo existe la defaultred que es un puente local basado en NAT; es necesario definir una red. En eso, usted controla qué puentes, modos de reenvío, etc. se utilizan, y si se supone que libvirt debe generar, por ejemplo, dhcp en él (como lo haría en el puente predeterminado local).

Existe el gran recurso deejemplos de planes de redque se extienden todavía, ya que aún se encuentran casos indocumentados. Pero su caso es bastante común y allí también tiene un fragmento mínimo de ese xml de red libvirt como:

<network>
  <name>vlan66</name>
  <bridge name='br66'/>
  <forward mode="bridge"/>
</network>

Usando lo anterior y adaptándolo a sus necesidades, podrá virsh net-define <xmlfilename>hacer que libvirt conozca la red. Luego podrá verlos virsh net-listen virt-manager y las otras herramientas.

información relacionada