如何在GCP跨项目共享VPC中禁用App Engine公共入站访问
GCP App Engine 内网访问连通问题排查方案
1. 确认Shared VPC授权与子网配置
- 检查服务项目的App Engine服务帐号
service-<服务项目号>@gae-api-prod.google.com.iam.gserviceaccount.com是否在宿主项目中拥有roles/compute.networkUser角色,无此权限则服务项目无法使用共享VPC。 - 确保VPC B的目标子网已开启私有Google访问(Private Google Access),App Engine依赖该配置访问Google核心服务,同时子网路由需允许流量流向本地网络。
2. 核对App Engine入站限制配置
- 确认部署时明确设置内网-only访问:要么在
app.yaml中添加ingress: internal-only,要么执行命令gcloud app deploy --ingress internal-only,避免遗漏配置参数。 - 查看App Engine控制台的服务设置,确认没有额外的外部IP允许规则覆盖内网限制。
3. 检查VPN与跨VPC路由
- 若VPC A和VPC B使用对等连接,确认对等关系为双向,路由条目已同步,本地网络IP段可被VPC B识别。
- 查看VPN隧道状态,确保隧道处于UP状态,无论使用BGP还是静态路由,本地网络IP范围需正确发布到VPC A并同步至VPC B。
- 检查VPC B的路由表,确认存在指向VPC A的路由规则,将本地内网流量引导至VPN方向,缺失则手动添加。
4. 防火墙规则排查
- 在宿主项目的VPC B中,添加防火墙规则:来源设为本地内网CIDR,目标选择App Engine使用的子网,允许80/443端口的入站流量。
- 确认不存在针对App Engine服务帐号的deny规则,避免直接阻断流量。
5. 连通性测试定位问题
- 在本地网络使用
traceroute或mtr工具测试App Engine内部IP(通过gcloud app describe获取服务内部IP范围),定位流量阻断的节点。 - 在VPC B中创建临时VM,直接访问App Engine服务:若VM可访问但本地不行,问题出在VPN或跨VPC路由;若VM也无法访问,则排查App Engine配置或VPC B防火墙。
6. 私有DNS配置(自定义域名场景)
- 若使用自定义域名访问App Engine,需确保本地DNS将域名解析至App Engine内部IP,或在Cloud DNS中创建私有区域,绑定域名与内部IP,保证VPC B和本地网络可正确解析。
内容的提问来源于stack exchange,提问作者S.K
相关产品推荐
相关产品推荐

