由于某些原因,我在虚拟机内安装了虚拟机,如下所示:
A( B( C ))
其中 A 是物理机,B 是虚拟机,网络类型为 NAT。C 也是虚拟机,网络类型为桥接。
操作系统是 Ubuntu 12.04,虚拟机管理程序是 kvm。
我可以通过 VNC 访问 B,也可以从 A 通过 ssh 访问,但对于 CI,无法使用 ssh,因为 C 一开始没有 IP 地址。而且我假设我只能通过 VNC 访问 C。
我尝试了类似的事情(在 A 上):
iptables -t nat -A PREROUTING -d $ip-of-A -p tcp --dport 6500 -j DNAT --to-destination $ip-of-B:5900
(我提到这)
但它不起作用。我正在阅读 iptables 的手册页,希望有人能帮忙 :)
答案1
我的声誉不足以发表评论。
假设所有机器都有单个网络适配器。B 是 NAT,C 是桥接的。您可以通过 A 访问 B。
是否可以通过 B 访问 C?
是否可以通过 A 访问 C?
如果可以通过 B 访问 C,则必须将端口从 A 转发到 B,并将该端口从 B 转发到 C 的端口 5900。
假设 A 的 65535 端口转发到 B 的 65535 端口,B 的 65535 端口将转发到 C 的 5900 端口以供 VNC 访问。SSH 和其他服务也可以这样做。