我使用 Arch Linux(最新版)和 QEMU-KVM、libvirt 和 virt-manager 作为前端。我有几台虚拟机,但目前一次只能运行一台。我尝试运行的虚拟机运行在 Debian 10 上,但我也有一台 Kali 和一台 CentOS 7,当我尝试类似操作时,也遇到了同样的问题。
我尝试用于 macvtap 的接口是连接到 wifi 接入点(WPA2)的无线网卡(在 Thinkpad T580 笔记本电脑上)。
我正在尝试设置 macvtap 接口,以将主机上的 wlp4s0 连接桥接到我的一台虚拟机。为此,我使用了 virt-manager。我在 macvtap 上尝试了桥接和 VEPA 模式,并在虚拟机上尝试了所有类型的接口(虚拟硬件),但都无济于事,因为没有网络连接。但是,NAT 模式在所有虚拟机上都可以正常工作。
Libvirt 确实将设备(主机上的 wlp4s0)置于混杂模式,尽管 ip-link 没有显示它(/sys/devices/... 中的标志仍在变化,并且 dmesg 确实说了一些关于它进入混杂模式的信息)。
当启动 Wireshark 并从 VM ping 网关(具有固定 IP)时,我确实看到了 macvtap 和 wlp4s0 上主机上的 ARP 请求,但没有响应。
当使用 dhcp 时,dhclient 没有得到任何响应。
我可以提供更多信息。如果您知道是什么原因造成的,我很乐意听取您的建议!
答案1
据我所知,您仍然不能使用无线网卡进行这样的访客桥接。
来自 wiki.libvirt.org:
重要的提示:不幸的是,无线接口不能连接到 Linux 主机桥,所以如果您通过无线接口(“wlanX”)连接到外部网络,您将无法为您的访客使用这种网络模式。
答案2
即使它不完全符合您的要求,您也可以通过无线接口使用桥接网络。
请参阅此答案以了解更多信息:https://unix.stackexchange.com/a/159198/249572 您不需要执行答案中的第 5 步,而是需要在两个接口上启用代理 arp,如其中一条评论所述:
sysctl net.ipv4.conf.wlp4s0.proxy_arp=1
sysctl net.ipv4.conf.virbr1.proxy_arp=1
您还可以测试为无线和 macvtap 接口启用代理 arp,看看它是否有效。