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 virsh
ou 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 default
rede 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-list
no virt-manager e nas outras ferramentas.