Vagrant端口转发无法在Windows 8上运行

时间:2015-07-01 16:35:35

标签: windows vagrant vmware nat portforwarding

我正在使用Vagrant 1.7.2VMware Workstation 11.1.2与插件vagrant-vmware-workstation 3.2.9。我的主机是Windows 8,我的客人是Ubuntu 12.04.1 LTS(虽然我尝试了多个不同的客人机箱)。

我完全遵循了入门指示,这意味着我现在有一个看起来像这样的Vagrant文​​件:

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4567, guest: 80
end

并且bootstrap.sh:

#!/usr/bin/env bash

apt-get update
apt-get install -y curl
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi

该框启动时没有任何问题,我可以通过vagrant ssh连接到它并确认一切正常。启动时,端口似乎正在转发:

==> default: Checking if box 'hashicorp/precise64' is up to date...
==> default: Verifying vmnet devices are healthy...
==> default: Preparing network adapters...
==> default: Starting the VMware VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 192.168.131.128:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Forwarding ports...
    default: -- 80 => 4567
    default: -- 22 => 2222
==> default: Configuring network adapters within the VM...
==> default: Waiting for HGFS kernel module to load...
==> default: Enabling and configuring shared folders...
    default: -- C:/Vhosts/vagrant_getting_started: /vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

我可以从主机浏览到http://192.168.131.128/并查看目录索引。但是,当我尝试浏览http://localhost:4567/时,我会得到一个ERR_CONNECTION_REFUSED的空白页。

来自访客,curl -v 'http://localhost:80/'给了我预期的200 OK响应和html。

主持人curl -v 'http://localhost:4567/'拒绝连接:

*   Trying ::1...
*   Trying 127.0.0.1...
* connect to ::1 port 4567 failed: Connection refused
* connect to 127.0.0.1 port 4567 failed: Connection refused
* Failed to connect to localhost port 4567: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 4567: Connection refused

我发现很多帖子都说要检查卷曲结果,但没有任何帖子表明如果不正确会怎么做。

随机的东西我试图让它工作:

  • 更改了转发的端口。
  • auto_correct: true添加到转发的端口。
  • 已禁用Windows防火墙。
  • 检查iptables(找不到命令)。
  • 多次配置客人。
  • 更改了我正在使用的框。
  • 删除所有框并下载新文件。
  • 卸载并重新安装每个插件。
  • 完全删除Vagrant和VMware并重新安装。
  • 用疯狂的Google搜索。

更新 我在Edit&gt;中手动添加了VMware工作站中的端口转发功能。 <虚拟网络编辑器&gt; NAT。这符合要求,我现在可以在http://localhost:4567/查看目录列表。但是,我不希望每次制作新机器或机器的IP地址发生变化时都要手动执行此操作。我想管理来自vagrant的端口转发,因为我将控制这个项目的版本。

更新x2 在VMware中设置端口转发不是一个可行的解决方案。下次重新加载这个盒子时,Vagrant会因为它已经在使用而抱怨端口冲突。

更新x3:进展! 我跑了流浪汉 - 调试并密切关注端口转发部分。我注意到它正在写入Windows NAT配置文件并找到该文件所在的位置。转发端口(现在为8080)在调试输出中和文件本身中都没有提到。如果我手动添加端口转发,它会出现在文件中。以下是两者之间的区别:https://www.diffchecker.com/qoazuggp

现在这个大问题...... 为什么字符串中的转发端口没有保存到NAT配置?

令人沮丧的是:它最初起作用了。我的主机上的某些已更改,我不知道是什么。我在第一个之后配置了两个vms。一台计算机使用PuPHPet默认设置创建,另一台计算机包含在zf-apigility-skeleton中。我注意到端口转发在此之后停止工作,但完全删除所有内容并重新开始并没有修复它。

0 个答案:

没有答案