更新

更新

我已经在具有私有网络 IP 的 vagrant 盒子上设置了 CentOS 6。我可以使用 IP 通过 ssh 进入盒子,所以这是可行的。但是,当我使用 curl 时,我在端口 80 上收到拒绝连接的消息。里面有一个非常基本的 nginx 提供其默认欢迎页面。从盒子内部使用 curl 可以正常工作。

Vagrant.configure("2") do |config|
  config.vm.box = "Centos-6.3-minimal"
  config.vm.box_url = "https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box"

  config.vm.network :private_network, ip: "192.168.33.44"
  config.vm.hostname = "local.example.com"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
end

以下是我尝试过的一些方法:

  • 更改为端口转发 80 -> 8080。卷曲localhost:8080就挂在那里。
  • 尝试另一个 IP 地址。没有区别。
  • python -m SimpleHTTPServer在已知会监听的服务器上打开0.0.0.0。仍然收到“连接被拒绝”提示。

已知这些东西是有效的:

  • 使用给定的私有网络 IP 通过 SSH 进入服务器即可。
  • 从盒子内部卷曲是可行的。
  • 相同的设置在真实服务器上运行。

我安装了 Guest Additions,但是客户机和主机上的版本不同。这可能是问题所在。但是为什么 SSH 可以工作,而端口 80 却不行?这是我执行此操作时的输出vagrant reloadhttps://gist.github.com/magnars/496e553f07ad5c770c54

更新

虽然这不起作用:

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

这确实:

ssh -f [email protected] -L 8080:127.0.0.1:80 -N

有任何想法吗?

答案1

尽管可能有很多地方出错,但首先要检查的是客户机内部的防火墙:它可能很简单,例如它有针对端口 22 的规则,但没有针对端口 80 的规则。

答案2

通过在来宾主机中禁用防火墙解决了相同的问题

sudo service iptables stop
sudo service ip6tables stop 

您可以使用iptables --list来检查

[vagrant@c6401 ~]$ sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

相关内容