You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法访问运行Fedora35的Google Cloud Compute实例外部IP

GCP VM部署Node.js服务公网访问超时排查方案

已知现象:VM实例本地执行sudo wget http://localhost:5000可正常返回200响应,已配置VPC防火墙规则开放TCP 5000端口,但通过VM外部IP访问时连接超时。按以下优先级逐一排查:

1. 修正Node.js服务监听地址

这是该场景最高发的问题:服务默认绑定127.0.0.1环回地址时,仅允许本地进程访问,外部流量无法接入。

  • 在VM内执行以下命令查看端口监听状态:
    ss -tulpn | grep :5000
    
  • 若返回结果中本地监听地址为127.0.0.1:5000,修改Node.js服务启动代码,将监听地址显式指定为0.0.0.0,示例:
    // 错误写法:仅监听本地环回
    // app.listen(5000, '127.0.0.1')
    // 正确写法:监听所有网卡地址
    app.listen(5000, '0.0.0.0', () => console.log('service running on port 5000'))
    
  • 修改后重启Node.js服务,重新验证监听地址是否生效。

2. 核对VPC防火墙规则匹配逻辑

不要仅确认规则开放了端口,需确认规则实际命中了你使用的VM实例:

  • 检查规则的「目标」配置:若规则选择「指定目标标签」模式,需进入VM实例详情页,确认实例的网络标签中已添加规则要求的匹配标签;若规则选择「网络中所有实例」,则自动对同VPC下全部VM生效。
  • 检查规则的「来源流量范围」:公网访问场景需配置为0.0.0.0/0,若误填为内网网段、特定IP段会导致公网流量被拦截。
  • 检查规则的「协议和端口」:确认选择TCP协议,端口填写为5000,无端口号笔误、协议选错为UDP的问题。
  • 检查规则的「执行动作」:确认为「允许」,而非「拒绝」。

3. 放行VM操作系统层面的防火墙

VPC防火墙是云平台层面的访问控制,VM内部操作系统自带的防火墙默认拦截未放行端口时,同样会导致连接超时:

  • Debian/Ubuntu系列系统默认使用ufw防火墙:
    执行sudo ufw status查看运行状态,若为激活状态,执行sudo ufw allow 5000/tcp放行TCP 5000端口。
  • RHEL/CentOS/Rocky/AlmaLinux系列系统默认使用firewalld防火墙:
    执行sudo firewall-cmd --add-port=5000/tcp --permanent && sudo firewall-cmd --reload永久放行端口并重载规则。
  • 若手动配置过iptables规则,执行sudo iptables -L -n查看规则链,确认无DROP目标端口5000流量的规则,按需添加放行规则。

4. 连通性验证步骤

所有配置修改完成后,先在VM内部直接访问外部IP做验证:

wget http://<替换为你的VM外部IP>:5000

若VM内部通过外部IP可正常返回200响应,再通过本地设备访问即可正常连通。若VM内部通过外部IP仍无法访问,优先回到前两步排查监听地址和防火墙规则匹配问题。

内容的提问来源于stack exchange,提问作者bihire boris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:42:22