从VirtualBox来宾操作系统连接到主机?


214

我本质上想从VirtualBox中的来宾访问我的主机。是否为我的主机提供了IP地址,我可以从访客那里使用它?设置此步骤是否需要其他步骤?我想访问主机的Apache,FTP和SSH服务。


1
没有任何提示,很难解决您的客人实际拥有的哪个网络配置。有些不允许访问主机。尝试访客的默认网关地址。
Turbo J

7
事实证明,我可以通过默认网关10.0.2.2访问它。
Naftuli Kay 2011年

Answers:


258

这个答案几乎与VirtualBox中的来宾操作系统设置有关。您只需要使用来宾OS上的网络网关地址从来宾OS连接到主机OS。

在默认的Vagrant设置中,您应该能够通过默认网关访问主机。

在基于Windows的客户机上,您可以通过运行以下命令轻松确定此IP地址:

ipconfig

它应该转储这样的东西:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

在此示例中,来宾可以访问主机10.0.2.2


在基于Unix / Linux的客户机上,使用以下命令:

netstat -rn

它应该转储这样的东西:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

在此示例中,来宾可以访问主机192.168.1.1


知道为什么按照您的答案使用默认网关进行连接时连接速度会非常慢吗?
Ben Swinburne

这似乎对我不起作用(Ubuntu 12.04,Vagrant 1.0)。来宾内部的默认网关显示为10.0.2.2,并且该IP的nmap失败。192.168.33.1似乎是正确的IP。(我曾config.vm.network :hostonly, "192.168.33.52"在我的配置。)
Ajedi32

其实没关系。它确实起作用。nmap出于某种原因没有工作;不知道为什么。即使nmap没有显示它们,我仍然可以从该IP连接到在主机上运行的服务。
Ajedi32

1
netstat -rn在CentOS 7.2上,Docker 1.11显示了一个172.17地址作为我的网关,但是该IP与我的主机不匹配。事实证明10.0.2.2确实如此。
斯宾塞·威廉姆斯

1
我们如何知道网关中的哪个条目?
克莱默'18

36

从来宾访问主机的Web服务器很容易。使用两种方法可以轻松完成此操作。首先执行以下操作

  • 转到设备,然后选择网络适​​配器...。
  • 在适配器设置中,检查“ 附加到”
  • 如果值为NAT,请执行以下操作

  • 设置“虚拟”框时,默认网关通常 10.0.2.2为默认值。如果您未进行任何更改,则将起作用。但是,如果已更改它,并且正在运行的客户机是Windows,则运行以下命令并找到默认网关

    ipconfig /all

    如果您使用的是Linux,Unix或Mac OS,请运行以下命令进行获取

    netstat -rn | grep 'default' | awk '{print $2}'

  • 转到Web浏览器并键入此默认网关,然后按Enter。可以访问Web服务器。

  • 如果值为“ 桥接适配器”,请执行以下操作
    • 查找主机和访客的IP地址
      • 如果您在Windows上,请运行 ipconfig并获取IP地址
      • 如果您使用的是Linux,Unix或Mac OS,请运行ifconfig | grep 'inet' 并获取IP地址
      • IP地址就像192.168.1.1
    • 如果要访问主机,请在来宾中运行浏览器并输入主机的IP地址
    • 如果要访问访客,请在主机中运行浏览器并输入访客的IP地址

9

执行此操作的另一种方法是使用“主机”类型的虚拟网络。这样就可以在来宾OS中为您提供一个接口,该接口的地址位于与您的主机所在的“外部”子网不同的本地子网中。为了使这项工作有效,您必须确保以下几点:

  • 您的VM已配置了“仅主机”适配器;
  • 您的主机服务需要在所有本地适配器上监听,或者至少在您希望能够与之联系的适配器上监听;
  • 您的主机将拥有自己的虚拟适配器,并且您需要弄清其IP地址并将其添加到来宾操作系统中的“主机”文件中(但是适用于来宾OS;在Windows XP中,它只是“主机”文件埋在C:/ WINDOWS / system32 / drivers / etc中。给它起一个您要用作主机的主机名的名称。

完成此操作后,您应该能够通过编码到主机文件中的名称从VM中“查看”主机。

例如,在我的Ubuntu 11.04主机上,我在192.168.56.1上获得了一个“ vboxnet0”虚拟接口。机器中的适配器带有类似192.168.56.101的内容。我并不需要去我的虚拟机,但我猜想会通过对称改变主机的主机文件成为可能。我加

192.168.56.1 mymachine

到来宾OS主机文件,它们可以(例如)在以下位置查看我的主机的Web服务器

http://mymachine/whatever

您当然可以同时设置桥接适配器和仅主机适配器。


0

您可以在VirtualBox中创建共享文件夹。这将在Virtual Box中自动创建一个“网络共享”,以访问主机OS中的文件夹。

在Windows XP来宾操作系统中,这是一个不错的步骤:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


这样我就可以通过/ vboxsvr / ShareName访问主机了吗?
Naftuli Kay 2011年

是的,您将设置一个与VirtualBox共享的文件夹,例如C:\ STUFF。在VirtualBox Guest OS中,您可以转到该vboxserver并访问共享文件夹。
kobaltz 2011年

我实际上不希望共享文件夹。我需要主机的IP地址。当我收到它时,我想用它来在主机上使用服务,即:(echo "GET /\r\n\r\n" | nc 192.168.100.100 80从来宾向我的主机发送HTTP GET请求。)
Naftuli Kay 2011年

1
在这种情况下,您可能需要将Guest OS网络适配器设置为网桥。这将从您的DHCP或路由器中提取IP地址。然后,您将能够通过IP地址而不是VBox共享文件夹本地访问主机。
kobaltz 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.