Vagrant 专用网络 IP 不起作用,但 DHCP 起作用

Dan*_*ves 6 mac virtualbox vagrant

我有一个 vagrant 配置文件,其中配置了三个 VM。除了有一个静态 IP,其他两个都在 DHCP 上之外,所有这些都是相同的。由 DHCP 分配 IP 的两个可以毫无问题地相互交谈,但具有静态 IP 的一个不能被其他人联系。

换句话说 ping client0->client1有效

ping client1->client0工作

ping client1->server没有

这是我的流浪文件:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "provision/cookbooks"
    chef.add_recipe "apt"
    chef.add_recipe "python"
  end

  config.vm.provision :shell, :path => "provision/python-modules.py"

  config.vm.define :server do |server|
    server.vm.hostname = "server"
    server.vm.network :private_network, ip: "172.28.128.2"
  end

  config.vm.define :client0 do |client0|
    client0.vm.hostname = "client0"
    client0.vm.network :private_network, type: :dhcp
  end

  config.vm.define :client1 do |client1|
    client1.vm.hostname = "client1"
    client1.vm.network :private_network, type: :dhcp
  end
end
Run Code Online (Sandbox Code Playgroud)

有什么想法可以让server机器在静态 IP 上被其他人联系到吗?我正在使用 virtualbox 提供程序。

Dan*_*ves 13

经过广泛的研究和实验,似乎 Vagrant 将每个 VM 分配给不同的子掩码,因此它们无法相互连接。实际上,它们都在不同的网络上。

然而,事实证明你可以覆盖它。为此,只需为一个配置网络掩码,如下所示。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "provision/cookbooks"
    chef.add_recipe "apt"
    chef.add_recipe "python"
  end

  config.vm.provision :shell, :path => "provision/python-modules.py"

  config.vm.define :server do |server|
    server.vm.hostname = "server"
    server.vm.network :private_network, ip: "172.28.128.2", :netmask => "255.255.0.0"
  end

  config.vm.define :client0 do |client0|
    client0.vm.hostname = "client0"
    client0.vm.network :private_network, type: :dhcp, :netmask => "255.255.0.0"
  end

  config.vm.define :client1 do |client1|
    client1.vm.hostname = "client1"
    client1.vm.network :private_network, type: :dhcp, :netmask => "255.255.0.0"
  end
end
Run Code Online (Sandbox Code Playgroud)

目前,我不确定您是否可以在全局配置上覆盖所有网络掩码,同时维护一些使用 DHCP 的虚拟机和其他使用静态 IP 的虚拟机。一旦我回到更强大的机器上,我将对此进行试验,因此每次销毁和创建 VM 的速度都会更快。