【问题标题】:Can't connect to guest node set up with nat and hostonly vagrant and virtualbox无法连接到使用 nat 和 hostonly vagrant 和 virtualbox 设置的来宾节点
【发布时间】:2015-05-12 21:21:49
【问题描述】:

我一直在尝试用 vagrant 替换手动 vitualbox 设置。我通常创建一个带有 2 个网络适配器的来宾节点,一个 NAT 供来宾(ubuntu)使用主机互联网进行所有 apt-get 操作,以及一个主机只供我的主机连接到来宾。我一直工作得很好。

下面是我的流浪文件

Vagrant.configure("1") do |config|
  config.vm.boot_mode = :gui
end

Vagrant.configure("2") do |config|
  config.vm.define "web" do |web|
    web.vm.box = "ubuntu/trusty64"
      web.vm.network "forwarded_port", guest:22, host:2222, id:"ssh", disabled:true 
      web.vm.network "private_network", ip:"192.168.56.103", :adapter =>2
    end

end 

下面是输出:

Bringing machine 'web' up with 'virtualbox' provider...
==> web: Importing base box 'ubuntu/trusty64'...
==> web: Matching MAC address for NAT networking...
==> web: Checking if box 'ubuntu/trusty64' is up to date...
==> web: A newer version of the box 'ubuntu/trusty64' is available! You currently
==> web: have version '14.04'. The latest is version '20150430.0.0'. Run
==> web: `vagrant box update` to update.
==> web: Setting the name of the VM: ansible_web_1431424632866_64634
==> web: Clearing any previously set forwarded ports...
==> web: Clearing any previously set network interfaces...
==> web: Preparing network interfaces based on configuration...
    web: Adapter 1: nat
    web: Adapter 2: hostonly
==> web: Forwarding ports...
==> web: Booting VM...
==> web: Waiting for machine to boot. This may take a few minutes...
    web: SSH address: 127.0.0.1:22
    web: SSH username: vagrant
    web: SSH auth method: private key
    web: Warning: Authentication failure. Retrying...
    web: Warning: Authentication failure. Retrying...
    web: Warning: Authentication failure. Retrying...

现在在 vagrant 上它几乎可以工作,但我想不通:
问题 1 vagrant 是否需要端口转发才能连接到访客?
问题 2 当 vagrant 说:==> web: Preparing network interfaces based on configuration... web: Adapter 1: nat web: Adapter 2: hostonly 我认为 eth1 应该启动但事实并非如此。 ifconfig -a 显示没有任何 IP 的接口 eth1 任何 sudo ifup eth1 显示 Ignoring unknown interface eth1=eth1。这里发生了什么,我该如何解决?

感谢您的帮助

【问题讨论】:

  • 这种情况可能是因为 VirtualBox 未能重定向端口,尽管说 '==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ' 您可以在我的问题link 中查看完整描述。我仍然不知道如何修复重定向失败(请在我的帖子中添加注释,如果以及如何成功!

标签: vagrant virtualbox


【解决方案1】:

没关系,我修好了。这在很大程度上依赖于使用的 vagrant 版本。这适用于任何支持转发端口自动更正功能的版本。

删除线后:

web.vm.network "forwarded_port", guest:22, host:2222, id:"ssh", disabled:true 

它开始像魅力一样工作,我可以添加其他节点。请查看下面的配置,以便共享

Vagrant.configure("1") do |config|
  config.vm.boot_mode = :gui
end

Vagrant.configure("2") do |config|
  auto_config= false

    config.vm.define "web" do |web|
       web.vm.box = "ubuntu/trusty64"
       web.vm.network "private_network", ip:"192.168.56.103", :adapter =>2
    end

   (1..3).each do |i|
      config.vm.define "mongo-#{i}" do |mongo|
         mongo.vm.box = "ubuntu/trusty64"
         mongo.vm.network "private_network" , ip:"192.168.56.11#{i}", :adapter =>2
     end
   end 

  (1..2).each do |i|
    config.vm.define "tomcat-#{i}" do |tomcat|
      tomcat.vm.box = "ubuntu/trusty64"
      tomcat.vm.network "private_network" , ip:"192.168.56.12#{i}", :adapter =>2
    end
  end

  (1..2).each do |i|
    config.vm.define "mysql-#{i}" do |mysql|
      mysql.vm.box = "ubuntu/trusty64"
      mysql.vm.network "private_network" , ip:"192.168.56.13#{i}", :adapter =>2
    end
  end

end

【讨论】:

  • 我试过了,但端口重定向仍然出错。可能是我的 os/config 有问题。
  • 您使用的是哪个操作系统?您可能需要检查 Os、virtualbox 版本和 vagrant 版本的组合。我没有做任何额外的事情。随后它会自动选择自己的端口。我个人不喜欢端口转发
  • 操作系统是windows 8.1。我也不喜欢端口转发,但这是必须的。
猜你喜欢
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 2014-12-14
相关资源
最近更新 更多