我有 Windows 7。安装了 VirtualBox 和 Ubuntu 11.04 作为来宾操作系统。网络由 NAT 完成。一切都很好:我在 Ubuntu 上有互联网。我可以通过它的 ip 从 Ubuntu 访问 Windows。但是我无法通过 ifconfig 显示的 ip 访问 Ubuntu。
我在 Ubuntu 上运行 rails。
我该如何解决这个问题:从我的 Windows 连接到 ort 3000 上的 Ubuntu/Rails 服务器?
我有 Windows 7。安装了 VirtualBox 和 Ubuntu 11.04 作为来宾操作系统。网络由 NAT 完成。一切都很好:我在 Ubuntu 上有互联网。我可以通过它的 ip 从 Ubuntu 访问 Windows。但是我无法通过 ifconfig 显示的 ip 访问 Ubuntu。
我在 Ubuntu 上运行 rails。
我该如何解决这个问题:从我的 Windows 连接到 ort 3000 上的 Ubuntu/Rails 服务器?
默认情况下,VirtualBox 的 NAT 允许虚拟机访问 Internet;但不允许物理机访问虚拟机。
最简单的解决方案是为您的虚拟机使用除 NAT 之外的其他网络设置——例如,网桥应该可以正常工作(不过,您的虚拟机将在您的网络上可见)。
另一种解决方案是使用端口转发;关于这一点,这篇文章可能会有所帮助:Howto Access via ssh a Virtualbox Guest machine。
在我找到Vagrant之前,我一直在努力配置类似的设置。Vagrant 使设置、连接和使用 Linux 虚拟机变得非常简单。配置 Vagrant 后,您只需键入vagrant ssh
即可进入虚拟机,您的帐户具有自动 sudo 权限,一切都按预期工作 - 您甚至不必处理登录 vm。ssh 的初始设置在 Windows 下看起来确实需要更多的工作,因为您需要在连接之前配置 Putty。
Vagrant 中有一个简单的配置文件,您可以使用如下语法来指定您希望从 VM 转发到您的机器的哪些端口:
config.vm.forward_port("rails", 80, 3000)
config.vm.forward_port("tomcat", 8000, 8080)
一切都得到照顾。详情在这里
例如,如果您正在使用 Rails,并且您使用vagrant up
Rails 项目目录中的命令启动 vagrant,则该目录在 VM 上可用。由于它是机器之间的同一个共享目录,因此您使用常规编辑器在机器上的 Rails 项目目录中所做的任何更改也会在 VM 上看到。这使得在其他环境中进行测试非常容易。
使用 Windows 设置 Vagrant 的说明在这里,关于它的 RailsCast 在这里。请注意,Vagrant 与 Rails 没有直接关系——您可以使用它来设置您需要的任何虚拟机环境。
简而言之,你不能。它是本地主机而不是公共域,因此无法在您的 virtualbox 环境之外公开访问。
也许有人对此有一个聪明的技巧,但你为什么要首先这样做呢?
您的解决方案是使用 firefox 在您的 virtualbox linux 会话中浏览到您的 localhost 或在 Windows 上进行开发。
我个人以相反的方式工作,我运行 Ubuntu 11.04,我安装了 xp、2,000、me、vista 和 7 的 virtualbox,因此我可以在不同的环境中进行测试。不可避免地,我最终会从 Ubuntu 共享我的项目文件夹,以便我可以在我正在测试的任何操作系统中运行该项目。