Google Cloud Firewall配置求助:Debian实例80端口规则设置后仍显示blocked
排查GCP Debian实例80端口仍被Blocked的问题
嘿,我来帮你捋捋这个问题——这种端口访问的坑我之前也踩过好几次,咱们一步步排查可能的操作失误点:
1. 先核对GCP防火墙规则的核心配置细节
别光看“配了80端口规则”,得确认几个关键项没搞错:
- 规则方向:必须是入站(Ingress),要是选成出站(Egress)那完全没用。
- 目标范围:要确保你的虚拟机实例被包含在内——要么选“所有实例”,要么给实例打了对应标签,规则的目标标签和实例标签匹配。很多人容易犯的错是规则设了标签,但自己的机器没加这个标签。
- 端口与协议:要明确填
tcp:80(或者端口范围80-80),别漏了协议,或者填成UDP了。 - 来源IP:如果想让公网访问,得设成
0.0.0.0/0(IPv4)和::/0(IPv6);要是只给自己测试,就填你本地的公网IP段。别不小心设成了某个特定IP,结果自己不在这个范围内。 - 优先级:GCP防火墙规则是优先级数字越小越先执行,默认的
default-deny-ingress优先级是1000,你的允许规则优先级得比它低(比如填65534,这是默认允许规则的优先级),不然会被拒绝规则覆盖。
2. 检查Debian实例内部的本地防火墙
GCP的外部防火墙放行后,机器本身的防火墙可能还在拦着:
- 先看Debian默认的
ufw状态:运行sudo ufw status,如果显示active,那得主动允许80端口:sudo ufw allow 80/tcp sudo ufw reload - 要是用的是
iptables,可以用sudo iptables -L -n查看规则列表,确认有没有拒绝80端口的条目。如果有,添加允许规则:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables-save > /etc/iptables/rules.v4 # 保存规则防止重启失效
3. 确认Web服务真的在监听80端口
防火墙配好了,但服务没启动或者没监听80端口也白搭:
- 用
ss命令检查监听状态:
或者装ss -tulpn | grep :80net-tools后用netstat:
如果看不到对应的Web服务进程(比如Nginx/Apache),先启动服务:sudo apt install net-tools netstat -tulpn | grep :80
也可以在本地测试:# 以Nginx为例 sudo systemctl start nginx sudo systemctl enable nginx # 设置开机自启curl http://localhost:80,如果能返回内容,说明服务本身没问题。
4. 验证规则是否真的生效
- 可以在GCP控制台的「VPC网络」->「防火墙」里,找到你创建的规则,点击「测试规则」,输入虚拟机的公网IP,看看规则能不能匹配上。
- 从你本地机器直接测试:用
telnet <你的公网IP> 80或者curl http://<你的公网IP>,如果本地能访问,但端口扫描工具显示blocked,可能是扫描工具的缓存或者自身限制,别太依赖第三方工具的结果,以实际访问为准。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

