流浪端口转发在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并重新安装
- 谷歌疯狂地搜索
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地址。它应该能够访问其他地址。。。这就是端口转发的要点。