混合 NAT

混合 NAT 是一种专用 NAT 产品,可让您在 Virtual Private Cloud (VPC) 网络和本地网络或任何其他云服务商网络之间对 IP 地址进行网络地址转换 (NAT)。这些网络必须使用 Google Cloud 的企业混合连接产品(例如 Cloud VPN)连接到您的 VPC 网络。

规范

除了通用专用 NAT 规范之外,请考虑以下混合 NAT 规范:

  • 混合 NAT 可让 VPC 网络与本地网络或任何其他云服务商网络进行通信,即使通信网络的子网 IP 地址范围重叠也是如此。通过使用 type=PRIVATE 的 NAT 配置,VPC 网络重叠和非重叠子网中的资源只能连接到本地网络或任何其他云服务商网络中不重叠子网中的资源。
  • 如需启用混合 NAT,本地网络或其他云服务商网络必须通告其动态路由,以便您的 VPC 网络可以了解和使用它们。您的 Cloud Router 路由器会从 Google Cloud 的混合连接解决方案(如配置了动态路由的高可用性 VPN 或传统 VPN)中学习这些动态路由。这些动态路由的目的地是您的 VPC 网络之外的 IP 地址范围。

    同样,对于返回流量,您的 VPC 网络必须使用 Cloud Router 路由器通告专用 NAT 子网路由。

  • 混合 NAT 对源自 VPC 网络到本地网络或任何其他云服务商网络的流量执行 NAT。这些网络必须通过 Cloud VPN 通过动态路由进行连接。

  • 仅当启用了动态路由时,混合 NAT 才支持现有的传统 VPN 隧道。

  • 您需要使用匹配表达式 nexthop.is_hybrid 创建自定义 NAT 规则。NAT 规则会指定用途为 PRIVATE_NAT 的子网中的 NAT IP 地址范围,您的 VPC 网络中的资源可用于与其他网络通信。

  • us-central1us-east4 以外的所有 Google Cloud 区域都支持混合 NAT。

  • 配置混合 NAT 的 Cloud Router 路由器必须与 VPC 网络位于同一区域。

  • 配置混合 NAT 的 Cloud Router 路由器不能包含任何其他 NAT 配置。

  • 不得在存在 Cloud Interconnect 连接的 VPC 网络中配置混合 NAT。

基本混合 NAT 配置和工作流

下图显示了基本的混合 NAT 配置:

混合 NAT 转换示例。
混合 NAT 转换示例(点击可放大)。

在此示例中,混合 NAT 设置如下:

  • pvt-nat-gw 网关在 vpc-a 中配置为应用于 us-east1 区域中 subnet-a 的所有 IP 地址范围。
  • 通过使用 pvt-nat-gw 的 NAT IP 地址范围,即使 vpc-asubnet-a 与本地网络或其他云提供商网络中的另一个子网重叠,vpc-asubnet-a 中的虚拟机 (VM) 实例也可以将流量发送到本地网络或任何其他云服务提供商网络的 subnet-b 内的虚拟机。

混合 NAT 工作流示例

在上图中,vpc-a subnet-a 中内部 IP 地址 192.168.1.2vm-a 需要从本地网络或任何其他云服务提供商网络的 subnet-b 中具有内部 IP 地址 192.168.2.2vm-b 下载更新。Cloud VPN 可将您的 VPC 网络连接到本地网络或任何其他云服务商网络。假设本地网络或其他云服务商网络包含与 vpc-a 中的子网重叠的另一个子网 192.168.1.0/24。为了让 vpc-asubnet-a 与本地或其他云服务商网络的 subnet-b 通信,您需要在 vpc-a 中配置专用 NAT 网关 pvt-nat-gw,如下所示:

  • 专用 NAT 子网:在配置专用 NAT 网关之前,创建此子网,子网 IP 地址范围为 10.1.2.0/29,用途为 PRIVATE_NAT。请确保此子网不与任何连接的网络中的现有子网重叠。
  • 具有 match='nexthop.is_hybrid' 的 NAT 规则。
  • subnet-a 的所有地址范围的 NAT。

混合 NAT 按照端口预留过程为网络中的每个虚拟机预留以下 NAT 来源 IP 地址和来源端口元组。例如,Private NAT 网关会为 vm-a 预留 64 个源端口:10.1.2.2:3400010.1.2.2:34063

当虚拟机使用 TCP 协议将数据包发送到目标端口 80 上的更新服务器 192.168.2.2 时,会发生以下情况:

  1. 虚拟机发送的请求包具有以下属性:

    • 来源 IP 地址:192.168.1.2,虚拟机的内部 IP 地址
    • 来源端口:24000,虚拟机操作系统选择的临时来源端口
    • 目标地址:192.168.2.2,更新服务器的 IP 地址
    • 目标端口:80,指向更新服务器的 HTTP 流量的目标端口
    • 协议:TCP
  2. pvt-nat-gw 网关会对出站流量执行来源网络地址转换(SNAT 或来源 NAT),并重写请求数据包的 NAT 来源 IP 地址和来源端口:

    • NAT 来源 IP 地址:10.1.2.2,来自虚拟机预留的 NAT 来源 IP 地址和来源端口元组
    • 来源端口:34022,来自虚拟机预留的来源端口元组之一的未使用的来源端口
    • 目标地址:192.168.2.2,未更改
    • 目标端口:80,未更改
    • 协议:TCP,未更改
  3. 更新服务器发送一个响应数据包,该响应数据包已到达具有以下属性的 pvt-nat-gw 网关:

    • 来源 IP 地址:192.168.2.2,更新服务器的内部 IP 地址
    • 来源端口:80,来自更新服务器的 HTTP 响应
    • 目标地址:10.1.2.2,与请求数据包的原始 NAT 来源 IP 地址一致
    • 目标端口:34022,与请求数据包的来源端口匹配
    • 协议:TCP,未更改
  4. pvt-nat-gw 网关会对响应数据包执行目标网络地址转换 (DNAT),并重写响应数据包的目标地址和目标端口,以便将数据包传送到请求具有以下特性的更新的虚拟机:

    • 来源 IP 地址:192.168.2.2,未更改
    • 来源端口:80,未更改
    • 目标地址:192.168.1.2,虚拟机的内部 IP 地址
    • 目标端口:24000,与请求数据包的原始临时来源端口一致
    • 协议:TCP,未更改

后续步骤