如何从主机访问虚拟机上的 Web 服务器

Arg*_*rgh 35 windows virtualbox web-server

我有一台运行 VirtualBox 的 Windows Vista 机器。

在 ubuntu 中,我在地址http://127.0.0.1:3000/ 上运行网络服务器

我如何从我的主机(windows 框)访问这个地址?

小智 34

您可以将访客网络模式从 NAT 更改为桥接。只需关闭您的 Ubuntu 客户机,转到 VirtualBox 中的“设置”页面,选择“网络”类别并将“附加到”列表框从 NAT 更改为桥接模式。

编辑:

按照上述步骤重新启动Ubuntu,加载后将在欢迎屏幕上显示分配的IP。即在欢迎信息中它应该说:

eth0 的 IP 地址:192.168.1.3

在主机的浏览器栏中使用此地址,然后是您使用的端口。如果它不是端口 80。即如果您将其设置为使用端口 666,那么地址将是 192.168.1.3:666

查找 IP 的另一种方法是连接到路由器内置的 HTTP 服务器并查看 LAN 设置。网络上的每台机器都应按主机名和 IP 列出。在我拥有的大多数其他路由器上,您可以通过在地址栏中键入 192.168.1.1 来完成此操作。如果失败,请在端口 81 尝试相同的地址。如果失败,请阅读手册。

  • 我是这里唯一一个认为 127.0.0.1 来宾端点只能从来宾内部访问的人吗(这是本地主机的点)?应该没有办法从访客机器之外的任何地方访问这种端点(因为它是一个环回适配器,它甚至不需要安装网卡)。 (3认同)

小智 12

取决于您如何在 Ubuntu 来宾操作系统上设置网络。如果您将其设置为使用 NAT,并且您的网络上运行着 DHCP 服务器,则只需运行以下命令:

ifconfig | grep inet
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 框中——您将看到分配给 Ubuntu 来宾的 IP 地址。

例子:

#ifconfig | grep inet
  inet addr:10.0.0.2  Bcast:10.255.255.255  Mask:255.255.255.0
  inet addr:127.0.0.1  Mask:255.0.0.0
Run Code Online (Sandbox Code Playgroud)

然后直接上http://10.0.0.2:3000


Jus*_*ott 5

您的 Windows 机器和 Ubuntu 机器(在这种情况下它们是物理的还是虚拟的并不重要)都需要在同一子网上拥有一个 IP 地址,以便它们可以通过 TCP/IP 相互通信。您可以使用私有 IP 子网之一为每个操作系统分配一个附加地址(请参阅RFC 1918)。一旦它们在同一个子网上都有一个地址,配置 web 服务器来监听你给 Ubuntu 的那个,然后在 Windows 的浏览器中使用这个 IP 来加载它。

您现在配置的 IP 127.0.0.1 是本地网络接口的环回地址。您永远不会使用该地址来访问不同系统上的某些内容,只会返回到您所在的同一系统上。使用虚拟系统时,从网络的角度来看,就像对待单独的计算机一样对待它。