让两个流浪的虚拟机进行通信

时间:2015-05-29 18:28:21

标签: vagrant

我已经四处寻找解决这个简单问题的方法,并没有得到答案。

我有一个定义两个虚拟机的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.

对于我的生活,我无法弄清楚如何让两个虚拟机相互通信。我错过了什么?

1 个答案:

答案 0 :(得分:1)

默认情况下,Vagrant为来宾VM实例使用NAT网络。

您需要更改VM配置以将其更改为Bridged网络(最简单)或创建虚拟网络交换机,以允许您正在使用的任何虚拟机管理程序提供商进行VM间通信(或类似的内容)。这取决于提供商,并且似乎没有Vagrant直接支持。

http://friendsofvagrant.github.io/v1/docs/bridged_networking.html

事实上,官方的Vagrant文​​档似乎并不表示支持Bridged网络,而是允许您配置公共网络。这些可能比你需要/想要的更多但是它的价值是什么:

http://docs.vagrantup.com/v2/networking/public_network.html