GCP国际版 GCP谷歌云防火墙设置教程
你有没有在GCP上部署完一个Web服务,兴冲冲打开浏览器输入IP,结果——
“无法访问此网站”。
刷新三次,抓头发三次,重启实例两次,最后发现:哦…防火墙根本没放行80端口。
别笑,这事儿我干过,而且是在客户演示前15分钟。当时我的汗珠子比Compute Engine的CPU使用率还高。
今天这篇,不画大饼、不堆术语、不甩官方文档链接,就用你泡咖啡时能读完的节奏,把GCP防火墙从“玄学黑盒”掰开揉碎,喂到你嘴边——咸淡刚好,带点焦糖味儿。
一、先破个幻觉:GCP防火墙 ≠ 你家路由器那个小盒子
很多刚从AWS或阿里云转来的同学,第一反应是:“找个‘安全组’点几下不就完了?”
错。
GCP的防火墙是网络层级(VPC Network Level)的,它不绑定在单个实例上,而是作用于整个VPC网络——就像给整栋写字楼装了一套统一门禁系统,而不是给每间办公室配把挂锁。
这意味着:你改一条规则,全网生效;你漏配一条,整片子网都可能失联。
也正因如此,它更干净、更可控——但也更需要你动脑子。
二、核心三要素:方向 × 目标 × 协议+端口
所有防火墙规则,逃不开这三个问题:
- 流量往哪儿去?(Ingress 入站 / Egress 出站)
- 谁在收/发?(目标:实例标签 / 服务账户 / IP范围)
- 传啥?走哪条道?(协议:tcp/udp/icmp;端口:80, 443, 或 all)
记住这个口诀:“进/出 + 找人 + 开门”。
比如你想让全世界能访问你的Nginx首页——那就是:
入站(Ingress)+ 目标是打了web-server标签的实例 + 放行TCP 80和443端口。
三、动手!控制台实操四步走(附避坑指南)
Step 1|进对地方
不是在Compute Engine主页瞎点!路径是:导航菜单 → VPC网络 → 防火墙。对,就是VPC下面,不是实例旁边。
Step 2|新建规则,别选错类型
点“创建防火墙规则”,先看顶部两个开关:
✅ Ingress(默认)→ 外部访问你实例
❌ Egress→ 实例主动访问外网(比如curl第三方API)
新手90%只用Ingress,先专注搞定它。
Step 3|关键填三项(别抄模板!)
- 名称:别写
allow-all!写ingress-http-https-from-internet-to-web——半年后你还记得这规则干啥用。 - 目标:选“指定目标标签” → 输
web-server(等下你要给实例打这个标签) - 源IP范围:想公开?填
0.0.0.0/0;想只给公司IP访问?填203.0.113.5/32(注意是/32,不是/24乱填) - 协议和端口:选“指定协议和端口” → 勾tcp,输
80,443(逗号分隔,别空格!)
⚠️ 重点避坑:
• 默认规则default-deny-all永远生效——你没显式允许,它就默默挡掉一切。
• “目标”里选“所有实例”?慎!测试环境可以,生产等于裸奔。
• 源IP填0.0.0.0/0后,别忘了配HTTPS重定向,否则HTTP明文传输会被现代浏览器标红。
Step 4|打标签!不然规则是废纸
规则写了,但实例没标签?等于门禁卡办好了,人没领卡。
回到Compute Engine → 实例,点击实例名 → 编辑 → 向下拉找到“网络接口” → “网络标签”框里输入web-server → 保存。
✅ 完成。等30秒,访问你的公网IP,该亮的灯就亮了。
四、命令行党福利:三条gcloud,顶十次点点点
想批量操作?或者写CI/CD脚本?终端敲:
# 创建入站规则(允许80/443)
gcloud compute firewall-rules create allow-web-ingress \
--direction=INGRESS \
--priority=1000 \
--network=default \
--action=ALLOW \
--rules=tcp:80,tcp:443 \
--source-ranges=0.0.0.0/0 \
--target-tags=web-server
# 给实例打标签(替换INSTANCE_NAME)
gcloud compute instances add-tags INSTANCE_NAME \
--tags=web-server \
--zone=us-central1-a
# 查看实时生效规则
gcloud compute firewall-rules list --filter="targetTags:web-server"
💡 小技巧:用--dry-run先预演,避免手抖删错规则。
五、那些年我们共同踩过的坑
坑1|“我开了80,为啥还是打不开?”
→ 检查实例内部:Nginx是否运行?sudo systemctl status nginx
→ 检查实例防火墙:Ubuntu默认有UFW,CentOS有firewalld——GCP防火墙管外,系统防火墙管内,双保险变双堵墙。
GCP国际版 坑2|SSH连不上了!
→ 你很可能删了默认的default-allow-ssh规则。救急命令:gcloud compute firewall-rules create default-allow-ssh --allow tcp:22 --source-ranges 0.0.0.0/0 --target-tags your-instance-tag
坑3|规则写了,但只有部分IP能访问
→ 检查源IP是否被运营商NAT池污染(比如企业宽带出口IP不固定),建议配合Cloud NAT或静态外部IP使用。
六、进阶彩蛋:用服务账户代替标签,更安全
标签靠名字匹配,万一误打?服务账户(Service Account)是身份凭证,更精准。
只需把规则中“目标”从“标签”换成“服务账户”,再把实例启动时绑定的服务账户填进去——连SSH都可按角色放行,彻底告别“谁都能连”的时代。
结语:防火墙不是拦路石,是交通指挥员
它不该让你头疼,而该让你踏实:你知道谁来、为何来、走哪条路、带走什么数据。
下次再遇到“无法访问”,别急着重装系统——先打开防火墙页面,默念三遍:
方向对不对?目标认不认得清?端口开没开?
如果三遍之后还是不行……
那大概率是你忘重启Nginx了 😅
祝你防火墙永远绿,实例永远稳,咖啡永远热。

