是否可以创建一个 IPtables 规则,将主机上端口 80 上的所有传入流量转发到 qemu VM 的端口 80?
qemu 可以实现这样的场景吗?
答案1
是的,实际上我是在我的个人测试环境中这样做的(我有一个公共网站,可以访问我家用 PC 上的 QEMU-KVM VM)。
基本上,如果虚拟机具有网络访问权限,那么您只需处理路由问题。
我在我的虚拟机中设置了几个假公司“部门”来测试不同类型的设置,每个环境都有自己的子网挂载特定的 virbr* 设备(virbr1 恰好是网站虚拟机的虚拟接口,但你是接口编号显然会有所不同。
此时,您可以按照与要对某个物理计算机执行 NAT 的方式来对待它,只有虚拟机管理程序可以通过 IP 地址访问该物理计算机。
我的互联网路由器将端口 80 转发到虚拟机管理程序,而虚拟机管理程序将 NAT 的端口 80 转发到与 KVM 关联的私有 IP:
-A PREROUTING -d 192.168.1.9/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.1.9:80
192.168.1.9 是我的虚拟机管理程序的 IP 地址,10.0.1.9 是我运行 apache 的虚拟机的 IP 地址。
答案2
一种简单的解决方案:
qemu --enable-kvm -boot d image.vdi -m 1000 -redir tcp:80::80