共享VPC资源无法访问内部入站的AppEngine标准环境排查
基础配置校验(优先排查,80%的故障出在这部分)
- 明确Ingress模式的默认访问范围:App Engine标准环境的
internal模式默认仅放行同项目自有VPC内的资源访问,不会自动授权跨项目Shared VPC、通过Interconnect连入的On-prem流量,这是最容易被忽略的产品默认规则。 - 校验服务项目与Shared VPC的授权关系:
- 确认App Engine所属的服务项目,已在Shared VPC宿主项目中被授予连接器所用子网的
compute.networkUser权限 - 确认App Engine服务已经正确关联Serverless VPC Access连接器,连接器必须部署在目标Shared VPC的对应子网内,不能关联服务项目自身的独立VPC
- 检查连接器运行状态:确认连接器实例无IP耗尽、子网网段冲突问题,状态显示为正常运行
- 确认App Engine所属的服务项目,已在Shared VPC宿主项目中被授予连接器所用子网的
- 校验Private Google Access(PGA)开关:Shared VPC内承载GCE VM、Serverless VPC连接器的所有子网,必须开启PGA配置,否则子网内资源访问Google服务默认走公网出口,会被Internal Ingress规则直接拦截。
Shared VPC内GCE VM访问故障排查
- 先做基础连通性测试:
- 在VM内执行
nslookup <你的App Engine服务appspot域名>,如果返回的是公网IP,说明PGA未生效或者DNS配置错误,流量走公网必然被拦截,正常应该返回RFC1918段的私网IP - 执行
curl -v https://<你的App Engine域名>测试连通性,如果返回超时,继续查路由和防火墙;如果返回403,直接跳转到IAM权限校验部分 - 用
traceroute <App Engine域名>看流量路径,如果路径指向VPC的互联网默认网关,说明路由配置错误,流量没有走Google私网访问通道
- 在VM内执行
- 防火墙规则校验:
- 到Shared VPC宿主项目检查VPC防火墙规则,确认存在优先级足够高的出站规则,放通VM所在子网、连接器子网到Google私网访问网段的443TCP流量,同时确认没有更高优先级的拒绝规则拦截对应流量
- 检查VM自身操作系统层面的防火墙(iptables、Windows Defender防火墙等),确认没有拦截出站443端口的流量
On-prem环境访问故障排查
- 路由连通性校验:
- 检查Interconnect关联的Cloud Router BGP会话状态,确认双向路由学习正常:GCP侧能学到On-prem的所有通告网段,On-prem侧路由器能收到Google私网服务对应的前缀路由,不存在路由黑洞
- 检查Interconnect VLAN附件的ACL配置,确认没有拦截到App Engine私网访问网段的443TCP流量
- DNS配置校验:On-prem本地DNS服务器必须配置转发规则,将App Engine相关域名的解析请求转发到GCP Cloud DNS内网解析服务,确保On-prem环境访问App Engine域名时解析到私网IP,而非公网IP。
- 注意:纯
internal模式的Ingress不会放通On-prem来源的直连流量,这是产品层面的硬限制。如果前面所有配置都校验通过还是无法访问,需要将App Engine的Ingress模式调整为internal-and-cloud-load-balancing,在Shared VPC内部署内部七层负载均衡(ILB)作为流量入口,将On-prem和跨VPC的流量统一通过ILB转发到App Engine服务,这是官方支持的唯一标准方案。
其他易忽略的故障点
- IAM权限校验:如果测试时返回403权限错误,确认发起访问的用户账号、服务账号已经被授予对应App Engine服务的
appengine.services.invoke权限 - VPC Service Controls校验:如果项目开启了VPC Service Controls,确认App Engine服务、Serverless VPC Access连接器、Shared VPC都在同一个服务边界内,跨边界的访问会被默认拦截
- 网段冲突校验:确认Serverless VPC连接器所用子网、GCE VM子网、On-prem内网网段之间没有重叠,网段冲突会导致路由转发异常
内容的提问来源于stack exchange,提问作者Alessio Vintari
相关产品推荐
相关产品推荐

