我有2谷歌计算引擎实例,我想在两个实例中打开端口9090。我认为我们需要添加一些防火墙规则。

你能告诉我该怎么做吗?


当前回答

这个问题很老了,Carlos Rojas的回答很好,但我认为我应该发布一些在尝试开放端口时应该记住的事情。

首先要记住的是,“网络”部分被重命名为“VPC网络”。因此,如果您试图找出防火墙规则选项可用的地方,请查看VPC网络。

第二件事是,如果您试图在Linux虚拟机上打开端口,请确保在任何情况下都不应该尝试使用ufw命令打开端口。我尝试使用它,但失去了对虚拟机的ssh访问。所以不要重复我的错误。

第三件事是,如果你试图在Windows虚拟机上开放端口,你需要在虚拟机内部创建防火墙规则,也在Windows防火墙中创建VPC网络->防火墙规则。端口需要在两个防火墙规则中都打开,不像Linux VM。因此,如果您无法从虚拟机外部访问端口,请检查是否在GCP控制台和Windows防火墙中都打开了端口。

最后一件(显而易见的)事情是,不要不必要地打开端口。关闭端口,一旦你不再需要它。

我希望这个答案对你有用。

其他回答

这个问题很老了,Carlos Rojas的回答很好,但我认为我应该发布一些在尝试开放端口时应该记住的事情。

首先要记住的是,“网络”部分被重命名为“VPC网络”。因此,如果您试图找出防火墙规则选项可用的地方,请查看VPC网络。

第二件事是,如果您试图在Linux虚拟机上打开端口,请确保在任何情况下都不应该尝试使用ufw命令打开端口。我尝试使用它,但失去了对虚拟机的ssh访问。所以不要重复我的错误。

第三件事是,如果你试图在Windows虚拟机上开放端口,你需要在虚拟机内部创建防火墙规则,也在Windows防火墙中创建VPC网络->防火墙规则。端口需要在两个防火墙规则中都打开,不像Linux VM。因此,如果您无法从虚拟机外部访问端口,请检查是否在GCP控制台和Windows防火墙中都打开了端口。

最后一件(显而易见的)事情是,不要不必要地打开端口。关闭端口,一旦你不再需要它。

我希望这个答案对你有用。

使用此命令打开端口

gcloud compute --project=<project_name> firewall-rules create firewall-rules --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:<port number> --source-ranges=0.0.0.0/0 

你需要:

Go to cloud.google.com Go to my Console Choose your Project Choose Networking > VPC network Choose "Firewall" Choose "Create Firewall Rule" To apply the rule to select VM instances, select Targets > "Specified target tags", and enter into "Target tags" the name of the tag. This tag will be used to apply the new firewall rule onto whichever instance you'd like. Then, make sure the instances have the network tag applied. Set Source IP ranges to allow traffic from all IPs: 0.0.0.0/0 To allow incoming TCP connections to port 9090, in "Protocols and Ports", check “tcp” and enter 9090 Click Create (or click “Equivalent Command Line” to show the gcloud command to create the same rule)

请参考文档自定义您的规则。

下面是回答这个问题的命令行方法:

gcloud compute firewall-rules create <rule-name> --allow tcp:9090 --source-tags=<list-of-your-instances-names> --source-ranges=0.0.0.0/0 --description="<your-description-here>"

这将为您指定的实例打开端口9090。省略——source-tags和——source-ranges将该规则应用于所有实例。更多细节在Gcloud文档和firewall-rule创建命令手册中

前面的答案很好,但是谷歌建议使用更新的gcloud命令而不是gcutil命令。

PS: 要了解谷歌的防火墙规则,请运行gcloud compute firewall-rules list并查看所有防火墙规则

您需要添加一个防火墙规则,以便向您的实例开放对tcp:9090的入站访问。如果您有两个以上的实例,并且您只想向这两个实例打开9090,那么您将希望确保这两个实例共享一个标记。您可以通过控制台或命令行添加或更新标签;如果需要,我建议使用GUI,因为它使用setinstancetags处理读取-修改-写入循环。

如果你想对所有实例开放端口9090,你可以创建这样的防火墙规则:

gcutil addfirewall allow-9090 --allowed=tcp:9090

这将适用于您的所有实例。

如果你只想打开端口9090到服务于你的应用程序的两个实例,确保它们有一个像my-app这样的标签,然后添加一个防火墙,如下所示:

gcutil addfirewall my-app-9090 --allowed=tcp:9090 --target_tags=my-app

您可以在这里阅读更多关于在GCE中创建和管理防火墙的信息。