KVM: как добавить виртуальную машину к определенному мосту

KVM: как добавить виртуальную машину к определенному мосту

Я пытаюсь добавить виртуальную машину в vlan, который я создал через мост. У меня есть сервер с 4 сетевыми картами. 2 (eno1 и eno2) — это 1-гигабитные сетевые карты управления, а 2 других (enp1s0f0 и enp1s0f1) — это 10-гигабитные сетевые карты пересылки. Вот моя сетевая конфигурация через .yaml в 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 ]

Я могу увидеть их все, когда делаю 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

Когда я вхожу в этот QEMU/KVM через virt-manager, я получаю только опцию virbr0, а другие мосты не перечислены как опции для добавления. Есть ли способ сделать это через virshили я просто делаю это неправильно в virt-manager?

Я также пытался добавить его через virt-install, но он не попал в нужный vlan:

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'

Думаю, мой вопрос в том, как сделать так, чтобы другие мосты отображались в качестве опций для виртуальной машины?

решение1

libvirt (и, следовательно, virt-manager, virt-install, ...) не исследуют/не знают фактические мосты в системе. Вы уже определили свои vlan и мосты через netplan, что отлично и является правильным шагом №1.

По умолчанию есть только defaultсеть, которая является локальным мостом на основе NAT, вам нужно определить сеть. В ней вы контролируете, какие мосты, режимы пересылки и т. д. используются - и должен ли libvirt порождать, например, dhcp на ней (как это было бы на локальном мосту по умолчанию).

Существует большой ресурспримеры netplanкоторые расширены до сих пор, пока не документированные случаи найдены. Но ваш случай довольно распространен и там, он также имеет минимальный фрагмент того libvirt network xml как:

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

Используя вышеизложенное и адаптируя его к вашим нуждам, вы можете тогда, virsh net-define <xmlfilename>что позволит libvirt узнать о сети. Затем вы можете увидеть их в virsh net-listvirt-manager и других инструментах.

Связанный контент