Hybrid NAT

Hybrid NAT 是一种 Private NAT,可让您在 Virtual Private Cloud (VPC) 网络与本地网络或其他云服务商网络之间执行网络地址转换 (NAT)。非Google Cloud 网络必须通过 Google Cloud的 Network Connectivity 产品(例如 Cloud InterconnectCloud VPN)连接到您的 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,保持不变

后续步骤