如何在Google Compute Engine中打开特定端口,例如9090

Sub*_*ose 172 port google-compute-engine google-cloud-platform

我有2个Google Compute Engine实例,我想在两个实例中打开端口9090.我想我们需要添加一些防火墙规则.

你能告诉我怎么办?

Car*_*jas 308

你需要:

  1. 转到cloud.google.com

  2. 转到我的控制台

  3. 选择你的项目

  4. 选择"网络> VPC网络"

  5. 选择"防火墙规则"

  6. 选择"创建防火墙规则"

  7. 要应用规则以选择VM实例,请选择"目标">"指定的目标标记",然后在"目标标记"中输入标记的名称.此标记将用于将新防火墙规则应用于您想要的任何实例.然后,确保实例已应用网络标记.

  8. 要允许传入TCP连接到端口9090,请在"协议和端口"中输入 tcp:9090

  9. 单击"创建"

我希望这可以帮助你.

更新请参阅文档以自定义您的规则.

  • 是的,现在没有网络选项,更新的路径是项目 - >网络 - >防火墙规则 (8认同)
  • 计算引擎没有"网络"选项(不再?) (4认同)
  • 文档的菜单路径不断变化.它认为在答案中指向文档非常重要:https://cloud.google.com/vpc/docs/using-firewalls (4认同)
  • 如何确保该标签应用于实例? (2认同)

mod*_*tos 74

以下是回答此问题的命令行方法:

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>"
Run Code Online (Sandbox Code Playgroud)

这将打开9090您命名的实例的端口.省略--source-tags并将--source-ranges规则应用于所有实例.更多细节中Gcloud文档所述firewall-rule create命令的手动

之前的答案很棒,但Google建议使用较新的gcloud命令而不是gcutil命令.

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

  • 我不确定他们是否更改了 api,但源和目标似乎与 @modulitos 的答案相反。根据 [firewall-rules 命令文档](https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/create),“源”表示传入流量,而“目标”表示实例将规则应用于。 (2认同)

小智 12

创建防火墙规则

如果您不熟悉 GCP 中的防火墙规则,请查看防火墙规则组件 [1]。防火墙规则是在网络层定义的,只适用于创建它们的网络;但是,您为每个名称选择的名称对于项目必须是唯一的。

对于 Cloud Console:

  1. 转到 Google Cloud Platform Console 中的防火墙规则页面。
  2. 单击创建防火墙规则。
  3. 输入防火墙规则的名称。该名称对于项目必须是唯一的。
  4. 指定将实施防火墙规则的网络。
  5. 指定规则的优先级。数字越小,优先级越高。
  6. 对于流量方向,选择入口或出口。
  7. 对于匹配操作,选择允许或拒绝。
  8. 指定规则的目标。

    • 如果您希望规则应用于网络中的所有实例,请选择网络中的所有实例。
    • 如果您希望规则应用于按网络(目标)标签选择实例,请选择指定的目标标签,然后在目标标签字段中键入规则应应用到的标签。
    • 如果您希望规则应用于通过关联的服务帐户选择实例,请选择指定的服务帐户,指明服务帐户是在当前项目中还是在服务帐户范围下的另一个项目中,然后在目标服务中选择或键入服务帐户名称帐户字段。
  9. 对于入口规则,指定源过滤器:

    • 选择 IP 范围并在源 IP 范围字段中键入 CIDR 块,以按 IP 地址范围定义传入流量的来源。对来自任何网络的源使用 0.0.0.0/0。
    • 选择子网,然后从子网弹出按钮中标记您需要的子网,以按子网名称定义传入流量的来源。
    • 要按网络标签限制来源,请选择来源标签,然后在来源标签字段中输入网络标签。关于源标签数量的限制,请参见VPC配额和限制。仅当服务帐户未指定目标时,才可以按源标签过滤。有关更多信息,请参阅按服务帐户与网络标签过滤。
    • 要按服务帐户限制来源,请选择服务帐户,指明服务帐户是在当前项目中还是在服务帐户范围下的另一个项目中,然后在源服务帐户字段中选择或键入服务帐户名称。仅当目标未由网络标记指定时,才能按源服务帐户过滤。有关更多信息,请参阅按服务帐户与网络标签过滤。
    • 如果需要,指定第二个源过滤器。次要源过滤器不能使用与主要过滤器相同的过滤器标准。
  10. 对于出口规则,指定目标过滤器:

    • 选择 IP 范围并在目标 IP 范围字段中键入 CIDR 块,以按 IP 地址范围定义传出流量的目标。使用 0.0.0.0/0 表示无处不在。
    • 选择子网,然后从子网弹出按钮中标记您需要的子网,以按子网名称定义传出流量的目的地。
  11. 定义规则将应用到的协议和端口:

    • 根据操作,选择全部允许或全部拒绝,将规则应用于所有协议和端口。

    • 定义特定的协议和端口:

      • 选择 tcp 以包含 TCP 协议和端口。输入所有端口或以逗号分隔的端口列表,例如 20-22、80、8080。
      • 选择 udp 以包含 UDP 协议和端口。输入所有端口或以逗号分隔的端口列表,例如 67-69、123。
      • 选择其他协议以包括 icmp 或 sctp 等协议。
  12. (可选)您可以创建防火墙规则,但不能通过将其强制执行状态设置为禁用来强制执行它。单击禁用规则,然后选择禁用。

  13. (可选)您可以启用防火墙规则日志记录:

    • 单击日志 > 打开。
    • 单击打开。
  14. 单击创建。

链接:[1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components


noo*_*oob 10

这个问题很老了,卡洛斯罗哈斯的答案很好,但我想我应该发布一些在尝试打开端口时应该记住的事情.

首先要记住的是,网络部分已重命名为VPC Networking.因此,如果您要查找防火墙规则选项的可用位置,请查看VPC Networking.

第二件事是,如果您尝试在Linux VM上打开端口,请确保在任何情况下都不应尝试使用ufw命令打开端口.我尝试使用它并丢失了对VM的ssh访问权限.所以不要重复我的错误.

第三件事是,如果您尝试在Windows VM上打开端口,则还需要在Windows防火墙中创建防火墙规则以及VPC网络 - >防火墙规则.与Linux VM不同,端口需要在两个防火墙规则中打开.因此,如果您无法从VM外部访问该端口,请检查您是否已在GCP控制台和Windows防火墙中打开该端口.

最后(显而易见的)是,不要不必要地打开端口.一旦不再需要,关闭端口.

我希望这个答案很有用.


E. *_*son 9

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

如果要将端口9090打开到所有实例,可以创建防火墙规则,如:

gcutil addfirewall allow-9090 --allowed=tcp:9090
Run Code Online (Sandbox Code Playgroud)

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

如果您只想将端口9090打开到为您的应用程序提供服务的两个实例,请确保它们具有类似的标记my-app,然后添加如下防火墙:

gcutil addfirewall my-app-9090 --allowed=tcp:9090 --target_tags=my-app
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关在GCE中创建和管理防火墙的更多信息.

  • `gcutil`不再可用; 请使用`gcloud`重写命令行. (9认同)

小智 7

我有同样的问题,因为你这样做,我可以通过以下一点点差别@CarlosRojas说明解决这个问题.而不是创建一个新的防火墙规则我编辑了default-allow-internal一个从任何地方接受,因为创建新规则并没有任何区别的流量.

  • 虽然这可能有效,但这种方法存在安全问题.我发现为我工作的是在我的实例上使用防火墙标签.创建防火墙规则时,可以为该规则创建"目标标记".然后,您可以将该标记应用于VM实例,该实例将该规则应用于您的特定实例.有关详细信息,请参阅此处接受的答案:http://stackoverflow.com/questions/31509722/how-do-i-enable-http-traffic-for-gce-instance-templates (2认同)