【问题标题】:Public network in vagrantvagrant 中的公共网络
【发布时间】:2017-02-08 23:20:09
【问题描述】:

我需要设置 2 台带有公共网络的 vagrant 机器,所以请点击此链接 https://www.vagrantup.com/docs/networking/public_network.html 编辑 Vagrantfile。

但只有一台机器只有公共静态 ip。另一个不获取公共静态IP。

这是我的流浪机器配置:

机器 1 流浪文件:

    Vagrant.configure("2") do |config|

      config.vm.box = "man2"

      config.ssh.username = "vagrant"
      config.vm.hostname = "www.myhost.net"
      config.ssh.forward_agent = "true"


      config.vm.network "public_network", ip: "192.168.1.10"

      config.vm.provider :virtualbox do |vb|
        vb.customize ["modifyvm", :id, "--memory", "2048"]
      end
      config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=666"] 
    end

Machine 2 Vagrant 文件:

        Vagrant.configure("2") do |config|

          config.vm.box = "man1"
          config.ssh.username = "vagrant"
          config.vm.hostname = "www.myhost.net"
          config.ssh.forward_agent = "true"

         config.vm.network "public_network", ip: "192.168.1.20"

           config.vm.provider :virtualbox do |vb|
            vb.customize ["modifyvm", :id, "--memory", "2048"]
          end

           config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=777"]

        end

虽然流浪

系统询问网桥应该连接到哪个接口?

我选择两个机器作为 1 "eno1"

        1) eno1
        2) docker0
        3) veth54294ac
        4) virbr0
        5) vethc81d7f7
        6) br-08179b343476
        7) br-1d45dec94893
        ==> default: When choosing an interface, it is usually the one that is
        ==> default: being used to connect to the internet.
            default: Which interface should the network bridge to? 1

那么,Vagrant ssh两台机器

只有一台机器有 public static ip,另一台机器不显示 public ip。

如果我在任何一个系统中选择 不同的桥接网络,有些人会认为:(机器 2)到

        1) eno1
        2) docker0
        3) veth54294ac
        4) virbr0
        5) vethc81d7f7
        6) br-08179b343476
        7) br-1d45dec94893

option: 4 (virbro) ot others now,同样的问题。

更新 1:

在我尝试相同设置之前它工作正常,只有不同版本的 Vagrant 和 VirtualBox

尝试之前:

费德罗拉 23

流浪者 1.8.1

虚拟机 5.0

现在试过了:

费德罗拉 23

流浪者 1.8.6

虚拟机 5.1.6

此版本中的任何限制。

为什么?

系统不能共享同一个 Bridge 网络?

建议我如何解决这个问题。

【问题讨论】:

  • 您希望两台机器使用相同的主机名吗?不确定你能做到这一点,更改你的一台机器的主机名
  • @FrédéricHenri 相同的设置(主机名相同),我试过之前它工作正常,但现在只有这个问题。
  • @FrédéricHenri 我更新了我的问题,请查看此
  • @FrédéricHenri 更改我的主机名后,仍然有同样的问题 建议我用其他方法来做到这一点。
  • 我想知道否决票,建议我做错了什么,我需要编辑我的问题或解决这个问题。

标签: networking ip vagrant virtualbox public


【解决方案1】:

您的Vagrantfile 对我来说似乎不错。可能是您的Machine2 IP 192.168.1.20 分配给了其他系统。如果分配给其他系统,则 DHCP 不会将此 IP 分配给您的机器。 如果您确定这些 IP 未分配给其他系统,则将其设置为 static 否则您可以提供:

config.vm.network "public_network"

在这种情况下,DHCP 将释放可用的 IP。

无需为每个 VM 编写单独的 Vagrantfile。您可以为多个 VM 创建一个 Vagrantfile,例如:

Vagrant.configure("2") do  |config|                                                       

    config.vm.define :server1 do |server1|
             server1.vm.box = "man1"      
             server1.vm.host_name = "vm1.example.com"
             server1.vm.network "public_network", ip: "192.168.1.10"
             server1.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=666"]
             server1.vm.provider :virtualbox do |vb|
                   vb.customize ["modifyvm", :id, "--memory", "2048"]
            end    
    end

    config.vm.define :server2 do |server2|
             server2.vm.box = "man1"      
             server2.vm.host_name = "vm2.example.com"
             server2.vm.network "public_network", ip: "192.168.1.20"
             server2.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=666"]
             server2.vm.provider :virtualbox do |vb|
                   vb.customize ["modifyvm", :id, "--memory", "2048"]
            end
    end
end

如果你想升级server1,那就去做

vagrant up server1

要启动所有虚拟机然后做

vagrant up

对于 ssh 使用如下:

vagrant ssh server1

系统不能共享同一个 Bridge 网络?

是的,它可以共享桥接网络。您可以使用单个网桥创建多个 VM。

更多信息可以参考Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多