在Google云端vm上公开端口

时间:2017-07-21 09:35:27

标签: google-cloud-platform

我在谷歌云上有两个项目。第一个已经建立了15个小时前工作正常,端口8080正确暴露,我可以访问它。

现在,我正试图与另一个项目完全相同。我使用相同的配置在那里创建了相同的vm实例,使用ssh连接输入相同的命令。但我无法将应用程序连接到此服务器。

我试图在第一个项目上创建另一个vm实例并且它可以工作,但无论我在第二个项目上创建什么 - 我都无法访问它。

我认为,项目配置有问题,因此没有提供有关VM内容的详细信息。

1 个答案:

答案 0 :(得分:3)

TL; DR - 仔细检查并比较两个项目中的防火墙规则。您很可能缺少防火墙规则,以允许传入流量到项目中不能正常工作的实例上的端口8080,而另一个项目则配置了这些规则。

Default Firewall rules

默认情况下,Google Compute Engine防火墙会阻止所有入口流量(即传入网络流量)到您的虚拟机。如果您的虚拟机是在默认网络上创建的(通常是这种情况),则只允许使用22(ssh),3389(RDP)等端口。

default firewall rules are described here

打开入口端口

ingress firewall rules are described in detail here

建议的方法是创建防火墙规则,允许在端口8080上传入到您的VM(包含您选择的特定标记)的流量。然后,您可以将此标记仅关联到您希望允许进入的VM 8080

使用gcloud执行此操作的步骤:

# Create a new firewall rule that allows INGRESS tcp:8080 with VMs containing tag 'allow-tcp-8080'
gcloud compute firewall-rules create rule-allow-tcp-8080 --source-ranges 0.0.0.0/0 --target-tags allow-tcp-8080 --allow tcp:8080

# Add the 'allow-tcp-8080' tag to a VM named VM_NAME
gcloud compute instances add-tags VM_NAME --tags allow-tcp-8080

# If you want to list all the GCE firewall rules
gcloud compute firewall-rules list

以下是another stack overflow answer,其中介绍了如何使用Cloud Console Web UI(除gcloud之外)允许特定端口上的入口流量到您的VM。

操作系统级防火墙规则

由于您没有提及您是否正在使用任何public Google Compute Engine imagesContainer-Optimized OS图片或您选择的自定义图片,我还想提及即使您配置GCE防火墙允许传入流量到达您的VM的规则,您的操作系统级防火墙仍然可以很好地拒绝流量。

Google's Container-Optimized OS images have this feature turned on,它阻止除端口22(SSH)之外的所有入口端口。