0

我有以下问题:我有 OS xUbuntu,我用 VirtualBox 运行虚拟机。我的虚拟机上的操作系统是 Debian Wheezy。我有烧瓶应用程序。我想要做的是,当我从 VM(位于 127.0.0.1:5000)启动我的应用程序时,从我的主机(xUbuntu)在浏览器上运行它。

我怎么做?

4

4 回答 4

4

VirtualBox使用一些策略来允许“来宾”VM(在您的情况下为 Debian Wheezy VM)访问您的“主机”计算机(在您的情况下为 xUbuntu)的网络。我将尝试为您简要概述每种方法,因为最后有几种方法可以做您想做的事情,并且您使用的策略可能针对您的情况。

NAT

默认使用“NAT”(网络地址转换),它基本上将您的主机设置为网络交换机,将您的所有访客图像置于“子网”下。虽然这使您的客人可以轻松访问您的网络和互联网,但它无法让您的主机轻松访问您的客人(尽管可以使用NAT 端口转发)。换句话说,您的主机 IP 可能是 192.168.1.9,但您的访客 IP 将是 10.0.2.15。如果不设置端口转发,您将无法从主机连接到 10.0.2.15,只有来自访客的连接中的数据包才能找到返回访客的路径。

桥接网络

这使您的各种来宾虚拟机看起来好像它们是与您的主机位于同一网络上的计算机。换句话说,如果您的主机从您的路由器收到 192.168.1.100 的 IP,那么您的访客可能会获得 192.168.1.101。在这种情况下,两台计算机都可以使用这些 IP 地址相互通信。但是,这意味着如果没有路由器为主机和访客提供 IP 地址(例如,如果您在笔记本电脑上运行并且没有可连接的无线接入点),主机和访客将无法通信。这也意味着您的虚拟机可以接收外部流量,这可能会产生安全隐患。最后,由于您的路由器很可能通过 DHCP 为您设置 IP,因此您的访客 IP 可能会在您启动 VM 时更改,这可能会很烦人。

所以,像这样设置你的系统可能对你有用,只要你同意你的主机必须连接到路由器,数据包将通过路由器。

内部网络

这意味着设置为“内部网络”的访客虚拟机除了与主机联系外,还可以在自己的网络上相互交谈。但是,我相信它不允许主机联系虚拟机,所以它可能不是你想要的。请注意,我在这方面没有太多经验。

仅主机网络

这会在主机计算机上创建一个新接口,可用于在主机和来宾之间发送数据包。这意味着不需要路由器来分配 IP 地址。但是,这也意味着客人无法访问互联网,只能直接连接到主机。

选择哪个?

显然,做什么取决于你的情况。正如Superuser 上的这个问题所示,似乎没有一个好的选择。答案显示了一种解决方法:让访客使用两个单独的适配器以获得多种网络风格的好处。示例是使用一个适配器用于 NAT(它允许您的客人轻松访问互联网)和另一个用于 Host-Only(允许您的主机连接到您的客人)。

如果您在设置此设置时遇到问题,请考虑使用VirtualBox 社区超级用户(对于特定于 VirtualBox 的问题,这比 StackOverflow 更好)。

于 2012-12-24T21:01:51.067 回答
1

如果主机和访客在网络中,那么您可以使用访客的 IP 地址访问应用程序。您可以使用“ifconfig”命令读取客户操作系统的 IP 地址,然后从主机的浏览器中使用 url 作为“abcd:5000”(abcd 将是您客户的 IP 地址)

于 2012-12-24T17:21:16.970 回答
1

这个问题很老了,但是谷歌搜索这个问题首先把我带到了这里。

我发现这很完美:

VBoxManage.exe modifyvm "VMnameInQuotes" --natpf1 "guestFlask,tcp,,5000,,5000"

取自http://dnfehren.github.io/blog/2012/07/20/use-python-flask-server-through-nat-virtualbox-guest/

于 2017-06-05T07:47:55.990 回答
-1

我解决了这个问题,就像这里解释的一样非常感谢大家的帮助!

于 2012-12-25T08:58:29.767 回答