#1 楼
这个答案几乎与VirtualBox中的来宾操作系统设置有关。您只需要使用来宾OS上的网络网关地址从来宾OS连接到主机OS。在默认的Vagrant设置中,您应该能够通过默认网关访问主机。
在基于Windows的guest虚拟机上,您可以通过运行以下命令轻松确定此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
15年4月15日在11:39
这似乎对我不起作用(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
15年7月21日在14:40
其实没关系。它确实起作用。 nmap出于某种原因没有工作;不知道为什么。即使nmap没有显示它们,我仍然可以从该IP连接到主机上运行的服务。
– Ajedi32
15年7月21日在15:03
在CentOS 7.2上的netstat -rn,Docker 1.11显示了一个172.17地址作为我的网关,但是该IP与我的主机不匹配。事实证明10.0.2.2做到了。
–斯潘塞·威廉姆斯
16年7月21日在16:48
我们如何知道网关中的哪个条目?
–克拉默
18/12/3在15:49
#2 楼
从来宾访问主机的Web服务器很容易。使用两种方法可以轻松完成此操作。首先执行以下操作转到“设备”并选择“网络适配器...”。
在适配器设置中,检查“连接到”。
如果值为NAT,请执行以下操作
设置虚拟盒时的默认网关通常为
10.0.2.2
作为默认值。如果您未进行任何更改,则将起作用。但是,如果已更改它并且正在运行的来宾计算机是Windows,则按照以下命令运行并查找默认网关
ipconfig /all
如果在Linux,Unix或Mac OS上,请运行以下命令
获取它
netstat -rn | grep 'default' | awk '{print }'
转到Web浏览器并键入此默认网关,然后按输入。可以访问Web服务器。
如果值是桥接适配器,请执行以下操作
查找主机和来宾的IP地址
如果在Windows上,请运行
ipconfig
并获取ip地址如果在Linux,Unix或Mac OS上,请运行
ifconfig | grep 'inet'
并获取ip地址
ip地址类似于192.168.1.1
如果要访问主机,请在guest虚拟机中运行浏览器并输入主机的IP地址
如果要访问guest,请在主机中运行浏览器并输入ip访客地址
评论
请注意,在Linux上,netstat的-n参数使它以“ 0.0.0.0”的形式显示“默认”(也不需要grep):netstat -rn | awk'/default|^0.0.0.0/{print $ 2}'。
–喜剧
20 Dec 26 '20:44
#3 楼
另一种方法是使用“主机”类型的虚拟网络。这样就可以在来宾OS中为您提供一个接口,该接口的地址位于与您的主机所在的“外部”子网不同的本地子网中。要使此工作正常进行,必须确保以下几点:您的VM已配置了“仅主机”适配器;
您的主机服务需要侦听所有本地适配器,或者至少是您希望能够联系的适配器;
您的主机将获得自己的虚拟适配器,并且您需要弄清其IP地址并将其添加到“主机”文件中在您的来宾操作系统中(无论如何适用于来宾操作系统;在Windows XP上,它只是埋在C:/ WINDOWS / system32 / drivers / etc中的“主机”文件)。给它提供一个您要用作主机的主机名的名称。
完成此操作后,您应该能够通过编码到主机中的名称从VM中“查看”该主机。文件。例如,在我的Ubuntu 11.04主机上,我在192.168.56.1。上获得了“ vboxnet0”虚拟接口。机器中的适配器带有类似192.168.56.101之类的东西。我不需要进入我的VM,但是我认为可以通过对称地更改主机的主机文件来实现。我在来宾OS主机文件中添加了
192.168.56.1 mymachine
,它们可以(例如)在
http://mymachine/whatever
您当然可以同时设置桥接适配器和仅主机适配器。
#4 楼
您可以在VirtualBox中创建共享文件夹。这将在Virtual Box内自动创建一个“网络共享”以访问主机OS中的文件夹。在Windows XP来宾OS中,这是一个不错的步骤:
http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/
评论
这样我就可以通过/ vboxsvr / ShareName访问主机了吗?
– Naftuli Kay
2011年7月14日23:10
是的,您将设置一个与VirtualBox共享的文件夹,例如C:\ STUFF。在VirtualBox Guest OS中,您可以转到该vboxserver并访问共享文件夹。
–kobaltz
2011年7月14日在23:12
我实际上不希望共享文件夹。我需要主机的IP地址。当我得到它时,我想使用它来在主机上使用服务,即:echo“ GET / \ r \ n \ r \ n” | nc 192.168.100.100 80(从来宾向我的主机发送HTTP GET请求。)
– Naftuli Kay
2011年7月14日在23:15
在这种情况下,您可能需要将Guest OS网络适配器设置为网桥。这将从您的DHCP或路由器中提取IP地址。然后,您将能够通过IP地址而不是VBox共享文件夹本地访问主机。
–kobaltz
2011年7月14日在23:18
#5 楼
这是解决此问题的另一种方法,方法是使用附加的网络接口并设置发往主机的流量以通过附加的接口进行路由。评论
欢迎来到超级用户!最好在此处包括答案的基本部分,并仅提供链接以供将来参考。
–slhck
2012年3月28日15:38
评论
没有任何提示,很难解决您的客人实际拥有的哪个网络配置。有些不允许访问主机。尝试使用访客的默认网关地址。原来我可以通过默认网关10.0.2.2。到达它。
相关:stackoverflow.com/q/19933550/1157054 stackoverflow.com/q/16244601/1157054