Tento criar um modo de ponte de rede com meu convidado QEMU VM no Arch Linux usando systemd-networkd
.
Primeiro, crio o modo bridge no Arch Linux:
# nano /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
MACAddress=[My_own_MAC_address]
[Bridge]
VLANFiltering=1
STP=1
# nano /etc/systemd/network/br0enp2s0.network
[Match]
Name=enp2s0
[Network]
Bridge=br0
# nano /etc/systemd/network/br0.network
[Match]
Name=br0
[Network]
DHCP=ipv4
# systemctl restart systemd-networkd.service
# systemctl restart NetworkManager.service
# systemctl restart systemd-networkd.service
Segundo, configuro e executo meu convidado QEMU VM no Arch Linux:
# qemu-system-x86_64 \
-monitor stdio \
-cpu host \
-device intel-hda \
-device hda-duplex \
-k es \
-machine accel=kvm \
-m 2048 \
-hda ~/Windows.7.qcow2 \
-boot once=c,menu=off \
-netdev tap,id=tap_0_GROUP,br=br0,ifname=tap_0_GROUP,script=no,vhost=on,downscript=no \
-device virtio-net-pci,netdev=tap_0_GROUP,mac=[My_own_MAC_address] \
-usb -device usb-tablet \
-rtc base=localtime \
-name "Windows 7"
QEMU 8.1.2 monitor - type 'help' for more information
(qemu)
O convidado do QEMU inicializa corretamente, mas não há rede: captura
Em vez disso, você deve usar o
bridge
netdev, cujo AFAIK é igual àqueletap
com ohelper=
parâmetro definido corretamente.Se você usar aquele
tap
sem o ajudante (geralmente encontrado em/usr/lib/qemu/qemu-bridge-helper
), provavelmente precisará de umscript=
que escravize a torneira à ponte e ajuste a torneiraup
. (Em outras palavras, thebr=
realmente não tem nenhum efeito semhelper=
set.)Observe que o auxiliar precisa que você coloque na lista de permissões a ponte a ser usada, tendo
allow br0
em/etc/qemu/bridge.conf
.Com o ajudante (porque possui setuid) a necessidade de ser root para configurar a torneira também é eliminada.