从虚拟机虚拟机寻址本地主机
我有一个本地testing/开发服务器(当然是http),监听端口8000,
我在Linux上工作,所以testingIE6 / 7/8等页面我运行一个虚拟机使用虚拟框; 我还需要看看它是如何在Windows环境下的Firefox看起来(例如字体是不同的)。
在我的真机中,我只需使用URL http://localhost:8000
打开网站,我如何从虚拟机处理本地主机?
现在我的解决方法是使用IP地址。 任何更好的想法?
谷歌search转向了这一点: http : //data.agaric.com/localhost-from-virtualbox-xp-install-ubuntu
它build议使用IP: http://10.0.2.2
: http://10.0.2.2
,它为我工作。
所以,我编辑了主机文件C:\windows\system32\drivers\etc\hosts
,并添加了这个条目:
10.0.2.2 outer
如果您在IE8上进行testing,请记得在地址栏中inputhttp://
。 只是直接把IP不起作用。
例如:
http://10.0.2.2:3000/
MACOS
我在macOS(以前的OS X)上运行Virtual Box,使用Virtual Box在Windows上testingIE等。
转到虚拟Box中的IE浏览器,通过localhost
http://10.0.2.2
访问localhost
localhost
,或者localhost:3000
http://10.0.2.2:3000
localhost:3000
http://10.0.2.2:3000
localhost:3000
访问localhost
localhost:3000
。
我把networking设置保持为NAT,不需要上面提到的桥接。 没有必要编辑任何configuration文件。
要在OSX上启用此function,我必须执行以下操作:
- closures你的虚拟机。
- 进入
VirtualBox Preferences -> Network -> Host-only Networks ->
点击“+”图标。 点击OK。 - select您的方框,然后点击
"Settings" icon -> Network -> Adapter 2 ->
在“附加到:”下拉菜单中,select“仅适配器”,networking(vboxnet0
)默认显示在下面。 点击OK。 - 一旦你重新启动你的盒子,你应该能够访问本地主机在
http://10.0.2.2/
您可以通过localhost
引用它,并通过将其引用添加到主机文件( C:\windows\system32\drivers\etc\hosts
)来访问其他本地主机的网站,如下所示:
10.0.2.2 localhost 10.0.2.2 subdomain.localhost
您很可能已将您的虚拟机的networking设置为NAT。 如果将networking设置为桥接,则应该能够通过主机名访问主机。 例如,如果您的主机名是“jsmith-Precision-7510”,并且您想要打开http:// localhost:3000 / ,则可以在http:// jsmith-Precision-7510:3000 /中查看该页面。
要find您的主机名,请打开terminal/控制台,然后运行命令hostname
。 你的主机名将被输出在下一行。
有关如何将networkingbuild立设置为Bridged的说明,请参阅VirtualBox文档 。
我发现10.0.2.2:<port>
作品,但只有当混杂模式设置正确。 安装我的虚拟机后,我去了设置>networking>适配器1。
NAT默认设置,并且“混杂模式”下拉菜单被禁用。 我从NAT切换到启用混杂模式下拉的桥接适配器,然后将值从“拒绝”更改为“允许虚拟机”。 然后,我切换回NAT,再次禁用混杂模式,但保留了新的价值。
只有这个改变后,我才能启动我的虚拟机,并在我的虚拟机10.0.2.2:<port>
上看到我的主机localhost:<port>
10.0.2.2:<port>
。
如果你有适配器连接到NAT ,现在是更好和更优雅的解决scheme来设置端口转发到本地端口。
Settings
> Network
> Adapter
> Advanced
> Port forwarding
只需插入新的规则,并将Host port
和Guest port
为80
(对于http)或22
(对于SSH),依此类推。
然后你可以通过inputhttp://localhost
访问那台机器
您可能还想要将NAT切换到透明模式。
您需要像在本地主机上一样编辑Windows虚拟机上的主机文件:
C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \主机
并将您的虚拟主机链接到10.0.2.2,如果您只是使用本地主机,然后replace
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
这告诉您的虚拟机指向您的本地机器的这些域名。
我不得不进入virtualbox,并将我的networking设置更改为“NAT”。 之后,我可以在我的虚拟机上仿真器上运行我的主机上运行的localhost
,虽然http://10.0.2.2:3000
MacOS的
如果要在Mac上使用Virtualbox设置Windows环境,只需使用适配器上的默认NAT设置,然后在Windows VM中转到hosts文件并添加以下内容:
10.0.2.2 localhost 10.0.2.2 127.0.0.1
与上面的答案不同,重要的是包括两条线,否则将无法正常工作。
我通过在networking下的Virtualbox设置中添加端口转发来解决问题。 主机IP设置127.0.0.1端口:8080访客IP:给网站任何IP(比如10.0.2.5)端口:8080现在从访客机访问http://10.0.2.5:8080使用IE
几件事情的结合最终使事情在我的最后工作。 在macosx上运行一个烧瓶服务器。
在我的Windows VM我编辑的主机文件:
- 以pipe理员身份运行记事本
- 打开
C:\windows\system32\drivers\etc\hosts
- 添加这个条目:
10.0.2.2 outer
在VirtualBox中closuresVM并在我的Mac上:
- 转至
VirtualBox > preferences > Network > Host-only Networks > +
添加networkingvboxnet1
- 转至
My_VM > settings > Network > Adapter 1
。 - select“
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
并select以前添加的networkingvboxnet1
。
我开始我的服务器在我的Mac上,运行在127.0.0.1:5000
,这是现在可以访问我的虚拟机http://10.0.2.2:5000
男子多么噩梦testingIE上的Mac。 怎么没有一个更简单的方法?
在虚拟Box中,如上所述,可以添加此行主机文件
10.0.2.2 outer
但要保存它,如果你的虚拟机中没有pipe理员权限,只需将主机文件移动到桌面,然后编辑它以添加10.0 ….行,保存文件,并移动到原来的位置。
检查你是否可以用你的父机器: ipconfig
(获取你的IP地址)
ping <ip>
或telnet <ip> <port>
如果无法访问端口,请尝试在允许本地端口的父防火墙中添加新的入站规则。
然后我可以访问http://<ip>:<port>
在虚拟箱中
- 将您的networking设置为网桥
- 转到高级设置混杂模式:全部允许
现在,棘手的一点是你的本地主机,如果你从Node.js运行的IP地址设置为0.0.0.0,然后查找自己的IP地址,例如cmd:ipconfig – > 10.0.1.3
用该端口号input该地址。 它会工作。
其实user477494的答案原则上是正确的。 我已经在其他环境中应用了相同的逻辑(osx主机 – 虚拟XP),这是诀窍。 我不得不循环主机LAMP堆栈以获得IP地址和apache端口来解决,但是一旦我明白了这一点,我就笑了。
在使用虚拟Windows 7的Windows上,唯一对我有用的是使用NAT和端口转发 (无法使桥接连接运行)。 我在这里find了一个教程: 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控制面板> Netstat(“系统”)中find了IP。
如果你使用Virtual Box,你可以使用一行代码将Mac OSX(和我认为Linux)连接到你的虚拟Windows机器上 – >我build议在terminal中运行这个程序之前停止这个盒子。
VBoxManage modifyvm "YOUR VM NAME" --natdnshostresolver1 on
我会注意到,这是来自我正在运行的肮脏的文档,但它是一个虚拟的框命令,所以它不应该真的在乎你使用什么,只要它的虚拟盒
毕竟,请确保您允许http和https通过要访问的计算机上的防火墙设置。 之后,你可以使用上述的答案。
获取运行Apache的计算机的IP(inet addr:in ifconfig
),并在虚拟框浏览器地址栏中inputIP。