混合 NAT

混合 NAT 是一种专用 NAT, 你可以通过 Google Cloud 上的 一个 VPC 网络 或其他云服务提供商网络非 Google Cloud 网络必须是 通过使用 Google Cloud 的 Network Connectivity 产品,例如 Cloud InterconnectCloud VPN

规格

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

  • 混合 NAT 可让 VPC 网络 本地网络或其他云服务商网络,即使子网 这些网络的 IP 地址范围重叠。使用 NAT 配置为 type=PRIVATE,这两个重叠范围内的资源 和不重叠的子网之间可以连接 非重叠子网内的资源 。
  • 如需启用混合 NAT,非 Google Cloud 网络必须 通告其动态路由,以便您的 VPC 网络可以 学习和使用它们。您的 Cloud Router 路由器会学习这些动态路由 Google Cloud 的 Network Connectivity 产品(例如 Cloud Interconnect、高可用性 VPN 或 配置了动态路由的传统 VPN。 这些动态路由是 VPC 之外的 IP 地址范围 。

    同样,对于返回流量,您的 VPC 网络 投放广告 通过 Cloud Router 路由器配置专用 NAT 子网路由 并且此子网路由不得与 连接网络。

  • 混合 NAT 会对源自某个 IP 地址的流量执行 NAT, VPC 网络连接到本地网络或其他云 提供商网络。这些网络必须通过 Cloud Interconnect 或 Cloud VPN

  • Hybrid NAT 支持现有的传统 VPN 隧道 (仅在启用动态路由的情况下)

  • 您需要创建具有匹配表达式的自定义 NAT 规则 nexthop.is_hybrid。NAT 规则指定了一个 IP 地址范围, 一个用途为PRIVATE_NAT的子网 可用于与其他网络通信

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

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

基本的混合 NAT 配置和工作流

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

<ph type="x-smartling-placeholder"></ph> 混合 NAT 转换示例。
混合 NAT 转换示例(点击可放大)。

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

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

混合 NAT 工作流示例

在上图中,vm-a,内部 IP 地址 192.168.1.2 vpc-a 上的 subnet-a 需要使用内部 API 从 vm-b 下载更新 本地 subnet-b 中的 IP 地址 192.168.2.2 或其他云服务提供商网络Cloud Interconnect 连接 从 VPC 网络连接到本地网络或其他云环境, 提供商网络。假设非 Google Cloud 网络包含 另一个子网 192.168.1.0/24vpc-a 中的子网重叠。 对于vpc-asubnet-asubnet-b的 非 Google Cloud 网络,则需要配置一个 vpc-a 中的专用 NAT 网关 pvt-nat-gw,如下所示:

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

混合 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,未更改

后续步骤