KVM: So fügen Sie eine VM zu einer bestimmten Bridge hinzu

KVM: So fügen Sie eine VM zu einer bestimmten Bridge hinzu

Ich versuche, eine VM zu einem VLAN hinzuzufügen, das ich über eine Bridge erstellt habe. Ich habe einen Server mit 4 Netzwerkkarten. 2 (eno1 und eno2) sind 1-Gigabit-Verwaltungs-Netzwerkkarten und die anderen 2 (enp1s0f0 und enp1s0f1) sind 10-Gigabit-Weiterleitungs-Netzwerkkarten. Hier ist meine Netzwerkkonfiguration über .yaml in 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 ]

Ich kann sie alle sehen, wenn ich Folgendes mache 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

Wenn ich mich über virt-manager bei diesem QEMU/KVM anmelde, wird mir nur die Option virbr0 angezeigt und die anderen Bridges werden nicht als Optionen zum Hinzufügen aufgelistet. Gibt es eine Möglichkeit, dies über virt-manager zu tun, virshoder mache ich es im virt-manager einfach falsch?

Ich habe auch versucht, es über hinzuzufügen virt-install, aber es ist nicht im richtigen VLAN gelandet:

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'

Ich schätze, meine Frage ist, wie ich es schaffe, dass die anderen Bridges als Optionen für eine VM angezeigt werden?

Antwort1

libvirt (und damit virt-manager, virt-install, ...) prüft/kennt die tatsächlichen Brücken im System nicht. Sie haben Ihre VLANs und Brücken bereits über Netplan definiert, was großartig ist und der richtige Schritt Nr. 1.

Standardmäßig gibt es nur das defaultNetzwerk, das eine NAT-basierte lokale Brücke ist. Sie müssen ein Netzwerk definieren. Darin steuern Sie, welche Brücken, Weiterleitungsmodi usw. verwendet werden - und ob libvirt z. B. DHCP darauf starten soll (wie es auf der lokalen Standardbrücke der Fall wäre).

Es gibt die große Ressource vonNetplan-Beispieledie erweitert werden, da bisher undokumentierte Fälle gefunden wurden. Aber Ihr Fall ist ziemlich häufig und darin ist auch ein minimaler Ausschnitt dieser libvirt-Netzwerk-XML enthalten, wie:

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

Wenn Sie das oben genannte verwenden und an Ihre Bedürfnisse anpassen, können Sie virsh net-define <xmlfilename>libvirt über das Netzwerk informieren. Sie können sie dann virsh net-listaber im virt-manager und den anderen Tools sehen.

verwandte Informationen