我有 2 个 Google Compute Engine 实例,我想在这两个实例中打开端口 9090。我认为我们需要添加一些防火墙规则。
你能告诉我我该怎么做吗?
我有 2 个 Google Compute Engine 实例,我想在这两个实例中打开端口 9090。我认为我们需要添加一些防火墙规则。
你能告诉我我该怎么做吗?
你需要:
转到 cloud.google.com
转到我的控制台
选择您的项目
选择网络 > VPC 网络
选择“防火墙”
选择“创建防火墙规则”
要将规则应用于选择 VM 实例,请选择 Targets > “Specified target tags”,然后在“Target tags”中输入标签名称。此标签将用于将新的防火墙规则应用于您想要的任何实例。然后,确保实例应用了网络标签。
设置源 IP 范围以允许来自所有 IP 的流量:0.0.0.0/0
要允许传入 TCP 连接到端口 9090,在“协议和端口”中,选中“tcp”并输入9090
单击创建(或单击“等效命令行”以显示gcloud
创建相同规则的命令)
我希望这可以帮助你。
更新请参阅文档以自定义您的规则。
这是回答这个问题的命令行方法:
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 create
以前的答案很好,但谷歌建议使用较新的gcloud
命令而不是gcutil
命令。
PS:要了解 Google 的防火墙规则,请运行gcloud compute firewall-rules list
并查看所有防火墙规则
创建防火墙规则
如果您不熟悉 GCP 中的防火墙规则,请查看防火墙规则组件 [1]。防火墙规则是在网络级别定义的,并且仅适用于创建它们的网络;但是,您为每个项目选择的名称对于项目必须是唯一的。
对于云控制台:
指定规则的目标。
对于入口规则,指定源过滤器:
对于出口规则,指定目标过滤器:
定义规则将应用到的协议和端口:
根据操作选择“全部允许”或“全部拒绝”以将规则应用于所有协议和端口。
定义特定的协议和端口:
(可选)您可以创建防火墙规则,但不能通过将其强制状态设置为禁用来强制它。单击禁用规则,然后选择禁用。
(可选)您可以启用防火墙规则日志记录:
单击创建。
链接:[1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components
您需要添加防火墙规则以打开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 中创建和管理防火墙的更多信息。
这个问题很老,Carlos Rojas的回答很好,但我认为我应该发布一些在尝试打开端口时应该牢记的事情。
首先要记住的是Networking部分重命名为VPC Networking。因此,如果您想找出防火墙规则选项可用的位置,请查看VPC 网络。
第二件事是,如果您尝试在 Linux VM 上打开端口,请确保在任何情况下都不应尝试使用ufw
命令打开端口。我尝试使用它并失去了对 VM 的 ssh 访问权限。所以不要重复我的错误。
第三件事是,如果您尝试在 Windows 虚拟机上打开端口,则需要在虚拟机内创建防火墙规则,同时也在Windows 防火墙中创建VPC Networking -> Firewall Rules。与 Linux VM 不同,需要在两个防火墙规则中打开端口。因此,如果您无法从 VM 外部访问该端口,请检查您是否已在 GCP 控制台和 Windows 防火墙中打开了该端口。
最后(显而易见)的事情是,不要不必要地打开端口。不再需要时关闭端口。
我希望这个答案是有用的。
我遇到了和你一样的问题,我可以按照@CarlosRojas 的说明来解决它,但有一点不同。我没有创建新的防火墙规则,而是编辑了default-allow-internal
它以接受来自任何地方的流量,因为创建新规则没有任何区别。
我必须通过降低优先级(使其更高)来解决这个问题。这引起了立即的反应。不是我所期待的,但它奏效了。
运行此命令打开端口
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
console.cloud.google.com >> 选择项目 >> 网络 > VPC 网络 >> 防火墙 >> 创建防火墙。
要将规则应用于 VM 实例,请选择目标、“指定目标标签”,然后在“目标标签”中输入标签名称。此标签将用于将新的防火墙规则应用于您想要的任何实例。
在“协议和端口”中输入 tcp:9090
单击保存。