Broken tap networking on macOS host
Building QEMU with GLib newer than 2.58.3 corrupts tap networking on macOS hosts. Tap device was provided by Tun/Tap kernel extension installed from brew:
brew install tuntap
Checked revisions:
Host:
- MacBook Pro (Retina, 15-inch, Mid 2015)
- macOS Catalina 10.15.6 (19G2021)
Guest:
- Linux Ubuntu 4.4.0-206-generic x86_64
- macOS Catalina 10.15.7 as a guest, the behaviour is the same.
QEMU command line:
qemu-system-x86_64 \
-drive file=hdd.qcow2,if=virtio,format=qcow2 \
-m 3G \
-nic tap,script=tap-up.sh
tap-up.sh:
#!/bin/sh
TAPDEV="$1"
BRIDGEDEV="bridge0"
ifconfig "$BRIDGEDEV" addm "$TAPDEV"
Enabling/disabling Hypervisor.Framework acceleration (-accel hvf
) has no effect.
How to reproduce:
- Build & install GLib > 2.58.3 (tested 2.60.7)
- Build qemu-system-x86_64 with GLib > 2.58.3
- Boot any guest with tap networking enabled
- See that the external network is inaccessible
Hotfix:
- Build & install GLib 2.58.3
- Build qemu-system-x86_64 with GLib 2.58.3
- Boot any guest with tap networking enabled
- See that the external network is accessible, everything is working as expected
Moved from https://bugs.launchpad.net/qemu/+bug/1922102