Não foi tão fácil quanto esperado.
A dica geral de @dyasny é verdadeira: é factível, de fato.
Os principais objetivos aqui são:
-
Não use ferramentas de terceiros (como virsh
, virtinst
ou libvirt
) para aprender e entender.
-
Execute VMs sem ser root com o usuário sem privilégios de administração normal.
Veja como eu fiz isso.
-
Desative a interface principal do host em /etc/network/interfaces
, comentando as linhas da rede principal.
-
Crie uma ponte de rede contendo essa interface no mesmo arquivo.
A interface original irá perder o IP que irá para a bridge.
O arquivo de configuração ficaria assim:
auto eth0 # no iface and IP stuff
auto br0
iface br0 inet static
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
address 192.168.255.253/24
gateway 192.168.255.254
- Crie uma ACL para o QEMU para permitir o tráfego para a ponte em
/etc/quemu/bridge.conf
, a propriedade para root:kvm
end permissions 0640
.
O diretório /etc/quemu/
precisa ser root:kvm
e 0770
:
sudo mkdir -v /etc/qemu
# 'br0' is the same name as used in the previous step
echo allow br0 | sudo tee -a /etc/quemu/bridge.conf > /dev/null
sudo chown -R -vc root:kvm /etc/qemu
sudo chmod -vc 0770 /etc/qemu
sudo chmod -vc 0640 /etc/qemu/*
-
Corrija o script auxiliar de ponte. Isso é realmente obrigatório como a instalação padrão, se efetivo apenas com
root
.
sudo chmod -vc u+s /usr/lib/qemu/qemu-bridge-helper
- Adicione seu usuário não privilegiado ao grupo
kvm
. Você precisará fazer logout e login (ou abrir uma nova sessão) para tornar isso efetivo.
sudo usermod -a -G kvm 'id -un'
- Reinicie a rede.
sudo service networking restart
- Agora, quando você iniciar sua VM por linha de comando, poderá usar para o dispositivo de rede uma lista de argumentos como esta:
... \
-netdev bridge,id=net0,br=br0
onde net0
é o dispositivo de rede enumerado (o primeiro neste caso) e br0
é o nome da interface de ponte como definido anteriormente.
Então, por exemplo, um exemplo de linha de comando completa pode ser este:
kvm -cpu host -machine q35 -boot order=dc -vga virtio -vnc 127.255.255.1:0 -name qemutest,process=qemutest -uuid 901f83ce-b999-459b-b1b6-a9ba94cac382 -smp cpus=4 -m size=8192 -cdrom /home/user/image.iso -drive file=/home/user/Desktop/QEMU/qemutest/qemutest-D0.qcow2,if=virtio -device virtio-net-pci,mac=02:19:3e:39:a5:de,netdev=net0 -netdev bridge,id=net0,br=br0