如何从主机访问在 VirtualBox 中运行的服务器?

Kir*_*and 5 networking dns virtualbox nat ubuntu

我正在 VM 上运行 Web 应用程序。

我可以localhost:8888在 VM中通过浏览器查看应用程序。

我无法在同一 URL 上看到来自主机的应用程序。这就是目标。

我试过了,VBoxManage modifyvm "VM name" --natdnshostresolver1 on但没有影响。

我的配置是:

  • 主机: Windows 7
  • 来宾: Ubuntu 16.04.1 LTS
  • 虚拟 5.1.4r110228

访客配置

(访客)ifconfig在 NAT 上时

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)
Run Code Online (Sandbox Code Playgroud)

(来宾) /etc/hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)

Dan*_*ton 8

localhost:8888URL 只是 VM 内的有效 URL。在该 VM 之外,您将必须使用ip.ad.dr.ess:8888hostname:8888。在后一种情况下,ip.ad.dr.ess引入了对解析到网络上的主机名的依赖。

默认情况下,在 VirtualBox 中创建 VM 时,网络适配器 1 设置为 NAT。这将为 VM 提供一个 IP 地址10.0.2.15/24和一个默认路由10.0.2.2(应该是您的主机)。长话短说,Windows 不会路由到它为其提供 NAT 的地址,而不会首先跳过更多的环节。

关闭 VM 并将 VM 网络适配器 1 设置更改为“桥接”将允许您的主机(以及本地网络上的任何主机)与该 VM 进行通信,而无需添加任何特殊路由或跳越。

重启虚拟机。验证您与localhost:8888. 还要验证您的连接hostname:8888(假设主机名已not添加到 /etc/hosts 文件中的环回/本地主机地址)和ip-address:8888. 编辑:根据发布的 /etc/hosts 详细信息,您are将 VM 和 webapp 绑定到环回网络。此配置在 VM 之外根本无法使用。

如果您的 Web 服务器和应用程序不依赖于它第一次配置/安装的 IP,并且您的 LAN 上有一个 DHCP 服务器,则连接到 VM 所需的唯一其他信息是 IP 地址通过 DHCP 分配给它。

要查找 VM 的 IP 地址:从 Ubuntu 桌面 (ctrl-alt-T) 打开终端/控制台窗口,我们使用主机名、ifconfig 和 grep/etc/hosts命令将这些部分放在一起并找到您的地址。在打开的终端中,键入hostname然后按回车键。这可能是gc。在同一个终端中,键入ifconfig eth0 | awk '/Bcast/{print $2}'将显示地址。您应该在 /etc/hosts 中有一行地址后跟主机名。 grep [hostname] /etc/hosts或者grep [address] /etc/hosts应该找到您需要的线路。如果您想出除当前地址后跟主机名之外的任何内容,则需要修改 /etc/hosts 文件以添加正确的信息。

LAN 上的主机现在应该能够通过端口 8888 连接到 VM 的 IP。对于这些主机/客户端访问 web 应用程序的方式hostname:8888将取决于客户端主机文件、本地 DNS,甚至可能在 DHCP 服务器上提供的 mDNS 服务.


小智 6

如果您不希望虚拟机暴露于外部网络,这里有一个使用端口转发的快速解决方案。只需在虚拟机的 NAT 设置中为 Web 和 ssh 创建这些端口转发配置文件,如下所示

在此输入图像描述