我们正在尝试在 GCP VPC 内部运行 Packer。
出于安全原因,我们已禁用所有实例的外部 IP 地址。
为了访问 Google API,我们设置了私人 Google 访问权限并通过以下方式验证其正常工作:
$ traceroute -T -p 443 www.googleapis.com
traceroute to www.googleapis.com (199.36.153.4), 30 hops max, 44 byte packets
1 gateway (172.17.0.1) 0.081 ms 0.017 ms 0.016 ms
2 199.36.153.4 (199.36.153.4) 3.949 ms 3.942 ms 4.992 ms
现在在实例中,当我们运行时,我们无法使用谷歌 API 访问谷歌云图像,它失败并显示:
<p><b>404.</b> <ins>That’s an error.</ins>
<p>The requested URL <code>/batch/compute/v1</code> was not found on this server.
<ins>That’s all we know.</ins>
这是否意味着我们的设置在某种程度上是错误的?有人能告诉我验证私人访问是否正常工作的正确方法吗?
答案1
首先,请确保你遵循了我们公开文档中列出的所有步骤从 VPC 网络设置到 GCP 服务的专用连接。
要将服务边界内的私有 Google 访问限制为仅支持 VPC 服务控制的 Google API 和服务,您的 VM 实例必须将请求发送到 restricted.googleapis.com 而不是 *.googleapis.com。
restricted.googleapis.com 主机充当代理。您的请求必须包含您尝试访问的原始 API 的标头。
下一个,请注意,Compute Engine 的 VPC Service Controls 支持使您可以在服务边界内使用 VPC 网络。但也存在一些局限性,例如,您无法使用服务边界保护 Compute Engine API。
尝试访问 VPC 服务控制受限 VIP 不支持的 API 将导致 404 错误。
您收到的错误是 VPC Service Controls 不支持且在受限 VIP 上不可用的服务所导致的。因此,请确保您尝试调用的 API 属于VPC Service Controls 支持的服务。如果是,那么你应该检查已知服务限制和不支持受限 VIP 服务查看这是否是已知限制。否则,应报告此问题。
这公共问题追踪是用于报告与 Google Cloud Platform 服务和产品的配置或行为相关的问题的工具和完美论坛。它允许您与专家互动,有时还可以与构建产品的工程师互动。了解更多信息这里。你甚至可能想用它来报告此问题如果您仍然遇到障碍。
答案2
答案3
事实证明,有两份文件似乎在谈论同一件事——私人 Google 访问,而一份是用于 VPC 服务控制(我们不知道我们是否有,因为我们不在组织级别)
我们需要做的就是删除指向 restricted.googleapis.com 的 DNS,问题就解决了。