我正在尝试根据以下两个资源创建一个 Vagrant 基础框:
- http://docs-v1.vagrantup.com/v1/docs/base_boxes.html
- https://github.com/fespinoza/checklist_and_guides/wiki/Creating-a-vagrant-base-box-for-ubuntu-12.04-32bit-server
使用 Ubuntu 12.10 (带 LAMP) 作为操作系统,我遇到了一个问题。我无法 ping 通 vagrant IP 10.0.2.15,尽管我可以通过 SSH 进行连接vagrant ssh
。
我该如何设置才能从我的主机访问 Web 服务器?
VirtualBox:4.2.10
客户机操作系统:Ubuntu12.10
主机:OSX 10.8.3
答案1
您不能仅通过主机系统的 IP 地址访问 Vagrant 盒。Vagrant 的网络旨在定义一个可跨多个提供商工作的抽象层。
访问 Vagrant 框上的服务的最简单方法是配置端口转发。在您的 Vagrantfile 中,请参阅部分Vagrant.configure并设置 的值config.vm.network :forwarded_port
。例如,以下配置将本地系统上的端口 4567 转发到 Vagrant 框上的端口 80:
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.provision :shell, :path => "bootstrap.sh"
config.vm.network :forwarded_port, host: 4567, guest: 80
end
完成此更改后,运行vagrant reload
以应用更改。应用更改后,您应该能够将 Web 浏览器指向,http://127.0.0.1:4567
让 Vagrant Apache 实例提供网页。您可以在Vagrant V2 文档或Vagrant 网络页面。
答案2
我遇到了类似的问题,只是使用私有网络设置和静态 IP。我使用了几个月的 IP 地址 ( 192.168.10.10
) 突然无法访问,尽管我可以使用 访问虚拟机vagrant ssh
。
更改静态 IP192.168.10.192
解决了该问题。这里的解决方案是更改 IP,使其不会与同一网络上的任何其他机器发生冲突。
这里您可以找到以下注释:
用户必须确保静态 IP 不会与同一网络上的任何其他机器发生冲突。
虽然你可以选择任何你喜欢的 IP,但你应该使用保留的私有地址空间中的 IP。这些 IP 保证永远不会被公开路由,而且大多数路由器实际上会阻止来自外界的流量进入它们。
对于某些操作系统,可以使用静态 IP 地址的附加配置选项,例如设置默认网关或 MTU。
警告!不要选择与系统上任何其他 IP 空间重叠的 IP。这可能会导致网络无法访问。
在 Vagrantfile 中,你可以像这样配置静态 IP
Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "192.168.10.192"
end
或者,如果您像我一样使用 Homestead,只需更新您的Homestead.yaml
配置文件:
---
ip: "192.168.10.192"
# the rest of the configuration...
最后要简短说明一下 - 我的问题可能与这里的问题不同,但由于我偶然发现了这个问题,所以其他用户可能也会遇到。
答案3
我必须在主机系统上手动启动网络,因为ip addr
显示它已关闭:
sudo ip link set up dev vboxnet0
答案4
我认为这个来源可以提供帮助:http://docs-v1.vagrantup.com/v1/docs/host_only_networking.html
祝你好运 ;)