【问题标题】:VirtualBox guest not getting ip address assigned by VagrantfileVirtualBox 来宾没有获得 Vagrantfile 分配的 IP 地址
【发布时间】:2015-03-07 00:37:52
【问题描述】:

在 vagrant up 时,guest box 被分配了错误的 IP 地址并导致以下错误:

...
...
SSH address: 127.0.0.1:2222
serverbox: SSH username: vagrant
serverbox: SSH auth method: private key
serverbox: Warning: Connection timeout. Retrying...
serverbox: Warning: Connection timeout. Retrying...
serverbox: Warning: Connection timeout. Retrying...
...

我在家里和办公室工作,因此必须始终根据我所在的位置重新配置 Vagrantfile 中的 IP 地址分配,因为子网不同。 (192.168.x.x 与 10.80.x.x)

直到昨天,这一直运行良好。我不知道是什么导致了这些问题,因为我没有进行任何调整。

流浪文件:

Vagrant.configure("2") do |config|                                                                                                                       
  config.vm.provider "virtualbox" do |vb|                                                                                                                
    vb.customize ["modifyvm", :id, "--memory", "512"]                                                                                                    
  end                                                                                                                                                    
  config.vm.network "public_network", ip: '10.80.2.144'
  #config.vm.network "public_netowrk", ip: '192.168.1.144'                                                                                        
end

...

Vagrantfile 应该将我的 guestbox 放在 10.80.xx 地址上,但 netstat 显示我的 box 仍在 192.168.x.x 地址上。这意味着我无法使用 guestbox,因为它会进入越界子网。

我已经停止并再次启动,并完全重新启动我的 cpu 并检查以确保 BIOS 中的虚拟化已打开。

我查看了here 并尝试了this 方法无济于事。

我也试过 vb.gui = true 但我的机器无头运行。 Virtualbox 的预览日志屏幕可能会提供一些有用的信息,但它太小了,我无法从中做出任何事情。如果有人对如何扩大规模有任何建议,那可能会有很大帮助。

更新:

所以我的解决方案是一个不受欢迎的解决方案,但我的工作日已被破坏,需要继续前进,所以我只是摧毁了我的盒子并重新启动。

显然,我的密钥变得不安全。不知道这是怎么发生的,但新盒子取代了我的钥匙。

【问题讨论】:

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

标签: vagrant virtualbox ip-address connection-timeout


【解决方案1】:

我对您的问题的建议。

更改 IP 后,在该实例上运行 vagrant reloadvagrant provision

如果问题没有得到解决,请尝试第二个:

将 public_network 更改为 private_network

config.vm.network "private_network", ip: '10.80.2.144'
#config.vm.network "private_network", ip: '192.168.1.144'  

【讨论】:

  • 在 vagrant up 之后尝试了 vagrant provision 并得到以下结果: Vagrant 在尝试通过 SSH 连接时超时...然后我尝试更改为 private_network 但收到以下内容:指定的主机网络与非主机网络!这将导致您指定的 IP 无法访问....
  • 如果提供命令超时错误,那么它是一些其他问题。
  • 在另一个盒子上,我销毁并在上面运行 vagrant,它可以工作,但它做了同样的事情..“远程连接断开。重试..”然后它继续发现密钥不安全并且在创建盒子时替换它们。我能够通过 ssh 登录并且它工作正常。我不想对我的另一个盒子这样做,但看起来这是目前唯一的选择。
  • 当我运行 vagrant 并且没有可导航到的 IP 地址时,设置 vm.network IP 地址对我有用
  • 流浪重新加载和供应对我有用。由于某些未知原因,它第一次没有设置 IP 地址,而是在 vagrant reload 时设置。
【解决方案2】:

注意
这个答案不是问题的解决方案。当您无法 ssh 进入您的 vagrant box 时,调试问题可能会有所帮助

我遇到了问题:

  • 流浪者1.8.1
  • 虚拟盒子5.0.12r104815
  • Vagrantfile 选项 config.vm.network "private_network", ip: "10.50.50.3"

以下步骤帮助我解决了我的问题:

  • 通过添加vb.gui = trueVagrantfile 中启用GUI
  • 使用vagrant up 启动VM
  • 使用VirtualBox终端登录(用户:vagrant,密码:vagrant)
  • 在devbox中检查了接口IP

    $ sudo ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
    10.0.2.15
    
  • 检查了本地VirtualBox接口(@98​​7654329@):

    vboxnet8  Link encap:Ethernet  HWaddr 0a:00:27:00:00:08  
              inet addr:10.50.50.1  Bcast:10.50.50.255  Mask:255.255.255.0
              inet6 addr: fe80::800:27ff:fe00:8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:258 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:39147 (39.1 KB)
    

我看到 VM 的 ip 不适合主机 vboxnet8 接口 ip 范围。

我尝试使用 vagrant reload 重新加载 VM,但没有成功。唯一对我有帮助的是使用 vagrant destroy -fvagrant up 重置 VM(请参阅下面的附加评论)。


这怎么会发生?第一次启动 VM 后,我的一个配置脚本更改了 /etc/ssh/sshd_config,之后它就无效了。然后脚本重新启动 ssh 导致连接问题。

Vagrant 启动了虚拟机,但我无法通过 ssh 进入它。

那我一定是更改了private_network ip,这导致了奇怪的情况。

最后使/etc/ssh/sshd_config 再次有效解决了我的问题。

【讨论】:

    【解决方案3】:

    只需在 Vagrantfile 和 vagrant reload 中添加这两行

    config.vm.network "forwarded_port", guest: 80, host: 8080,
      auto_correct: true
    
    config.vm.network "private_network", ip: "192.168.100.1",
      auto_config: false
    

    希望问题能得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多