混合 NAT
借助混合 NAT(一种 Private NAT),您可以在虚拟私有云 (VPC) 网络与本地网络或其他云服务商网络之间执行网络地址转换 (NAT)。非 Google Cloud 网络必须是 通过使用 Google Cloud 的 Network Connectivity 产品,例如 Cloud Interconnect 或 Cloud VPN。
规格
除了常规 Private NAT 规范之外, 混合 NAT 具有以下规范:
- 混合 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 子网路由,并且此子网路由不得与已连接网络中的现有子网重叠。
混合 NAT 会对源自某个 IP 地址的流量执行 NAT, VPC 网络连接到本地网络或其他云 提供商网络。这些网络必须通过 Cloud Interconnect 或 Cloud VPN
只有在启用动态路由的情况下,混合 NAT 才支持现有的传统 VPN 隧道。
您需要创建具有匹配表达式的自定义 NAT 规则
nexthop.is_hybrid
。NAT 规则指定了一个 IP 地址范围, 一个用途为PRIVATE_NAT
的子网 网络可用于与其他网络通信。要在其中配置混合 NAT 的 Cloud Router 路由器 必须与 VPC 网络位于同一区域。
要在其中配置混合 NAT 的 Cloud Router 路由器 不能包含任何其他 NAT 配置。
基本 Hybrid NAT 配置和工作流
下图展示了基本的混合 NAT 配置:
在此示例中,混合 NAT 设置如下:
pvt-nat-gw
网关在vpc-a
中配置为应用于所有 IPsubnet-a
的地址范围(位于us-east1
区域)。- Cloud Router 和本地或其他云服务提供商路由器会交换以下子网路由:
- Cloud Router 路由器会将
10.1.2.0/29
通告给 外部路由器 - 外部路由器将
192.168.2.0/24
通告到 Cloud Router 路由器。
- Cloud Router 路由器会将
- 如果使用
pvt-nat-gw
的 NAT IP 地址范围,则vpc-a
的subnet-a
中的虚拟机 (VM) 实例可以将流量发送到本地网络或其他云提供商网络的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/24
与 vpc-a
中的子网重叠。
对于vpc-a
的subnet-a
与subnet-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:34000
到 10.1.2.2:34063
。
当虚拟机使用 TCP 协议将数据包发送到更新服务器时
在目标端口 80
上设置了 192.168.2.2
时,会发生以下情况:
虚拟机发送的请求包具有以下属性:
- 来源 IP 地址:
192.168.1.2
,虚拟机的内部 IP 地址 - 来源端口:
24000
,虚拟机操作系统选择的临时来源端口 - 目标地址:
192.168.2.2
,更新服务器的 IP 地址 - 目标端口:
80
,指向更新服务器的 HTTP 流量的目标端口 - 协议:TCP
- 来源 IP 地址:
pvt-nat-gw
网关会执行来源网络地址转换(SNAT 或 来源 NAT)的出站流量,重写请求 数据包的 NAT 来源 IP 地址和来源端口:- NAT 来源 IP 地址:
10.1.2.2
,来自虚拟机预留的 NAT 来源 IP 地址和来源端口元组 - 来源端口:
34022
,来自虚拟机预留的来源端口元组之一的未使用的来源端口 - 目标地址:
192.168.2.2
,未更改 - 目标端口:
80
,未更改 - 协议:TCP,保持不变
- NAT 来源 IP 地址:
更新服务器发送一个响应数据包,该数据包到达 具有以下特性的
pvt-nat-gw
网关:- 来源 IP 地址:
192.168.2.2
,更新服务器的内部 IP 地址 - 来源端口:
80
,来自更新服务器的 HTTP 响应 - 目标地址:
10.1.2.2
,与原始 NAT 来源 IP 地址一致 请求数据包的 - 目标端口:
34022
,与请求数据包的源端口一致 - 协议:TCP,未更改
- 来源 IP 地址:
pvt-nat-gw
网关会执行目标网络地址转换 (DNAT),并重写响应数据包的目标 地址和目标端口,以便将数据包传送到 使用以下属性请求更新:- 来源 IP 地址:
192.168.2.2
,未更改 - 来源端口:
80
,未更改 - 目标地址:
192.168.1.2
,虚拟机的内部 IP 地址 - 目标端口:
24000
,与请求数据包的原始临时来源端口一致 - 协议:TCP,保持不变
- 来源 IP 地址:
后续步骤
- 设置混合 NAT。
- 了解 Cloud NAT 产品交互。
- 了解 Cloud NAT 地址和端口。
- 了解 Cloud NAT 规则。
- 排查常见问题。