我正在尝试让Apache在GCE实例上工作。
遵循GCE的Quickstart guide,我做了以下事情:
添加了以下防火墙规则:
gcutil addfirewall http2 --description="Incoming http allowed." --allowed="tcp:http"
并为HTTPS和ICMP做了同样的事情
通过gce gui验证这些规则已添加到默认网络
我可以ping我的实例的IP地址,但我无法获得HTTP响应。我已经尝试通过浏览器,从curl命令 - 没有骰子。在localhost上工作正常,所以我知道Apache正在返回index.html页面。
当我从远程主机使用curl时,错误是:
curl: (7) Failed connect to (instance ip addr):80; Connection refused
思想?
答案 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服务器,因为服务级别防火墙不会阻止同一网络上的实例之间的流量。