混合 NAT

混合 NAT 是一种 Private 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 网络中的资源可以使用该范围与其他网络进行通信。

  • 配置混合 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 中的虚拟机实例可以将流量发送到本地网络或任何其他云服务商网络的 subnet-b 中的虚拟机,即使 vpc-asubnet-a 与本地网络或其他云提供商网络中的另一个子网重叠也是如此。

混合 NAT 工作流示例

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

  • 专用 NAT 子网:请先创建此子网,其子网 IP 地址范围为 10.1.2.0/29,用途为 PRIVATE_NAT,然后再配置专用 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,未更改

后续步骤