我在 Debian 10 主机上有一个由 QEMU 3.1.0 虚拟化的 Windows 10 客户机。除了与特定服务器(比如说)的传出连接之外,不得允许该虚拟机访问互联网git.example.com:22
。配置此类网络的最佳方法是什么?
访问虚拟机的用户在来宾内部具有 root 访问权限,并且可以修改内部的任何内容(甚至是来宾防火墙)。所以我想要一个主机端解决方案来防止未经允许的互联网访问。最好的解决方案是虚拟机可以像完全访问互联网一样访问服务器。
我尝试的是使用受限用户网络配置启动 qemu 并转发来宾 TCP 连接:
$ qemu-system-x86_64 -m 8192 -hda VM.vmdk \
-device rtl8139,netdev=inet0,mac=AA:BB:CC:DD:EE:FF \
-netdev user,id=inet0,net=192.168.0.0/24,restrict=yes,guestfwd=tcp:git.example.com:22-tcp:git.example.com:22
这给出了这个错误消息:
qemu-system-x86_64: Invalid guest forwarding rule 'tcp:git.example.com:22-tcp:git.example.com:22'
而且 IP 地址也不起作用:
$ qemu-system-x86_64 -m 8192 -hda VM.vmdk \
-device rtl8139,netdev=inet0,mac=AA:BB:CC:DD:EE:FF \
-netdev user,id=inet0,net=192.168.0.0/24,restrict=yes,guestfwd=tcp:1.2.3.4:22-tcp:1.2.3.4:22
这给出了这个错误消息:
qemu-system-x86_64: Conflicting/invalid host:port in guest forwarding rule 'tcp:1.2.3.4:22-tcp:1.2.3.4:22'
我在这里做错了什么?如果 qemu 无法开箱即用地解决这个问题,我可以通过主机的防火墙(iptables)实现解决方案吗?
非常感谢你的帮助。