为什么Vagrant在它应该向前移动时组成一个不正确的子网?

时间:2014-01-10 12:58:16

标签: virtualbox vagrant

主机是Windows 8.1;提供者是VirtualBox 4.3.4; Vagrant版本是1.3.5。

主机只有一个有线的NIC,IP 192.168.1.100。

Vagrantfiles读到:

  config.vm.box = "precise64"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"

  config.vm.network :forwarded_port, guest: 80, host: 8080

  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "puppet/manifests"
    puppet.module_path = "puppet/modules"
    puppet.manifest_file  = "init.pp"
    puppet.options="--verbose --debug"

但是,在vagrant up之后,VM会获得完全错误的 IP地址。客人ifconfig写道:

vagrant@vagrant-ubuntu-precise-64:~$ ifconfig                   
eth0      Link encap:Ethernet  HWaddr 08:00:27:1a:b6:5e         
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.25
          inet6 addr: fe80::a00:27ff:fe1a:b65e/64 Scope:Link    
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1    
          RX packets:356 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000                          
          RX bytes:38937 (38.9 KB)  TX bytes:33157 (33.1 KB)    

为什么Vagrant完全忽略了vagrantfile上的端口转发设置? IP地址应该是192.168.1.x,而我会得到这个随机10.0.2.15。有什么想法吗?

修改:主机甚至无法ping 10.0.2.15。即使虚拟机启动,也没有响应。有些东西很破碎。

编辑2:现在我在两个不同的系统上获得了/sbin/ip addr flush dev eth1 2> /dev/null。哎呀。

2 个答案:

答案 0 :(得分:9)

进入机器

删除文件/etc/udev/rules.d/70-persistent-net.rules

退出机器

做一个“流浪汉重装”

我认为这就是诀窍=]

答案 1 :(得分:1)

端口转发意味着在提到的端口上接收的数据包将被转发给guest虚拟机。在您的示例中localhost:8080应该重定向到vm的80端口上监听的vm服务。

关于“随机”10.0.2.15,如果VM配置了NAT附件,通常会将此IP分配给guest虚拟机,这意味着guest虚拟机从外部完全不可见(除了port-forward,但此访问只能通过主机访问)。当然,您不能仅在相反的方向(从客户到主机)从主机ping客人。