Cloud NAT 产品交互

本页面介绍了 Cloud NAT 与其他 Google Cloud 产品之间的重要交互。

路由交互

答 公共 NAT 网关只能使用下一个跃点是 默认互联网网关每个 Virtual Private Cloud (VPC) 网络均以默认路由开始,该路由的目标为 0.0.0.0/0,它的下一个跃点是默认互联网网关。如需了解重要的背景信息,请参阅路由概览

以下示例说明了可能导致Public NAT网关无法使用的情况:

  • 如果您创建的静态路由的下一个跃点设置为任何其他类型的 静态路由的下一个跃点,然后发送数据包 该消息会发送目标 IP 地址与路由目标匹配的消息 而不是默认的互联网网关例如,如果 您使用运行 NAT 网关、防火墙或代理的虚拟机 (VM) 实例 可以创建静态路由,将流量作为 下一个跃点下一个跃点虚拟机需要外部 IP 地址。因此, 来自依赖于下一个跃点虚拟机或下一个跃点虚拟机的虚拟机的流量 因此无法使用 公共 NAT 网关。

  • 如果您创建的自定义静态路由的下一个跃点是 Cloud VPN 隧道,则Public NAT不会使用该路由。例如,使用目标 0.0.0.0/0 和下一个跃点 Cloud VPN 隧道的静态路由会将流量引导至该隧道,而非默认互联网网关。因此, 公共 NAT 网关不能使用 。同样,Public NAT网关不能使用具有更具体的目标(包括 0.0.0.0/1128.0.0.0/1)的静态路由。

  • 如果本地路由器将动态路由通告 管理 Cloud VPN 隧道的 Cloud Router 路由器或 VLAN 连接 公共 NAT 网关不能使用该路由例如,如果您的本地路由器 通告目的地为 0.0.0.0/0 的动态路由, 0.0.0.0/0 将被定向到 Cloud VPN 隧道 或 VLAN 连接。即使对于 更具体的目的地,包括 0.0.0.0/1128.0.0.0/1

专用 NAT 使用以下路由:

  • 对于 Network Connectivity Center spoke,专用 NAT 使用子网 路由和动态路由
    • 对于连接到仅包含 VPC spoke 的 Network Connectivity Center hub 的两个 VPC spoke 之间的流量,Private NAT 会使用所连接 VPC spoke 交换的子网路由。相关信息 有关 VPC spoke 的信息,请参阅 VPC spoke 概览
    • 如果 Network Connectivity Center 中心同时包含 VPC spoke 和混合 spoke(例如 Cloud Interconnect 的 VLAN 连接、Cloud VPN 隧道或路由器设备虚拟机),则专用 NAT 会使用混合 spoke 通过 BGP (Preview) 学习到的动态路由,以及所连接 VPC spoke 交换的子网路由。如需了解混合 spoke,请参阅混合 spoke
  • 对于混合 NAT Private NAT 使用由 Cloud NAT 学习到的动态路由 通过 Cloud Interconnect 或 Cloud VPN 部署 Cloud Router 路由器。

专用 Google 访问通道交互

答 公共 NAT 网关绝不会对发送到选定节点的流量执行 NAT Google API 的外部 IP 地址, 服务。相反, Google Cloud 会自动启用专用 Google 访问通道 指定子网 IP 地址范围 公共 NAT 应用于该子网范围(主要或 次要。只要网关为子网范围提供 NAT,专用 Google 访问通道就会在该范围内有效,无法手动停用。

Public NAT网关不会更改专用 Google 访问通道的工作方式。如需了解详情,请参阅专用 Google 访问通道

专用 NAT 网关不适用于专用 Google 访问通道。

共享 VPC 交互

共享 VPC 允许单个组织中的多个服务项目在宿主项目中共用共享 VPC 网络。要为使用共享 VPC 网络的服务项目中的虚拟机提供 NAT,您必须在宿主项目中创建 Cloud NAT 网关。

VPC 网络对等互连交互

Cloud NAT 网关与单个地区和单个 VPC 网络中的子网 IP 地址范围相关联。答 在一个 VPC 网络中创建的 Cloud NAT 网关不能 为通过 IP 地址连接的其他 VPC 网络中的虚拟机提供 NAT, 使用 VPC 网络对等互连, 即使对等互连网络中的虚拟机与网关位于同一区域也是如此。

GKE 交互

答 公共 NAT 可以对集群内的节点和 Pod 执行 专用集群 这是一种 VPC 原生集群您必须对Public NAT网关进行配置,至少应用于您的集群所用子网的以下子网 IP 地址范围:

  • 子网主要 IP 地址范围(由节点使用)
  • 集群中用于 Pod 的子网次要 IP 地址范围
  • 集群中用于 Service 的子网次要 IP 地址范围

如需为整个专用集群提供 NAT,最简单的方法是 a 公共 NAT 该网关可应用于所有子网 IP 地址范围 集群子网的 IP 地址

如需了解有关 VPC 原生集群如何使用子网 IP 地址范围的背景信息,请参阅 VPC 原生集群的 IP 范围

当Public 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 与Public NAT无关,当 Pod 向互联网发送数据包时,Google Kubernetes Engine 会使用每个节点上运行的软件执行源网络地址转换(源 NAT 或 SNAT),除非您更改了集群的 IP 地址伪装配置。如果您需要 精确控制来自 Pod 的出站流量,您可以使用网络 政策

在某些情况下,Public NAT也可用于非专用 VPC 原生集群。由于非专用集群中的节点具有外部 IP 地址,因此从该节点的主要内部 IP 地址发送的数据包绝不会被 Cloud NAT 处理。但是,如果同时满足以下两个条件,则非专用集群中的 Pod 发送的数据包可以由Public NAT网关处理:

  • 对于 VPC 原生集群,Public NAT网关被配置为应用到集群的 Pod 的次要 IP 地址范围。

  • 集群的 IP 伪装配置未配置为针对从 Pod 发送到互联网的数据包在集群内执行 SNAT。

以下示例展示了 公共 NAT 使用 GKE:

Public NAT 与 GKE。
公共 NAT (点击可放大)。

在此例中,您希望对容器进行 NAT 转换。如需为所有容器和 GKE 节点启用 NAT,您必须选择 Subnet 1 的所有 IP 范围作为 NAT 候选项。

  • 子网主要 IP 地址范围:10.240.0.0/24
  • 用于 Pod 的子网次要 IP 地址范围:10.0.0.0/16

不能仅对 Pod1Pod2 启用 NAT。

Private NAT 网关可以执行 专用集群和非专用集群中的节点和 Pod 的 NAT。Private NAT 网关会自动应用于集群使用的专用子网的所有子网 IP 地址范围。

直接 VPC 出站流量互动

公共 NAT 网关可为 Cloud Run 服务执行 NAT 配置有 直接 VPC 出站流量。 要使 Cloud Run 能够使用 公共 NAT 配置您的 公共 NAT 具有以下各项的 设置:

  • 如需配置与 Cloud Run 实例关联的哪些子网和子网 IP 地址范围可以使用Public NAT网关,请指定 --nat-all-subnet-ip-ranges--nat-custom-subnet-ip-ranges 标志:
    • 如需让相应区域中所有子网的所有 IP 地址范围都使用Public NAT网关,请指定 --nat-all-subnet-ip-ranges 标志。
    • 如需仅允许特定子网和子网 IP 地址范围使用Public NAT网关,请使用 --nat-custom-subnet-ip-ranges 标志指定它们。
  • --endpoint-types 标志的值设置为 ENDPOINT_TYPE_VM。此值 确保只有虚拟机和直接 VPC 出站虚拟机端点可以使用 公共 NAT 网关。
  • 如果采用静态端口分配,请将 --min-ports-per-vm 标志的值设置为单个 Cloud Run 实例所需端口数量的四倍。
  • 在手动分配 NAT IP 地址的情况下, IP 地址 公共 NAT 用来处理 Google Cloud 实例数与 Cloud Run 实例 VPC 网络。

从 Cloud Run 发送出站流量(除了网关配置之外) 服务或作业,您必须将 --vpc-egress 标志设置为 all-traffic 创建服务或作业

如果您配置了一项 Cloud Run 服务或作业, --vpc-egress 标志设置为 private-ranges-only,则服务或作业将发送 将流量仅传输到内部 IP 地址您无需 公共 NAT 用于将流量路由到内部目的地的网关。

如需阻止将 --vpc-egress 标志设置为 private-ranges-only 的 Cloud Run 服务或作业使用公共 NAT网关,请执行以下操作:

  • 使用 --nat-custom-subnet-ip-ranges 标志配置Public NAT网关。
  • --nat-custom-subnet-ip-ranges 标志的值设置为已部署 Cloud Run 服务或作业的子网名称,并将 --vpc-egress 标志设置为 all-traffic

以下限制适用于使用 Public NAT 网关的 Cloud Run 服务和作业:

  • 直接 VPC 出站端点的 Cloud NAT 指标不会导出到 Cloud Monitoring。
  • 直接 VPC 出站流量的 Cloud NAT 日志不会显示 Cloud Run 服务、修订版或作业的名称。

您无法将 Private NAT 网关与直接 VPC 出站端点搭配使用。

Connectivity Tests 交互

您可以使用 Connectivity Tests 检查网络之间的连接 使用 Cloud NAT 配置的端点。 您可以在使用 Public NAT 网关Private NAT 网关(或两者兼有)的网络上运行连接性测试。

连接测试详情页面的配置分析跟踪记录窗格中查看 NAT 配置详情。

Cloud Load Balancing 交互

Google Cloud 区域级内部应用负载平衡器区域级外部应用负载平衡器 与多个区域级互联网网络端点组 (NEG) 后端进行通信。 通过为 Cloud NAT 配置 Cloud NAT 网关, 区域级互联网 NEG,您可以分配自己的一组外部 IP 地址范围 Google Cloud 流量的来源位置。健康检查和 数据平面流量来自您分配的 NAT IP 地址。

其他 Google Cloud 外部负载平衡器和健康检查系统可以 通过特殊路由路径与虚拟机建立连接。后端虚拟机 不需要外部 IP 地址,Cloud NAT 网关也不管理 负载平衡器和健康检查的通信。如需了解详情,请参阅 Cloud Load Balancing 概览健康检查概览

后续步骤