KVM: como adicionar vm a uma ponte específica

KVM: como adicionar vm a uma ponte específica

Estou tentando adicionar uma VM a uma vlan que criei por meio de uma ponte. Eu tenho um servidor com 4 NICs. 2 (eno1 e eno2) são NICs de gerenciamento de 1Gig e os outros 2 (enp1s0f0 e enp1s0f1) são NICs de encaminhamento de 10Gig. Aqui está minha configuração de rede via .yaml no 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 ]

Posso ver todos eles quando faço 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

Quando faço login neste QEMU/KVM via virt-manager, recebo apenas a opção virbr0 e as outras pontes não estão listadas como opções para adicioná-las. Existe uma maneira de fazer isso virshou estou simplesmente fazendo errado no virt-manager?

Também tentei adicioná-lo via virt-install, mas não caiu na vlan correta:

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'

Acho que minha pergunta é como faço para que as outras pontes apareçam como opções para uma VM?

Responder1

libvirt (e portanto virt-manager, virt-install, ...) não investiga/conhece as pontes reais no sistema. Você já definiu suas vlans e pontes via netplan, o que é ótimo e é o passo 1 correto.

Por padrão, existe apenas a defaultrede que é uma ponte local baseada em NAT, você precisa definir uma rede. Nele você controla quais pontes, modos de encaminhamento e assim por diante são usados ​​- e se o libvirt deve gerar, por exemplo, dhcp nele (como faria na ponte padrão local).

Existe o grande recurso deexemplos de netplanque são estendidos ainda que sejam encontrados casos não documentados. Mas o seu caso é bastante comum e nele também há um trecho mínimo do xml da rede libvirt como:

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

Usando o acima e adaptando-o às suas necessidades, você poderá virsh net-define <xmlfilename>fazer com que a libvirt conheça a rede. Você pode então vê-los virsh net-listno virt-manager e nas outras ferramentas.

informação relacionada