macOS上的QEMU:从主机连接到guest,没有端口转发



我很难找到从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可以从主机访问。

最新更新