Cloud NAT 产品交互
本页面介绍了 Cloud NAT 与其他 Trusted Cloud by S3NS 产品之间的重要互动。
路由交互
Cloud NAT
网关只能使用后续跃点为默认互联网网关的路由。每个虚拟私有云 (VPC) 网络均以默认路由开始,该路由的目标为 0.0.0.0/0
,它的下一个跃点是默认互联网网关。如需了解重要的背景信息,请参阅路由概览。
以下示例说明了可能导致 Cloud NAT 网关无法使用的情况:
如果您创建一个静态路由,并将其后续跃点设置为任何其他类型的静态路由下一个跃点,则目标 IP 地址与该路由目标相匹配的数据包会发送到上述下一个跃点,而不是默认互联网网关。例如,如果您使用运行 NAT 网关、防火墙或代理软件的虚拟机 (VM) 实例,则可以创建静态路由,将流量作为下一个跃点定向到这些虚拟机。下一个跃点虚拟机需要外部 IP 地址。因此,来自依赖于下一个跃点虚拟机的虚拟机或下一个跃点虚拟机本身的流量无法使用 Cloud NAT 网关。
如果您创建的自定义静态路由的下一个跃点是 Cloud VPN 隧道,则 Cloud NAT 不会使用该路由。例如,使用目标
0.0.0.0/0
和下一个跃点 Cloud VPN 隧道的静态路由会将流量引导至该隧道,而非默认互联网网关。 因此, Cloud NAT 网关无法使用该路由。同样, Cloud NAT 网关不能使用具有更具体的目标(包括0.0.0.0/1
和128.0.0.0/1
)的静态路由。如果本地路由器向管理 Cloud VPN 隧道或 VLAN 连接的 Cloud Router 通告动态路由,则 Cloud NAT 网关不能使用该路由。例如,如果您的本地路由器通告目标为
0.0.0.0/0
的动态路由,则0.0.0.0/0
会被定向到 Cloud VPN 隧道或 VLAN 连接。即使对于更具体的目标(包括0.0.0.0/1
和128.0.0.0/1
)也是如此。
专用 Google 访问通道交互
Cloud NAT 网关从不对发送到所选 Google API 和服务的外部 IP 地址的流量执行 NAT。相反,当您将 Cloud NAT 网关配置为应用于主要或次要子网范围时,Trusted Cloud 会自动为子网 IP 地址范围启用专用 Google 访问通道。只要网关为子网范围提供 NAT,专用 Google 访问通道就会在该范围内有效,无法手动停用。
Cloud NAT 网关不会更改专用 Google 访问通道的工作方式。如需了解详情,请参阅专用 Google 访问通道。
共享 VPC 互动
共享 VPC 允许单个组织中的多个服务项目在宿主项目中共用共享 VPC 网络。要为使用共享 VPC 网络的服务项目中的虚拟机提供 NAT,您必须在宿主项目中创建 Cloud NAT 网关。
VPC 网络对等互连互动
Cloud NAT 网关与单个地区和单个 VPC 网络中的子网 IP 地址范围相关联。即使对等互连网络中的虚拟机与网关位于同一区域,在一个 VPC 网络中创建的 Cloud NAT 网关也无法向使用 VPC 网络对等互连连接的其他 VPC 网络中的虚拟机提供 NAT。
GKE 互动
Cloud NAT 网关可以为专用集群(一种 VPC 原生集群)中的节点和 Pod 执行 NAT。您必须对 Cloud NAT 网关进行配置,至少应用于您的集群所用子网的以下子网 IP 地址范围:
- 子网主要 IP 地址范围(由节点使用)
- 集群中用于 Pod 的子网次要 IP 地址范围
- 集群中用于 Service 的子网次要 IP 地址范围
若要为整个专用集群提供 NAT,最简单的方法是配置 Cloud NAT 网关,使其应用到该集群所有子网 IP 地址范围中。
如需了解有关 VPC 原生集群如何使用子网 IP 地址范围的背景信息,请参阅 VPC 原生集群的 IP 范围。
当 Cloud NAT 网关经过配置要为专用集群提供 NAT 时,它会为每个节点虚拟机预留 NAT 来源 IP 地址和来源端口。 Pod 可以使用这些 NAT 来源 IP 地址和来源端口,因为 Pod IP 地址是作为分配给每个节点虚拟机的别名 IP 地址范围实现的。
Google Kubernetes Engine (GKE) VPC 原生集群始终会为每个节点分配一个包含多个 IP 地址(网络掩码小于 /32
)的别名 IP 地址范围。
如果配置了静态端口分配,则 Public NAT 端口预留过程会为每个节点至少预留 1024 个来源端口。如果每个虚拟机的端口数下限值大于 1024,则使用该值。
如果配置了动态端口分配,则最初为每个节点分配指定的端口数下限值。随后,分配的端口数会根据需要在每个虚拟机的指定端口数下限和上限值之间变化。
如需了解 Pod IP 地址范围和 VPC 原生集群,请参阅 Pod 的子网次要 IP 地址范围。
Google Kubernetes Engine 与 Cloud NAT 无关,当 Pod 向互联网发送数据包时,Google Kubernetes Engine 会使用每个节点上运行的软件执行来源网络地址转换(来源 NAT 或 SNAT),除非您更改了集群的 IP 伪装配置。如果您需要对 Pod 的出站流量进行精细控制,可以使用网络政策。
在某些情况下, Cloud NAT 也可用于非专用 VPC 原生集群。 由于非专用集群中的节点具有外部 IP 地址,因此从该节点的主要内部 IP 地址发送的数据包绝不会被 Cloud NAT 处理。但是,如果同时满足以下两个条件,则非专用集群中的 Pod 发送的数据包可以由 Cloud NAT 网关处理:
对于 VPC 原生集群, Cloud NAT 网关被配置为应用到集群的 Pod 的次要 IP 地址范围。
集群的 IP 伪装配置未配置为针对从 Pod 发送到互联网的数据包在集群内执行 SNAT。
下面的示例显示了 Cloud NAT 与 GKE 的互动:
在此例中,您希望对容器进行 NAT 转换。如需为所有容器和 GKE 节点启用 NAT,您必须选择 Subnet 1
的所有 IP 范围作为 NAT 候选项。
- 子网主要 IP 地址范围:
10.240.0.0/24
- 用于 Pod 的子网次要 IP 地址范围:
10.0.0.0/16
不能仅对 Pod1
或 Pod2
启用 NAT。
直接 VPC 出站流量互动
Cloud NAT 网关可以为使用直接 VPC 出站流量配置的 Cloud Run 资源提供 NAT。如需让 Cloud Run 使用 Cloud NAT 网关进行 Public NAT 或 Private NAT,请配置以下内容:
部署 Cloud Run 资源时,请设置
--vpc-egress
标志。如果您想使用 Public NAT,则必须将该值设置为all-traffic
。使用以下设置配置 Cloud NAT 网关:
- 通过设置
--nat-custom-subnet-ip-ranges
标志,指定哪些来源子网范围可以使用网关。将该值设置为您部署 Cloud Run 资源的子网名称。 - 将
--endpoint-types
标志的值设置为ENDPOINT_TYPE_VM
。 对于 Public NAT,请确保将
--min-ports-per-vm
标志的值设置为单个 Cloud Run 实例所需的端口数量的两倍。对于 Private NAT,此标志必须设置为每个 Cloud Run 实例所需端口数量的四倍。如果您想配置手动 NAT IP 地址分配(仅限 Public NAT),请为网关分配足够数量的 IP 地址,以涵盖由该网关提供服务的虚拟机实例和 Cloud Run 实例的总和。
- 通过设置
直接 VPC 出站流量的 Cloud NAT 日志不显示 Cloud Run 资源的名称。
Connectivity Tests 交互
您可以使用 Connectivity Tests 来检查使用 Cloud NAT 配置的网络端点之间的连接。
您可以在使用 Cloud NAT 网关 的网络上运行 Connectivity Tests。
在 Connectivity Tests 详细信息页面的配置分析跟踪记录窗格中查看 NAT 配置详细信息。
Cloud Load Balancing 交互
Trusted Cloud 区域级内部应用负载均衡器和区域级外部应用负载均衡器与多个区域级互联网网络端点群组 (NEG) 后端进行通信。通过为区域级互联网 NEG 配置 Cloud NAT 网关,您可以分配自己的一组外部 IP 地址范围, Trusted Cloud 流量应从该范围发出。健康检查和数据平面流量来自您分配的 NAT IP 地址。
其他 Trusted Cloud 外部负载均衡器和健康检查系统使用特殊路由路径与虚拟机进行通信。后端虚拟机不需要外部 IP 地址,Cloud NAT 网关也不负责管理负载均衡器和健康检查的通信。如需了解详情,请参阅 Cloud Load Balancing 概览和健康检查概览。
Private Service Connect 传播连接互动
如果在同一 VPC spoke 中同时使用用于 Network Connectivity Center 的 Private NAT 和 Private Service Connect 传播的连接,则以下规则适用:
如果子网使用 Private NAT 进行配置,则从子网到 Private Service Connect 传播的连接的流量会丢弃。
为避免丢弃来自非重叠子网的流量,请在配置 Private NAT 时考虑以下几点:
- 使用
--nat-custom-subnet-ip-ranges
标志指定重叠的子网。 - 请勿指定需要访问传播的连接的非重叠子网。
- 请勿使用
--nat-all-subnet-ip-ranges
标志。
- 使用
后续步骤
- 了解 Cloud NAT 地址和端口。
- 设置 Public NAT 网关。
- 配置 Cloud NAT 规则。