流浪端口转发在Windows 8上不起作用

流浪端口转发在Windows 8上不起作用,windows,vagrant,vmware,nat,portforwarding,Windows,Vagrant,Vmware,Nat,Portforwarding,我正在使用Vagrant 1.7.2和VMware Workstation 11.1.2插件Vagrant VMware Workstation 3.2.9。我的主机是Windows8,我的来宾是Ubuntu12.04.1LTS(尽管我尝试了多个不同的来宾框) 我严格遵循了入门指南,这意味着我现在有一个类似以下内容的文件: Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.

我正在使用
Vagrant 1.7.2
VMware Workstation 11.1.2
插件
Vagrant VMware Workstation 3.2.9
。我的主机是Windows8,我的来宾是Ubuntu12.04.1LTS(尽管我尝试了多个不同的来宾框)

我严格遵循了入门指南,这意味着我现在有一个类似以下内容的文件:

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/
我得到了一个空白页面,其中有
错误连接被拒绝

来自来宾,
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
我发现很多帖子都说要检查卷曲结果,但没有一篇帖子指出如果不正确该怎么办

随机的东西我试着让它工作起来:

  • 已更改正在转发的端口
  • 自动更正:true
    添加到我的转发端口
  • 已禁用Windows防火墙
  • 选中的iptables(未找到命令)
  • 多次为客人提供食物
  • 更改了我正在使用的盒子
  • 删除所有框并下载新的
  • 卸载并重新安装每个插件
  • 完全删除Vagrant和VMware并重新安装
  • 谷歌疯狂地搜索
更新 我从编辑>虚拟网络编辑器>NAT在VMware workstation中手动添加了端口转发。这按预期工作,我可以在
http://localhost:4567/
现在。但是,我不希望每次创建新机器或机器的IP地址更改时都必须手动执行此操作。我想管理端口转发从流浪汉只有因为我将是版本控制这个项目

更新x2 在VMware中设置端口转发不是一个可行的解决方案。下一次再装箱子时,流浪汉抱怨港口碰撞,因为箱子已经在“使用中”

更新x3:进度 我运行了Wagrant-debug并仔细查看了端口转发部分。我注意到它正在写入Windows NAT配置文件,并找到了该文件的位置。转发端口(现在的
8080
)在调试输出和文件本身中都没有提到。如果我手动添加端口转发,它会显示在文件中。以下是两者之间的区别:

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


令人沮丧的是:它最初是有效的。我的主机发生了一些变化,我不知道发生了什么。我在第一个虚拟机之后设置了两个虚拟机。一台机器是使用默认设置创建的,另一台机器是随附的。我注意到端口转发在此之后停止工作,但完全删除所有内容并重新开始并没有解决它。

我不明白的是为什么Vagrant会使用
http://192.168.131.128/
ip。Localhost解析为
127.0.0.1
,那么它是否符合逻辑?我猜您没有得到响应。为什么购买其他ip?当我执行
vagrant up
时,我得到了相同的结果,但本地主机的官方ip:
默认:SSH地址:127.0.0.1:2222默认:SSH用户名:vagrant默认:SSH身份验证方法:私钥
ip是其在专用网络上的地址,因为就您的计算机而言,vm是另一台物理机器。端口转发说,“好的,如果我在端口
4567
上收到一个请求,我应该将该请求转发到位于端口
80
上的另一台机器
192.168.131.128
”,但在我的情况下,它实际上并没有转发,而是试图访问我主机上的4567,但被拒绝了。是的,但我想说的是,那是在放
http://localhost:4567主机浏览器上的
与放置https://127.0.0.1:4567。而且,由于您的虚拟机位于另一个IP中,因此逻辑上它无法访问它。在您的Vagrant文件上尝试此操作:
config.ssh.host=127.0.0.1
(请参见此处:)。如果未配置,则提供程序将为您执行此操作,并且它将放置不允许您从主机使用localhost的其他ip。除非我理解端口转发的所有错误…是的,
localhost:4567
127.0.0.1:4567
相同。在这两种情况下,它都向主机发送请求。主机具有端口转发规则;它应该根据这些规则将请求转发到另一个IP地址。它应该能够访问其他地址。。。这就是端口转发的要点。