添加防火墙规则后,GCE实例上的HTTP访问

时间:2013-12-08 07:37:03

标签: apache firewall google-compute-engine

我正在尝试让Apache在GCE实例上工作。

遵循GCE的Quickstart guide,我做了以下事情:

  1. 在“my-project”(CentOS图片)
  2. 中创建了实例“my-instance”
  3. 已安装httpd,已验证其正在运行
  4. 添加了以下防火墙规则:

    gcutil addfirewall http2 --description="Incoming http allowed." --allowed="tcp:http"

    并为HTTPS和ICMP做了同样的事情

  5. 通过gce gui验证这些规则已添加到默认网络

  6. 我可以ping我的实例的IP地址,但我无法获得HTTP响应。我已经尝试通过浏览器,从curl命令 - 没有骰子。在localhost上工作正常,所以我知道Apache正在返回index.html页面。

    当我从远程主机使用curl时,错误是:

    curl: (7) Failed connect to (instance ip addr):80; Connection refused
    

    思想?

1 个答案:

答案 0 :(得分:1)

我做了一些实验来复制这个。简而言之,我相信本地Centos实例上的iptables防火墙规则可能会阻止HTTP端口80。这似乎是默认行为。

我有一个GCE防火墙规则设置,允许端口80流量到所有实例。我通过云控制台(确实使用v1 API)创建了基于centos的图像。通过SSH登录并在端口80上启动Web服务器。我无法从笔记本电脑上访问Web服务器。但是我无法从我项目中的另一个实例中点击它。这导致我怀疑实例的本地防火墙而不是Compute Engine的防火墙。

我运行了这个命令(它删除了所有端口的默认拒绝以进行测试 - 对于直接暴露于互联网的机器这是不安全的):

$ sudo iptables -D  INPUT -j REJECT --reject-with icmp-host-prohibited

运行之后,我能够从另一个实例和我的笔记本电脑上点击我的网络服务器。请注意,重新启动实例后,此更改将丢失。我不知道在Centos上更改默认防火墙规则的正确程序。

请在您的实例上尝试类似的实验,尤其是尝试从另一个Compute Engine实例访问Web服务器,因为服务级别防火墙不会阻止同一网络上的实例之间的流量。