从 VirtualBox 虚拟机寻址本地主机
-
12-09-2019 - |
题
我有一个本地测试/开发服务器(当然是 HTTP),监听端口 8000。
我正在 Linux 上工作,因此要在 Internet Explorer 6、7、8 等上测试该页面。我使用 VirtualBox 运行虚拟机;我还需要看看它在 Windows 环境中的 Firefox 上的外观(例如字体不同)。
在我的真机中,我只需使用 URL 打开网站 http://localhost:8000
, ,如何从虚拟机寻址此本地主机?
现在我的解决方法是使用 IP 地址。还有更好的想法吗?
解决方案
谷歌搜索接通此设置: http://data.agaric.com /本地主机 - 从 - 的virtualbox-XP-安装-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/
其他提示
MACOS
我在MacOS(先前OS X)运行虚拟盒,使用虚拟盒测试IE在Windows等
经由localhost
为http://10.0.2.2
,或localhost
为http://10.0.2.2:3000
转到IE在虚拟箱和访问localhost:3000
。
我一直在网络设置,NAT,不需要桥在我的情况下,建议以上。有没有必要修改任何配置文件。
要在 OSX 上启用此功能,我必须执行以下操作:
- 关闭您的虚拟机。
- 去
VirtualBox Preferences -> Network -> Host-only Networks ->
单击“+”图标。单击“确定”。 - 选择您的框并单击
"Settings" icon -> Network -> Adapter 2 ->
在“附加到:”下拉列表中,选择“仅主机适配器”和您的网络(vboxnet0
) 默认情况下应该显示在下面。单击“确定”。 - 再次启动盒子后,您应该能够访问 localhost
http://10.0.2.2/
您可以参考它 localhost
并通过将引用添加到主机文件来访问其他本地主机站点(C:\windows\system32\drivers\etc\hosts
)像下面这样:
10.0.2.2 localhost
10.0.2.2 subdomain.localhost
您最有可能有你的虚拟机的网络设置为NAT。如果您的网络设置为桥接,你应该能够通过它的主机名来访问您的主机。例如,如果你的主机名是“jsmith的精密-7510”和你想打开的http://本地主机:3000 / ,您将能够在 HTTP来查看网页:// JSMITH精密-7510:3000 /
要找到你的主机名,打开一个终端/主机,然后运行命令hostname
。主机名将下一行被输出。
查看 VirtualBox的文档关于如何设置你的网络的说明setttings至桥。
我不得不进入VirtualBox和改变我的网络设置为“NAT”。在那之后,我能够通过localhost
VirtualBox上打http://10.0.2.2:3000
运行我的主机上从我的模拟器
我发现10.0.2.2:<port>
作品,但是只有当混杂模式被正确设定。安装我的VM之后,我去设置>网络>适配器1。
NAT是默认设置,和混杂模式下拉被禁用。我从NAT切换到桥接适配器,这使混杂模式下拉列表,然后从“拒绝”改变值设定为“允许VM”。然后我切换回NAT,其中禁用混杂模式再次,但保留了新的值。
只有在此变更之后,我能够启动我的虚拟机,看看我的主机上
localhost:<port>
在我的VM在10.0.2.2:<port>
。
如果您连接了适配器 网络地址转换, ,现在将端口转发设置为本地端口是更好、更优雅的解决方案。
Settings
> Network
> Adapter
> Advanced
> Port forwarding
只需插入新规则并设置 Host port
和 Guest port
到 80
(对于http)或 22
(对于 ssh),等等。
然后你可以通过输入访问该机器 http://localhost
<强>的MacOS 强>
如果你想建立与VirtualBox的Windows环境在Mac上, 只使用适配器上的默认NAT设置, 并在您的Windows虚拟机,去hosts文件,并添加以下内容:
10.0.2.2 localhost
10.0.2.2 127.0.0.1
不同于上面的答案,它包括两条线是很重要的,否则将不能工作。
您需要编辑您的主机您的Windows虚拟机上的文件您的本地主机做同样的方式:
C:\窗口\ system32 \驱动程序\等\主机
和您的虚拟主机链接到10.0.2.2,如果你只是使用本地主机则更换
127.0.0.1本地主机与本地主机10.0.2.2
例如:
10.0.2.2 localhost
10.0.2.2 local.site1.com
10.0.2.2 local.site2.com
这告诉你的虚拟机指向本地机器的域名。
您不需要更改主机文件或任何 Virtual Box 配置。保留 NAT 中的设置。转到您的 Windows 实例并运行“cmd”或打开 cmd.exe。执行命令“ipconfig”并获取 默认网关 IP地址。浏览 http://10.0.2.2:8080 在 Windows IE 上,您会看到与 Mac Safari 相同的内容 http://本地主机:8080/ 或者 http://127.0.0.1:8080
一些事情的结合最终让我的事情顺利进行。在 macOS 上运行 Flask 服务器。
在我的 Windows VM 中,我编辑了主机文件:
- 以管理员身份运行记事本
- 打开
C:\windows\system32\drivers\etc\hosts
- 添加此条目:
10.0.2.2 outer
在 VirtualBox 中关闭虚拟机和我的 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 真是一场噩梦。怎么没有更简单的方法呢?
我通过网络下在VirtualBox中设置增加一个端口转发来解决。 主机IP组127.0.0.1端口:8080 游客IP:提供任何IP的网站(比如10.0.2.5)端口:8080 现在,从使用IE旅客机访问 http://10.0.2.5:8080
在作为所述上部虚框,则可以加入这一行的主机文件
10.0.2.2 outer
但保存它,如果你就在你的虚拟机只是移动hosts文件到桌面上,然后对其进行编辑以添加行10.0 ....外,保存文件,并移动到它原来的地方没有管理员
检查,如果你可以用打你的母机:
ipconfig
(让您的IP地址)
ping <ip>
或telnet <ip> <port>
如果你不能得到的端口,尝试在父母的防火墙允许本地端口添加新的入站规则。
当时我能够访问http://<ip>:<port>
在虚拟盒子中
- 将您的网络设置为桥接网络
- 进入高级设置混杂模式:允许全部
现在棘手的一点是你的本地主机,如果你从 Node.js 运行,请将 IP 地址设置为 0.0.0.0,然后查找你自己的 IP 地址,例如 cmd:ipconfig --> 10.0.1.3
输入该地址和端口号。它会起作用的。
一般步骤:
- 公共网络,(添加仅主机或桥接网卡)
- 配置首选服务以侦听适当的接口(连接到共享 NIC 的接口)
- 使用IP:端口来访问目标服务,使用属于共享网络的IP。
在Windows上使用虚拟的Windows 7只为我工作的事情是使用 NAT和端口转发(没能桥接方式运行)。我发现了一个教程在这里:的 http://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/ 一>(向下滚动到与部件 “转发端口到虚拟机”)。
有了这个变化,我可以用“ HTTP到达XAMPP网站://192.168.xx.x:8888 / mywebsite ”在我的虚拟机上的Internet Explorer 10。
我发现IP在XAMPP控制面板>用netstat( “系统”)。
如果你使用虚拟盒,你可以的Mac OSX(我认为Linux的)连接到使用一行代码的虚拟Windows计算机 - >我建议在终端运行此之前停止箱
VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on
我会注意到,这是来自帆船的文档,我正在运行,但它是一个虚框的命令,所以应该没有真正关心你使用,只要其虚拟盒
我需要在本地主机上运行,而不是一些奇怪的IP。
1) 从您的 Mac 终端,执行 iconfig -a
查找您的本地 IP 地址。这可能是最后一张了
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
例如10.1.5.60
2) 启动您的 Windows 映像。开始 > 键入 cmd
得到一个终端
3) notepad c:\windows\system32\drivers\etc\hosts
4)添加以下行10.1.5.60 localhost
5) 打开 IE,下面的 url 应该会出现在你的 mac 上运行的服务器上: http://localhost:3000/
找运行Apache本机的IP(INET地址:在ifconfig
)和在虚框浏览器地址栏中输入
其实,user477494的答案是正确的原则。
我已经应用在其它环境(OS X主机 - 虚拟视窗XP)相同的逻辑和的伎俩。我确实有周期主机 LAMP堆栈获得IP地址和Apache端口来解决,但一旦我想通了这一点,我在笑。