主机是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
。哎呀。
答案 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客人。