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

为何从Compute Engine调用Google API间歇性报“Network is unreachable”且含IPv6地址

问题解答

1. 错误诱因

该错误的核心诱因是cURL默认优先尝试IPv6地址建立连接,而你的GCE实例未启用IPv6、VPC也未配置IPv6的私有Google访问权限,当短时间内调用量上升触发DNS解析更新时,如果解析拿到Google API的IPv6地址,cURL就会尝试走IPv6协议栈连接,最终触发不可达错误。
因为该错误仅在DNS解析返回IPv6地址的场景下触发,所以表现为间歇性故障,和实例本身的CPU、内存等资源利用率没有直接关联。

2. 报错为网络不可达而非Datastore业务错误的原因

cURL error 7属于传输层连接错误,错误发生在TCP三次握手阶段,此时请求还没有发送到Datastore服务端,Datastore根本没有接收到你的API调用请求,自然不会返回业务层面的错误信息。该错误是Linux内核在检测到IPv6路由不可达时直接返回给cURL的报错。

3. 报错出现IPv6子网的原因

所有Google API的公共域名默认都会同时返回IPv4(A记录)和IPv6(AAAA记录)的解析结果,和你是否启用IPv6无关。虽然Google不支持从公网IPv6地址访问大部分API服务,但VPC内部的默认DNS服务器仍然会返回Google API的AAAA记录,cURL默认的IP解析策略是优先使用IPv6,因此会尝试连接解析到的IPv6地址,最终将该地址输出到报错日志中。


修复方案

你可以通过以下任意一种方式彻底解决该问题:

  • 修改Google PHP SDK底层的cURL配置,在初始化SDK客户端时添加cURL参数配置,设置CURLOPT_IPRESOLVE为CURL_IPRESOLVE_V4,强制使用IPv4解析
  • 在系统层面修改/etc/resolv.conf,添加options single-request-reopen配置,避免DNS解析优先返回IPv6记录
  • 在VPC层面配置DNS规则,禁止解析Google API域名的AAAA记录

内容的提问来源于stack exchange,提问作者Craig Finch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:18:03