是否可以将 Google Cloud NAT 用于 TCP/代理 LB 后面的虚拟机,以便所有服务器都可以利用来自单个 IP 的出口?

Posted

技术标签:

【中文标题】是否可以将 Google Cloud NAT 用于 TCP/代理 LB 后面的虚拟机,以便所有服务器都可以利用来自单个 IP 的出口?【英文标题】:Is it possible to use Google Cloud NAT for VMs behind a TCP/Proxy LB so that all servers can utilize egress from a single IP? 【发布时间】:2019-10-03 04:10:13 【问题描述】:

我正在尝试在 Compute Engine 上运行的一组虚拟机上使用 Google Cloud NAT,这些虚拟机位于自己的特定子网中,以便所有服务器都从单个静态 IP 地址向客户网站发出请求。不幸的是,当我将这些虚拟机添加到 TCP/SSL 代理 LB 时,它们似乎没有使用我认为配置正确的 NAT。

我尝试配置 TCP 代理 LB 以及 HTTP(S) LB 和云 NAT,当我尝试发出出口 http 请求时,它会导致超时。通过 LB 的入口工作正常。 VM 实例没有外部 IP,这是 Cloud NAT 的要求。

我希望 http 请求能够到达服务器,并且网络服务器通过 Cloud NAT 发出出站 http 请求,这样其他服务器只需将单个 IP 地址(分配给 Cloud NAT 的静态 IP)列入白名单

【问题讨论】:

嗨,Bryan,如果我们能看到您的 NAT 示例(清理实际出口 IP),这将有助于我们为您提供更多反馈。谢谢。 【参考方案1】:

我试图了解为什么在这种情况下需要 Cloud NAT,因为 TCP/SSL 代理负载平衡器将使用私有连接连接到后端,并且后端不会暴露在互联网上。只配置一个 TCP/SSL 代理对于您的场景 imo 就足够了。 下面官方文档会解释我的观点1:

用于 HTTP(S)、SSL 代理和 TCP 代理负载平衡器的后端 VM 本身不需要外部 IP 地址,也不需要 Cloud NAT 向负载均衡器发送回复。 HTTP(S)、SSL 代理和 TCP 代理负载均衡器使用它们的主虚拟机与后端虚拟机通信 内部 IP 地址。

【讨论】:

以上是关于是否可以将 Google Cloud NAT 用于 TCP/代理 LB 后面的虚拟机,以便所有服务器都可以利用来自单个 IP 的出口?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud SQL 列级加密

如何将 google-api-client 用于 Google Cloud Logging

是否可以从 Google Drive 自动将内容上传到 Cloud Storage?

如何将 Google Cloud Firestore 本地模拟器用于 python 和测试目的

数据流工作者安装没有 NAT 的 python 库

如何在基于服务器的应用程序中直接使用 Google Cloud IoT 数据?