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