访问远程服务器上的虚拟框

我有一个公共IP的远程服务器(Ubuntu的)。

我已经安装了无头VirtualBox和部署机器。 现在我可以通过运行在服务器上的VirtualBox的VRDE服务器访问它,但是我需要的是能够直接访问虚拟机…所以我如何configurationnetworking? AFAIK Virtual Box不允许从外部访问它的NAT,所以它使我有桥接选项,但我只有一个外部IP可用。 我有什么select?

使用hostonlynetworking。 您为虚拟机的networkingconfiguration添加一个接口,就像交换机一样。 默认情况下,它应该添加vboxnet0

在您的机器上,您需要在内核中启用ip4转发:

 sysctl -w net.ipv4.ip_forward=1 

这应该足以允许VM访问互联网。 您可以使用iptables和FORWARD链过滤stream量,如果您为每个虚拟机添加接口,您甚至可以通过接口进行过滤并限制虚拟机之间的stream量。 这是最灵活的方式。 你可以避免桥接。

使用iptables你可以转发一个端口到本地vm:

 iptables -t nat -A PREROUTING -i eth+ -p tcp --dport 2222 -j DNAT --to 10.10.10.100:22 

其中10.10.10.100是虚拟机在vboxnet0接口上的IP地址,可通过端口2222从外部访问。 您可以手动configurationIP或在主机上使用dnsmasq作为DHCP服务器。

为你的虚拟机在/etc/dnsmasq.d/virtualbox放一个文件:

 dhcp-range=interface:vboxnet0,10.10.10.100,10.10.10.100,255.255.255.0,24h 

这将负责为VM分配IP地址和网关+ DNS信息。 在这种情况下,您也可以手动configurationDNS和网关地址为10.10.100.1 。 如果你熟悉linuxnetworkingconfiguration,你应该能够弄清楚这一点。

如果您configuration“仅主机”接口,则VirtualBox将在主机上使用虚拟接口。 您可以定义转发到该接口。

要使用主机专用接口,请启动VirtualBox,然后从“文件”菜单中select“首选项”。 在出现的窗口中select“networking”,然后按“添加”button。 添加networking后,按下右侧的“设置”button。 在那里,您可以编辑虚拟networking设置。 “IP地址”将是该虚拟networking上主机的IP地址。

确保DHCP服务器选项已closures。

如果完成,请按“确定”button。 之后,您可以在来宾计算机的networking首选项中select“仅主机”。 它会将界面默认为您在上述步骤中创build的界面。

启动虚拟机。 给它一个固定的IP地址,并设置网关。 您应该能够从主机ping来宾计算机的IP地址,反之亦然。

主机操作系统上将出现一个名为“vboxnet0”的新适配器。 通过这个,客人电脑将是可到达的,但只有从主机(当然)。 您可以像往常一样在主机上configuration端口转发,这样就可以直接访问您的guest虚拟机。