我正在探索使用运行 Linux 的 qemu 进行 wifi 虚拟化。我正在尝试完成以下设置
- 接入点在第一个 qemu 实例内运行,并带有 mac80211_hwsim 模拟无线电和 hostapd 堆栈
- 该站在带有 mac80211_hwsim 模拟无线电和 wpa_supplicant 堆栈的第二个 qemu 实例中运行
- 第二个虚拟机中的站必须能够与第一个虚拟机中的接入点关联
我已经设置的内容:
- 第一个 qemu VM 生成模拟无线电并使用 hostapd 启动接入点。它定期发送信标帧,并通过
tcpdump
实用程序在 hwsim0 接口上进行监控 - 第二个 qemu VM 还将 wlan0 接口设置为具有 wpa_supplicant 配置的站,并发送在 hwsim0 接口上监控的探测请求
- 两个虚拟机都通过主机上的 Tap 接口(tap0 和 tap1)连接在网桥上,并且可以从以太网接口互相 ping 通对方和主机
到目前为止我尝试过的:
- 将流量从 hwsim 和 wlan 接口转发到以太网接口,以便它可以使用 iptables 规则到达其他虚拟机。无法使用各种组合
- 在接入点虚拟机上桥接 eth0 和 wlan 接口(br0 桥接上的 eth0 被从属,wlan0 由 hostapd 自己完成)。也没用
请记住,我们在这里谈论的不仅仅是不同的命名空间,而是两个完全不同的虚拟机,它们试图作为 AP 和工作站相互关联。我知道使用命名空间我们可以轻松实现这一点,我也尝试过。如果这不是我试图解决的问题的正确方法,您也可以建议一些其他解决方案。
答案1
你试过了吗无线网络项目?
vwifi:在 Qemu/VirtualBox/... 上的 Linux 虚拟机之间模拟 Wi-Fi (802.11)