从VirtualBox虚拟机寻址localhost

has*_*sen 751 virtualbox localhost virtual-machine

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

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

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

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

has*_*sen 917

谷歌搜索转此:http://data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu

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

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

10.0.2.2   outer
Run Code Online (Sandbox Code Playgroud)

如果您正在测试IE8,请记得放入http://地址栏.只是直接放入IP将无法正常工作.

例如:

http://10.0.2.2:3000/
Run Code Online (Sandbox Code Playgroud)

  • 为了能够将编辑内容保存到hosts文件,请右键单击并选择"以管理员身份运行"启动记事本. (47认同)
  • 我不得不将我的VirtualBox网络"附加到"设置从"桥接适配器"切换到"NAT",这对我来说很有用. (24认同)
  • 我在ipconfig(VirtualBox中的Windows)中注意到我的VirtualBox的默认路由器就是那个IP地址......所以这对我来说很有意义. (7认同)
  • 这适用于Windows 7但不适用于Windows XP:/ (4认同)
  • 我需要访问`localhost`而不是`10.0.2.2`,因为一些想要localhost作为地址的糟糕的auth :( (4认同)
  • 我从 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 下载的 IE11/Win10 VM 似乎已经配置为在 10.0.2.2 下工作。也许对于其他可用的 VM 也是如此。我建议先检查一下,然后再考虑编辑伪/etc/hosts 的任何新的安全问题 (2认同)

Jon*_*Lin 400

苹果系统

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

转到虚拟框中的IE并localhost通过http://10.0.2.2for localhosthttp://10.0.2.2:3000for 访问localhost:3000.

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

  • 我实际上不得不在IP地址前添加'http://'才能工作(IE8/WinXP框). (38认同)
  • 只是确认你需要在VirtualBox上的IE 11/Win 8.1中使用`http://`. (8认同)
  • 但有没有办法将10.0.2.2映射到localhost:8888?我有localhost:8888作为我的数据库中的主页.在VB中转到10.0.2.2会加载HTML页面,但所有链接都会中断,因为它们指向localhost:8888 (7认同)
  • @JonathanLin我通过简单地将10.0.2.2映射到Win7主机文件上的localhost来解决它,无论如何都适用于端口:8888,所以它现在正在工作.谢谢. (2认同)

Ste*_*ier 80

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

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

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

10.0.2.2    localhost
10.0.2.2    subdomain.localhost
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案对我有一点修改:在制作新的仅主机适配器(vboxnet0)之后,编辑适配器.在弹出的窗口中,转到Adapter选项卡并复制`IPv4 Address`(例如`192.168.56.1`).然后,一旦启动VM,打开浏览器并转到`http://192.168.56.1:3000` (4认同)
  • 我无法找到"仅限主机网络"选项. (4认同)

Nic*_*dad 51

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

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

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


Pyt*_*tth 32

我不得不进入virtualbox并将我的网络设置更改为"NAT".之后,我能够localhost通过虚拟机上的模拟器在我的主机上运行http://10.0.2.2:3000


blu*_*ech 30

我发现它10.0.2.2:<port>有效,但只有在混杂模式设置正确的情况下才有效.安装我的VM后,我转到设置>网络>适配器1.

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

仅在此更改后,我就可以启动我的VM并localhost:<port>在我的VM上查看我的主机 10.0.2.2:<port>.

  • 我运行 Windows 7 作为我的主机,Windows 10 作为来宾,最后这个解决方案在 VirtualBox 4.3.30 r 10.16.10 中对我有用。谢谢! (2认同)

Bor*_*rić 29

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

Settings> Network> Adapter> Advanced>Port forwarding

只需插入新的规则和设置Host port,并Guest port80(用于HTTP)或22(对于SSH),依此类推.

然后,您只需输入即可访问该计算机 http://localhost

您可能还希望将NAT切换到透明模式.

  • @Boris您在这里描述的是如何从主机到访客服务器(端口).但问题是反过来说. (7认同)

Art*_*xel 25

苹果系统

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

10.0.2.2       localhost
10.0.2.2       127.0.0.1
Run Code Online (Sandbox Code Playgroud)

与上面的答案不同,重要的是包括两条线,否则它将无法工作.

  • 这适用于用于调试的现代图像,即/ Mac上的边缘,这就是我对此问题的看法.有一个例外:Windows 10. Windows 10不允许通过hosts文件修改localhost域(疯狂)解决方法是启用IIS并通过它设置反向代理,在更多步骤中完成相同的操作:https:// developer.microsoft.com/en-us/microsoft-edge/platform/issues/12464785/ (5认同)
  • 我不认为现在有了新的Windows版本解析器localhost及其DNS,该功能不再有效。我认为127.0.0.1也不能像这样重定向(仅主机名)。 (3认同)

Wil*_*iam 22

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

C:\ WINDOWS\SYSTEM32\DRIVERS\ETC \主机

并将您的虚拟主机链接到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
Run Code Online (Sandbox Code Playgroud)

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


小智 20

您无需更改主机文件或任何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


Cra*_*ack 8

一些事情的组合最终让我的事情发生了变化.在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上测试什么是噩梦.怎么没有更简单的方法?


Act*_*lAl 6

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

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

10.0.2.2 localhost
Run Code Online (Sandbox Code Playgroud)

将被忽略。

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

1)使用NETSH将portPort代理到主机

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=8000 connectaddress=10.0.2.2 connectport=8000
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我也使用 NETSH,效果非常好。这也是我的最佳答案。这是唯一有效的 (3认同)
  • 我使用NETSH方法。像魅力一样运作。这是IMO的最佳答案。 (2认同)
  • 这应该是公认的答案,因为它是相关的并且具有当前正在工作的答案 (2认同)