Hybrid NAT

Hybrid NAT 是一种 Private NAT,可让您在 Virtual Private Cloud (VPC) 网络与本地网络或其他云服务商网络之间执行网络地址转换 (NAT)。必须使用 Google Cloud 的 Network Connectivity 产品(例如 Cloud InterconnectCloud VPN)将非 Google Cloud 网络连接到您的 VPC 网络。

规格

除了常规 Private NAT 规范之外,混合 NAT 还具有以下规范:

  • 借助 Hybrid NAT,VPC 网络可以与本地网络或其他云服务提供商网络通信,即使这些网络的子网 IP 地址范围重叠也是如此。通过使用 type=PRIVATE 的 NAT 配置,VPC 网络的重叠子网和非重叠子网中的资源都可以连接到非 Google Cloud 网络的非重叠子网中的资源。
  • 如需启用混合 NAT,非 Google Cloud 网络必须通告其动态路由,以便您的 VPC 网络可以学习和使用这些路由。Cloud Router 会从 Google Cloud 的 Network Connectivity 产品(例如 Cloud Interconnect、高可用性 VPN 或配置了动态路由的传统 VPN)学习这些动态路由。这些动态路由的目的地是 VPC 网络之外的 IP 地址范围。

    同样,对于返回流量,您的 VPC 网络必须使用 Cloud Router 通告专用 NAT 子网路由,并且此子网路由不得与已连接网络中的现有子网重叠。

  • Hybrid NAT 会对从 VPC 网络发送到本地网络或其他云服务提供商网络的流量执行 NAT。这些网络必须通过 Cloud Interconnect 或 Cloud VPN 连接。

  • 只有在启用动态路由的情况下,混合 NAT 才支持现有的传统 VPN 隧道。

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

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

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

基本 Hybrid NAT 配置和工作流

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

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

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

  • pvt-nat-gw 网关在 vpc-a 中进行配置,以应用于 us-east1 区域中 subnet-a 的所有 IP 地址范围。
  • Cloud Router 和本地或其他云服务提供商路由器会交换以下子网路由:
    • Cloud Router 会将 10.1.2.0/29 通告给外部路由器。
    • 外部路由器向 Cloud Router 通告 192.168.2.0/24
  • 如果使用 pvt-nat-gw 的 NAT IP 地址范围,则 vpc-asubnet-a 中的虚拟机 (VM) 实例可以将流量发送到本地网络或其他云提供商网络的 subnet-b 中的虚拟机,即使 vpc-asubnet-a 与非 Google Cloud 网络中的另一个子网重叠。

Hybrid NAT 工作流示例

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

  • 指定用途为 PRIVATE_NAT 的 Private NAT 子网,例如 10.1.2.0/29。在配置 Private NAT 网关之前,请先创建此子网。确保此子网与任何已连接网络中的现有子网不重叠。
  • 使用 match='nexthop.is_hybrid' 创建 NAT 规则。
  • 将 Private NAT 网关配置为应用于 subnet-a 的所有 IP 地址范围。

Hybrid 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,保持不变

后续步骤