通过 HTTP/2 上的 gRPC 流访问 GCP 机器学习 API 的静态 IP

Static IP to access GCP Machine Learning APIs via gRPC stream over HTTP/2

我们生活在一家公司 proxy/firewall 后面,它只能使用静态 IP 规则,不能使用 FQDN。 对于我们的项目,我们需要访问 Google Speech To Text API:https://speech.googleapis.com。如果在公司网络之外,我们使用 gRPC stream over HTTP/2 来做到这一点。

理想情况如下:
Corporate network -> static IP in GCP -> forwarded gRPC stream to speech.googleapis.com

我们尝试过创建全局静态外部 IP,但在配置负载均衡器时失败了,因为它只能连接到 VM 而不能连接 APIs。

或者,我们正在考虑使用 nslookup speech.googleapis.com IP 地址范围的输出并每天更新它,尽管它看起来很漂亮 'dirty'。

我知道我们可以配置计算引擎资源/VM 并转发流量,但这看起来也不是一个优雅的解决方案。最好,我们可以使用现有的 GCP 网络组件来实现。

非常感谢任何指点!

Google 不发布 CIDR 块供您使用。尝试将 IP 地址列入白名单时,您每天都会感到悲伤。 Google 的大多数 API 服务都以全球前端 (GFE) 为前端。这使用 HTTP 主机 headers 来路由流量而不是 IP 地址,这将导致路由失败。

尝试查找 IP 地址可能是个问题。 DNS 不必 return 所有 IP 地址以在每次调用中进行名称解析。这意味着 DNS 查找现在可能 return 一组地址,而一小时后可能会出现另一组地址。这是一个悲伤的极端例子,你会因为将 IP 地址列入白名单而导致自己。

解决方案:与您的防火墙供应商联系。

感谢 Google 聪明的网络工程师找到了解决方案,张贴在这里以供将来参考:

您可以在内部 DNS 中使用 CNAME 将 *.googleapis.com 指向私有。googleapis.com。 public DNS 中的这条记录指向两个 public IP 地址 (199.36.153.8/30),它们无法从 public 互联网访问,只能通过 VPN 隧道或云互连访问。

因此,如果可以在 GCP 中设置到项目的 VPN 隧道(并且应该很容易,请参阅 https://cloud.google.com/vpn/docs/how-to/creating-static-vpns),那么这应该可以解决问题。