VirtualBox guest没有获得Vagrantfile分配的IP地址

时间:2015-01-08 19:19:44

标签: vagrant virtualbox ip-address connection-timeout

在流浪时,guest虚拟机框被分配了错误的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)

直到昨天才行得很好。我不知道是什么导致了这些问题,因为我没有做出任何调整。

Vagrantfile:

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应该将我的访客箱放在10.80.x.x地址上,但netstat显示我的邮箱仍然在192.168.x.x地址上。这意味着我无法使用guestbox,因为它将进入一个超出界限的子网。

我已经完成了停止和重新启动以及完全重新启动我的CPU并检查以确保BIOS中的虚拟化已启用。

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

我也尝试过vb.gui = true,但是我的机器运行无头。 Virtualbox的预览日志记录屏幕可能会提供一些有用的信息,但它很小,我无法从中做出任何贡献。如果有人对如何制作更大的东西有任何建议可能会有很大的帮助。

更新:

所以我的解决方案是一个不受欢迎的解决方案,但我的工作日已经被鱼雷击中,需要继续前进,所以我只是摧毁了我的盒子并重新开始。

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

3 个答案:

答案 0 :(得分:7)

我对你的问题的建议。

更改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'  

答案 1 :(得分:2)

只需在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

希望问题将得到解决。

答案 2 :(得分:0)

  

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

我使用了

来解决问题
  • Vagrant 1.8.1
  • VirtualBox 5.0.12r104815
  • Vagrantfile选项config.vm.network "private_network", ip: "10.50.50.3"

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

  • 通过添加Vagrantfile
  • vb.gui = true中启用了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界面(带ifconfig):

    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)
    

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

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

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

Vagrant启动了虚拟机,但我无法进入虚拟机。

然后我必须更改导致奇怪情况的private_network ip。

最后,/etc/ssh/sshd_config有效再次修复我的问题。