我很难找到从macOS Big Sur主机访问运行在QEMU上的Linux客户机系统的解决方案。
我发现唯一的解决方案是端口转发(使用例如SSH的-net user,hostfwd=tcp::2200-:22
)。这可以工作,但不方便,因为我需要转发我需要使用的所有端口,并且我希望能够使用脚本,应用程序等,而不必到处调整端口。
所以有一个IP从主机连接到客户端是最好的,但令人惊讶的是,我找不到一个容易做到这一点的。
我也曾尝试过类似的设置,而经过批准的答案帮了我很大的忙。
通过使用QEMU 7.1+,你可以利用苹果的VMNET框架与没有端口转发的虚拟机联网。
QEMU在-netdev vmnet-shared / vmnet-bridged / vmnet-host
中使用了这一点更多细节可以在手册页man qemu-system-aarch64
找到。我有一个简短的总结:https://gist.github.com/max-i-mil/f44e8e6f2416d88055fc2d0f36c6173b
我在网上找到的与此相关的文章似乎只适用于旧版本的macOS。
看起来新版本的macOS有一个新的机制,叫做vmnet。
QEMU的补丁最近实现了:https://gitlab.com/qemu-project/qemu/-/issues/465
使用这个补丁,使用-nic vmnet-host
可以从主机访问客户机(在一个称为bridge100
的接口上)。
目前,最新的QEMU稳定版本(7.0.0)不包括这个补丁,但是可以使用brew从git构建最新的HEAD,它包含了这个更改(但不能被认为是稳定的!),使用brew install qemu --HEAD
。
之后,通过更新PATH env变量或直接使用完整路径执行二进制文件,确保使用正确的qemu二进制文件。应该是这样的:/usr/local/Cellar/qemu/HEAD-7077fcb/bin/
socket_vmnet
可能会解决您的问题
https://github.com/lima-vm/socket_vmnet
As Lima claims
guest IP由macOS提供的DHCP服务器分配。客户端可以访问internet,并且客户端IP可以从主机访问。