从VirtualBox虚拟机寻址localhost

时间:2009-08-11 17:57:56

标签: localhost virtual-machine virtualbox

我有一个本地测试/开发服务器(当然是HTTP),正在侦听端口8000。

我正在使用Linux,所以要在Internet Explorer 6,7,8等上测试页面。我使用VirtualBox运行虚拟机;我还需要看看它在Windows环境中的外观如何(例如字体不同)。

在我的真机中,我只是使用URL http://localhost:8000打开网站,如何从虚拟机中寻址此本地主机?

现在我的解决方法是使用IP地址。有更好的想法吗?

22 个答案:

答案 0 :(得分:899)

谷歌搜索了这个:http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

建议使用IP:http://10.0.2.2,它对我有用。

所以,我编辑了主机文件C:\windows\system32\drivers\etc\hosts,并添加了这个条目:

10.0.2.2   outer

如果您正在测试IE8,请记得将http://放在地址栏中。直接放ip就行了。

例如:

http://10.0.2.2:3000/

答案 1 :(得分:385)

MACOS

我在macOS(以前的OS X)上运行Virtual Box,使用Virtual Box在Windows上测试IE等。

转到虚拟框中的IE浏览器,通过localhost访问http://10.0.2.2 localhosthttp://10.0.2.2:3000访问localhost:3000

我将网络设置保留为NAT,在我的情况下不需要桥接。无需编辑任何配置文件。

答案 2 :(得分:78)

要在OSX上启用此功能,我必须执行以下操作:

  1. 关闭虚拟机。
  2. 转到VirtualBox Preferences -> Network -> Host-only Networks ->点击" +"图标。单击“确定”。
  3. 选择您的复选框,然后点击"Settings" icon -> Network -> Adapter 2 ->在"附加到:"下拉列表,选择"仅限主机的适配器"默认情况下,您的网络(vboxnet0)应显示在下方。单击“确定”。
  4. 再次启动您的信箱后,您应该可以通过http://10.0.2.2/
  5. 访问localhost

    您可以localhost引用它,并通过添加对hosts文件(C:\windows\system32\drivers\etc\hosts)的引用来访问其他本地主机站点,如下所示:

    10.0.2.2    localhost
    10.0.2.2    subdomain.localhost
    

答案 3 :(得分:49)

您很可能将虚拟机的网络设置为NAT。如果将网络设置为Bridged,则应该能够通过其主机名访问主机。例如,如果您的主机名是“jsmith-Precision-7510”并且您想要打开http://localhost:3000/,则可以在http://jsmith-Precision-7510:3000/查看该页面。

要查找主机名,请打开终端/控制台,然后运行命令hostname。您的主机名将在下一行输出。

有关如何将网络设置设置为Bridged的说明,请参阅VirtualBox documentation

答案 4 :(得分:29)

我发现10.0.2.2:<port>有效,但只有正确设置了混杂模式。安装我的VM后,我转到设置&gt;网络&gt;适配器1。

默认情况下设置NAT,并禁用混杂模式下拉列表。我从NAT切换到桥接适配器,它启用了混杂模式下拉列表,然后更改了#34; Deny&#34;到&#34;允许虚拟机&#34;。然后我切换回NAT,再次禁用混杂模式,但保留了新值。

仅在此更改后,我才能启动我的VM并查看我的主机 我的虚拟机localhost:<port>上的10.0.2.2:<port>

答案 5 :(得分:27)

我必须进入virtualbox并将我的网络设置更改为“NAT&#39;”。之后,我能够通过localhost

从虚拟机上的模拟器点击我的主机上运行的http://10.0.2.2:3000

答案 6 :(得分:24)

如果您已将适配器连接到 NAT ,那么现在将端口转发设置为本地端口是更好,更优雅的解决方案。

Settings&gt; Network&gt; Adapter&gt; Advanced&gt; Port forwarding

只需插入新规则,然后将Host portGuest port设置为80(针对http)或22(针对ssh),依此类推。

然后您只需输入http://localhost

即可访问该计算机

You may also want to switch NAT to transparent mode.

答案 7 :(得分:23)

<强>的MacOS

如果要在Mac上使用Virtualbox设置Windows环境, 只需使用适配器上的默认NAT设置, 在Windows VM中,转到hosts文件并添加以下内容:

10.0.2.2       localhost
10.0.2.2       127.0.0.1

与上述答案不同,包含这两行非常重要,否则就无法工作。

答案 8 :(得分:21)

您需要在Windows虚拟机上编辑主机文件,方法与本地主机相同:

C:\窗口\ system32 \驱动程序\等\主机

将虚拟主机链接到10.0.2.2,如果您只是使用localhost,则替换

127.0.0.1 localhost with 10.0.2.2 localhost

例如:

10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com

这会告诉您的虚拟机指向本地计算机以获取这些域名。

答案 9 :(得分:17)

您不需要更改主机文件或任何Virtual Box配置。将设置保留在NAT中。转到Windows实例并运行“ cmd”或打开cmd.exe。执行命令“ ipconfig”并获取默认网关 IP地址。在Windows IE上浏览http://10.0.2.2:8080,将会发现与Mac Safari http://localhost:8080/http://127.0.0.1:8080

相同

答案 10 :(得分:10)

现在无法将对VM中的localhost的请求重定向到主机的localhost到Windows(https://tools.ietf.org/html/rfc6761#section-6.3),包括https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/上可用的VM

为了安全起见,Microsoft现在阻止主机文件条目将localhost的地址覆盖为回送地址:: 1以外的任何地址。因此,添加一行VM的主机文件,例如

10.0.2.2 localhost

将被忽略。

(我知道)有两种方法可以覆盖它:

1)使用NETSH代理到主机

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000

(其中10.0.2.2是VM上的默认网关,而8000是您要解析到主机上的端口。)

2)设置IIS以执行应用程序请求路由,然后将对localhost:port的请求重写为hostIP:port

https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

答案 11 :(得分:7)

一些事情的组合最终让我的事情发生了变化。 在macosx上运行烧瓶服务器。

在我的Windows VM中,我编辑了hosts文件:

  • 以管理员身份运行记事本
  • 打开C:\windows\system32\drivers\etc\hosts
  • 添加此条目:10.0.2.2 outer

在VirtualBox中关闭VM和我的Mac:

  • 转到VirtualBox > preferences > Network > Host-only Networks > +添加网络vboxnet1
  • 转到My_VM > settings > Network > Adapter 1
  • 选择Enable Network Adapter并将Attached to:设置为Bridged Adapter
  • 然后将Advanced > Promiscuous Mode:设为Allow VMs
  • 点击OK
  • 转到My_VM > settings > Network > Adapter 1
  • Attached to:设置回NAT

然后我去了Adapter 2

  • Attached to:设置为Host-only Adapter,然后选择之前添加的网络vboxnet1

我在我的Mac上启动了我的服务器,在127.0.0.1:5000上运行,现在可以通过http://10.0.2.2:5000上的虚拟机访问

在Mac上测试IE上的噩梦真是太棒了。怎么没有更简单的方法?

答案 12 :(得分:4)

我通过在网络下的Virtualbox设置中添加端口转发解决了问题。 主机IP设置127.0.0.1端口:8080 访客IP:为网站提供任何IP(比如10.0.2.5)端口:8080 现在从客户机访问http://10.0.2.5:8080使用IE

答案 13 :(得分:3)

在虚拟Box中如上所述,您可以添加此行主机文件

10.0.2.2   outer

但是为了保存它,如果您的VM中没有管理员,只需将hosts文件移动到桌面,然后编辑它以添加10.0 ....行,保存文件,并移动到其原始位置

答案 14 :(得分:2)

在虚拟框中

  1. 将您的网络设置为Bridge networking
  2. 转到高级设置混杂模式:全部允许
  3. 现在棘手的一点是你的本地主机,如果从Node.js运行,则将IP地址设置为0.0.0.0,然后查找自己的IP地址,例如cmd:ipconfig - &gt; 10.0.1.3

    使用端口号键入该地址。它会奏效。

答案 15 :(得分:2)

检查您是否可以使用以下命令访问父计算机: ipconfig(获取您的IP地址)

ping <ip>telnet <ip> <port>

如果无法访问该端口,请尝试在父防火墙中添加新的入站规则,以允许本地端口。

然后我才能访问http://<ip>:<port>

答案 16 :(得分:1)

一般步骤:

  • 公用网络(添加仅主机或网桥NIC)
  • 配置首选服务以侦听适当的接口(连接到共享NIC的接口)
  • 使用IP:端口以访问目标服务,使用属于共享网络的IP。

答案 17 :(得分:0)

在具有虚拟Windows 7的Windows上,唯一对我有用的是使用 NAT和端口转发(无法运行桥接连接)。我在这里找到了一个教程:http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/(向下滚动到“将端口转发到虚拟机”的部分。)

通过此更改,我可以在我的虚拟机上的Internet Explorer 10中使用“http://192.168.xx.x:8888/mywebsite”访问xampp网站。

我在XAMPP控制面板中找到了IP&gt; Netstat(“系统”)。

答案 18 :(得分:0)

如果您使用Virtual Box,您可以使用一行代码将Mac OSX(我认为Linux)连接到您的虚拟Windows机器 - &gt;我建议在终端中运行之前先停止此框。

sqlite3_step

我会注意到这是来自我正在运行的Dinghy文档,但是它是一个虚拟框命令,所以它实际上不应该关心你使用的虚拟框

答案 19 :(得分:0)

我需要在localhost上运行,而不是一些奇怪的IP。

1)在Mac终端上,执行environment: - MONGO_HOST=rc_db - MONGO_PORT=27017 - MONGO_ROOT_USERNAME=root - MONGO_ROOT_PASSWORD=1234@5678 - AMQP_ADDRESS=rc_queue 以查找您的本地IP地址。这可能是最后一个了。

iconfig -a

例如10.1.5.60

2)启动Windows映像。开始>输入 en7: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 38:c9:86:32:0e:69 inet6 fe80::ea:393e:a54f:635%en7 prefixlen 64 secured scopeid 0xe inet 10.1.5.60 netmask 0xfffffe00 broadcast 10.1.5.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active 来获得终端机

3)cmd

4)添加以下行 notepad c:\windows\system32\drivers\etc\hosts

5)打开IE,并且以下网址应访问您Mac上运行的服务器:10.1.5.60 localhost

答案 20 :(得分:-2)

获取运行Apache的机器的IP(inet addr:在ifconfig中)并在虚拟框浏览器地址栏中输入。

答案 21 :(得分:-2)

实际上,user477494的答案原则上是正确的。

我在其他环境(OS X主机 - 虚拟Windows XP)中应用了相同的逻辑,这就是诀窍。我确实需要循环主机LAMP堆栈以获取IP地址和Apache端口来解决,但是一旦我想出来,我就笑了。