我已经四处寻找解决这个简单问题的方法,并没有得到答案。
我有一个定义两个虚拟机的Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.define :box1 do |config|
config.vm.box = "hashicorp/precise32"
config.vm.hostname = "box1"
config.vm.network "private_network", ip: "192.168.0.21"
config.vm.provision :hosts
end
config.vm.define :box2 do |config|
config.vm.box = "hashicorp/precise32"
config.vm.hostname = "box2"
config.vm.network "private_network", ip: "192.168.0.22"
config.vm.provision :hosts
end
end
所以,我对此的理解是,我给每个盒子自己的IP地址,然后运行hosts
配置器(由vagrant-hosts
plugin提供)。从vagrant-hosts文档中,这应该是我需要做的全部。
然而:
$ vagrant ssh box1 -c 'ping 192.128.0.22'
PING 192.168.0.22 (192.168.0.22) 56(84) bytes of data.
From 192.168.0.21 icmp_seq=1 Destination Host Unreachable
From 192.168.0.21 icmp_seq=2 Destination Host Unreachable
From 192.168.0.21 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.0.22 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5031ms
pipe 3
Connection to 127.0.0.1 closed.
对于我的生活,我无法弄清楚如何让两个虚拟机相互通信。我错过了什么?
答案 0 :(得分:1)
默认情况下,Vagrant为来宾VM实例使用NAT网络。
您需要更改VM配置以将其更改为Bridged网络(最简单)或创建虚拟网络交换机,以允许您正在使用的任何虚拟机管理程序提供商进行VM间通信(或类似的内容)。这取决于提供商,并且似乎没有Vagrant直接支持。
http://friendsofvagrant.github.io/v1/docs/bridged_networking.html
事实上,官方的Vagrant文档似乎并不表示支持Bridged网络,而是允许您配置公共网络。这些可能比你需要/想要的更多但是它的价值是什么: