请问如何操作?
您需要:
前往cloud.google.com
进入我的控制台
选择您的项目
选择网络和gt; VPC网络
选择"防火墙"
选择“创建防火墙规则”
要将该规则应用于选择的VM实例,请选择目标>“指定目标标记”,并在“目标标记”中输入标记名称。此标记将用于将新防火墙规则应用于所需的任何实例。然后,请确保实例已应用网络标记。
将源IP范围设置为允许来自所有IP的流量:0.0.0.0/0
要允许传入到9090端口的TCP连接,在“协议和端口”中勾选“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
命令手册
之前的回答很棒,但Google建议使用更新的gcloud
命令而不是gcutil
命令。
PS:
要了解Google的防火墙规则,请运行 gcloud compute firewall-rules list
并查看所有防火墙规则
--description
部分时,我会收到投诉,但除此之外,这对我很有效。 - shabbychefsource
表示传入流量,而target
是要应用规则的实例。 - cindyxiaoxiaolitelnet:instance_ip:port
还是nmap -p:port:instance_ip
? - Nam G VU这个问题比较老,Carlos Rojas的回答很好,但我认为在尝试打开端口时应该记住以下几点。
首先要记住的是,Networking 部分已经更名为VPC Networking。因此,如果你想找到 Firewall Rules选项在哪里,请去 VPC Networking中查找。
其次,如果您正在尝试在Linux VM上打开端口,请确保绝不要使用ufw
命令打开端口。我尝试过,结果失去了对VM的ssh访问权限。所以不要重复我的错误。
第三点是,如果您正在尝试在Windows VM上打开端口,则需要在VM内部的 Windows Firewall 中创建防火墙规则,并在 VPC Networking -> Firewall Rules 中也创建防火墙规则。与Linux VM不同,端口需要在两个防火墙规则中都打开。因此,如果您无法从VM外部访问端口,请检查是否已经在GCP控制台和Windows防火墙中都打开了该端口。
最后(显而易见的)一点是,不要无端开放端口。当您不再需要时,请立即关闭端口。
我希望这个答案对您有用。
ufw
命令打开了一些特定的端口,但我仍然可以访问 SSH。 - stackErrufw
打开了一个端口,结果永远失去了ssh访问权限。甚至无法从浏览器登录。这是设计上的吗? - undefined创建防火墙规则
如果您不熟悉GCP中的防火墙规则,请查看防火墙规则组件[1]。防火墙规则在网络层定义,并且仅适用于创建规则的网络;但是,您为每个规则选择的名称必须对项目唯一。
使用Cloud Console:
指定规则的目标。
对于入口规则,请指定源过滤器:
对于出站规则,请指定目标过滤器:
定义适用于该规则的协议和端口:
根据操作选择“允许全部”或“拒绝全部”,使规则适用于所有协议和端口。
定义特定的协议和端口:
(可选)您可以创建防火墙规则但不强制执行它,方法是将其执行状态设置为已禁用。单击“禁用规则”,然后选择“已禁用”。
(可选)您可以启用防火墙规则日志记录:
单击“创建”。
链接: [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中创建和管理防火墙的更多信息。
gcutil
已不再提供支持,请使用 gcloud
重写您的命令行。 - Misha Brukman我和你一样遇到了同样的问题,遵循@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
点击保存。
我不得不通过降低优先级(使其更高)来修复这个问题。这导致了立即的响应。虽然不是我预期的结果,但它起作用了。