别名 IP 范围

通过 Google Cloud 别名 IP 地址范围,您可以将内部 IP 地址范围作为别名分配给虚拟机的网络接口。如果您有多项服务在一台虚拟机上运行,并且希望为每项服务分配一个不同的 IP 地址,则此功能十分有用。别名 IP 范围也可与 GKE Pod 配合使用。

如果您仅有一项服务在一台虚拟机上运行,则可以使用接口的主要 IP 地址指代该服务。如果您有多项服务在一台虚拟机上运行,您可能希望为每项服务分配一个不同的内部 IP 地址。可以使用别名 IP 范围实现这一目标。

子网主要和次要 CIDR 范围

所有子网都具有主要 CIDR 范围,也就是用于定义子网的内部 IP 地址范围。每个虚拟机实例均从该范围内获取其主要内部 IP 地址。您还可以从该主要范围分配别名 IP 地址范围,或者向子网添加次要范围,并从次要范围分配别名 IP 地址范围。使用别名 IP 地址范围时,次要子网范围并非必需。这些次要子网范围仅用于提供一种组织工具。

虚拟机网络接口中定义的别名 IP 范围

使用 IP 别名,您可以配置多个内部 IP 地址来表示托管在虚拟机中的容器或应用,而无需定义单独的网络接口。您可以从子网的主要或次要范围分配虚拟机别名 IP 地址范围。

配置别名 IP 地址范围部分介绍了用于设置具有次要范围的子网并将别名 IP 地址分配给虚拟机的命令。

下图提供了虚拟机主要接口上的主要和次要 CIDR 范围和虚拟机别名 IP 地址范围的基本说明:

主要和次要 CIDR 范围和虚拟机别名 IP 地址范围(点击可放大)
主要和次要 CIDR 范围和虚拟机别名 IP 地址范围(点击可放大)
  • 主要 CIDR 范围 10.1.0.0/16 配置为子网的一部分。
  • 次要 CIDR 范围 10.2.0.0/20 配置为子网的一部分。
  • 虚拟机主要 IP 地址 10.1.0.2 分配自主要 CIDR 范围 10.1.0.0/16,而别名 IP 地址范围 10.2.1.0/24 则从次要 CIDR 范围 10.2.0.0/20 分配给虚拟机。
  • 别名 IP 地址范围中的地址用作虚拟机中托管的容器的 IP 地址。

别名 IP 地址范围的主要优势

配置了别名 IP 地址范围时,Google Cloud 将自动安装 Virtual Private Cloud (VPC) 网络路由,以便为主要网络接口的子网获得主要和别名 IP 地址范围。容器编排器不需要为这些路由指定 VPC 网络连接。这可以简化路由流量并管理您的容器。您不需要按照别名 IP 地址范围关键属性中所述执行客户机内配置。

在 Google Cloud 分配容器 IP 地址时,Google Cloud 中的验证流程会确保容器 Pod IP 地址不与虚拟机 IP 地址冲突。

配置别名 IP 地址时,系统会针对流量执行反欺骗检查,确保离开虚拟机的流量使用虚拟机 IP 地址和 Pod IP 地址作为来源地址。反欺骗检查可验证虚拟机未发送具有任意来源 IP 地址的流量。与 IP 别名相比,为容器网络使用静态路由属于一种不太安全的方法,因为它需要在容器宿主虚拟机上禁用防欺骗检查(启用 IP 转发时,防欺骗检查会被禁用)。

别名 IP 地址范围在 Google Cloud 虚拟网络内可路由,无需额外的路由。您不必为每个 IP 地址别名添加路由,也不必考虑路由配额。

别名 IP 地址可以通过 Cloud Router 发布到通过 VPN 或互连连接的本地部署网络。

从次要 CIDR 范围分配别名 IP 范围具有一定的优势。由于分配时所使用的范围与主要 IP 地址所使用的范围彼此分离,因此您可以将基础架构(虚拟机)与服务(容器)分离开来。在为基础架构和服务配置不同的地址空间时,可以独立于虚拟机主要 IP 地址的防火墙控制,为虚拟机别名 IP 地址另行设置防火墙控制。例如,您可以允许针对某些容器 pod 的流量,并拒绝针对虚拟机主要 IP 地址的类似流量。

Google Cloud 中的容器架构

考虑这样一种情景:您希望在 Google Cloud 的基础之上配置容器化服务。您需要创建用于托管服务的虚拟机,此外还要创建容器。

在这样的情景中,您希望在容器与通过 VPN 连接的本地位置之间路由流量。但是,您不希望用户能通过 VPN 访问主要虚拟机 IP 地址。要创建此配置,容器 IP 地址范围(而非虚拟机主要 IP 地址范围)需要可通过 VPN 进行路由。在创建虚拟机时,您还希望能自动分配用于容器的 IP 地址池。

要创建此配置,请执行以下操作:

  • 在创建子网时,进行如下配置
    • 配置一个主要 CIDR 范围,例如 10.128.0.0/16
    • 配置一个次要 CIDR 范围,例如 172.16.0.0/16
  • 使用实例模板创建虚拟机,并自动分配以下各项:
    • 10.128.0.0/16 范围内的主要 IP 地址
    • 次要 CIDR 172.16.0.0/16 空间内的别名范围 /24,以便您可以为虚拟机上的每个容器分配 /24 次要 CIDR 范围内的 IP 地址
  • 创建两条防火墙规则
    • 一条规则拒绝来自本地部署的流量通过 VPN 传递到子网主要 CIDR 范围。
    • 一条规则允许来自本地部署的流量通过 VPN 传递到子网次要 CIDR 范围。

示例:配置使用别名 IP 范围的容器

使用别名 IP 地址范围,可以从次要 CIDR 范围分配容器 IP 地址,并将其配置为托管容器的虚拟机中的别名 IP 地址。

配置使用别名 IP 地址的容器(点击可放大)
配置使用别名 IP 地址的容器(点击可放大)

要创建上图所示配置,请执行以下操作:

  1. 创建一个子网,其 CIDR 范围为 10.128.0.0/16,从此范围内分配虚拟机 IP 地址;其次要 CIDR 范围为仅供容器使用的 172.16.0.0/20,该范围将配置为托管容器的虚拟机中的别名 IP 范围:

    gcloud compute networks subnets create subnet-a \
        --network network-a \
        --range 10.128.0.0/16 \
        --secondary-range container-range=172.16.0.0/20
    
  2. 创建虚拟机,使用范围 10.128.0.0/16 内的主要 IP 地址和虚拟机中的容器要使用的次要 CIDR 范围 172.16.0.0/20 内的别名 IP 地址范围 172.16.0.0/24:

    gcloud compute instances create vm1 [...] \
        --network-interface subnet=subnet-a,aliases=container-range:172.16.0.0/24
    gcloud compute instances create vm2 [...] \
        --network-interface subnet=subnet-a,aliases=container-range:172.16.1.0/24
    
  3. 容器 IP 地址在 Google Cloud 中配置为别名 IP 地址。在此设置中,主要和别名 IP 地址均可通过 VPN 隧道访问。如果配置了 Cloud Router 路由器,则它会自动通告次要子网范围 172.16.0.0/20。如需详细了解如何将 VPN 与 Cloud Router 路由器搭配使用,请参阅使用动态路由创建 VPN 隧道

如需详细了解用于创建此配置的命令,请参阅配置别名 IP 地址和范围

示例:在单个虚拟机实例中配置多个别名 IP 地址范围

别名 IP 地址范围允许您管理在虚拟机内运行的应用(包括利用容器)的 IP 地址分配情况。

在您的部署中,某些容器可以在不同虚拟机之间迁移,某些容器则不能进行这样的迁移。可迁移的容器可以使用 /32 范围进行配置,以便轻松地单独迁移这些容器。不可迁移的容器可以使用更大的范围进行配置,因为这些容器将保持在一起。

在这些类型的部署中,每个虚拟机实例可能需要多个别名 IP 地址范围,例如,对于不可迁移容器为 /27,对于可迁移容器为多个 /32。

配置使用多个别名 IP 地址范围的虚拟机(点击可放大)
配置使用多个别名 IP 地址范围的虚拟机(点击可放大)

要配置此示例,请使用以下 gcloud 命令:

gcloud compute networks create vpc1 --subnet-mode custom
gcloud compute networks subnets create subnet1 --region us-central1 --network vpc1 --range 10.128.0.0/16 --secondary-range secondaryrange1=172.16.0.0/20
gcloud compute instances create vm1 --zone us-central1-a --network-interface "subnet=subnet1,aliases=secondaryrange1:172.16.0.0/27;secondaryrange1:172.16.1.0/32"
gcloud compute instances create vm2 --zone us-central1-a --network-interface "subnet=subnet1,aliases=secondaryrange1:172.16.0.32/27;secondaryrange1:172.16.1.1/32"

自动模式 VPC 网络和子网中的别名 IP 地址

在自动模式的 VPC 网络中,每个区域都具有一个子网。每个此类自动创建的子网都具有主要 CIDR 范围,但没有次要范围。要为自动模式 VPC 网络使用别名 IP 地址,可以从自动创建的子网的主要 CIDR 范围中分配别名 IP 地址范围,也可以向自动创建的子网添加次要范围,并从新的次要范围分配别名 IP 地址范围。

此外,您还可以创建新的子网,使其具有自动模式 VPC 网络中的次要范围,只要其范围与 10.128.0.0/9 没有重叠即可。随后,您可以在这个新子网中创建虚拟机实例,并从该子网上的任意范围分配别名 IP 地址范围。

如需向子网添加次要范围,请参阅向现有子网添加次要 CIDR 范围

自定义模式网络和子网中的别名 IP 地址

自定义模式网络存在以下特点:

  • 所有子网均为手动创建
  • 强制要求具备一个主要 CIDR 范围。
  • 您可以选择创建次要 CIDR 范围。

别名 IP 范围的关键属性

以下属性适用于在虚拟机内配置的别名 IP 地址范围:

  • 从虚拟机操作系统的角度来看,主要 IP 地址和默认网关通常使用 DHCP 进行分配。别名 IP 地址可以在虚拟机操作系统(通常是 Linux 或 Windows)中手动配置,也可以使用脚本配置。
  • 接口的主要 IP 地址和别名 IP 地址范围必须分配自配置为属于相同子网的 CIDR 范围。请注意以下要求:
    • 主要 IP 地址必须分配自 CIDR 主要范围。
    • 别名 IP 地址范围可以分配自主要 CIDR 范围,也可以分配自相同子网的次要 CIDR 范围。
    • 对于虚拟机网络接口,别名 IP 地址必须来自为主要网络接口提供 IP 地址的同一子网资源。您无法从其他子网资源中选择主要 CIDR 范围或次要 CIDR 范围。
    • 主要 IP 地址可以是静态或临时内部 IP 地址。
    • 别名 IP 地址范围是可选的,不会自动添加。可以在创建或修改实例期间配置别名 IP 地址范围。
    • 可以将别名 IP 范围配置为明确的 CIDR 范围(例如 10.128.1.0/24)、单个 IP 地址(例如 10.128.7.29/32)或网络掩码 (/24)。可以完整地指定别名 IP 范围,也可以通过指定网络掩码自动分配别名 IP 范围。
    • 如需在别名 IP 范围中使用单个 IP 地址,请使用 /32 网络掩码。
    • 由于 VPC 网络中的所有子网共享一个默认网关,因此一个接口内的所有别名 IP 地址与主要 IP 地址共享相同的默认网关。
    • 您不能在别名 IP 范围中使用预留的 IP 地址。
一个接口中的别名 IP 地址与主要 IP 地址共享相同的默认网关(点击可放大)
一个接口中的别名 IP 地址与主要 IP 地址共享相同的默认网关(点击可放大)

使用别名 IP 地址的 DNS

Google Cloud 会自动为每个虚拟机实例主要接口的主要 IP 地址配置内部 DNS。这会将实例主机名与主要接口的主要 IP 地址相关联。但是,针对该主机名执行的 DNS 查找仅适用于包含主要接口的网络。

Google Cloud 不会自动将其他任何 IP 地址与主机名相关联。Google Cloud 不会将主要接口上的别名 IP 地址与主机名相关联,也不会将次要接口的任何 IP 地址与主机名相关联。

您可以手动配置 DNS 以关联其他 IP 地址。

防火墙

所有入站流量或出站流量(包括别名 IP 地址范围的流量)都由 VPC 防火墙规则进行评估,以确定是否与目标标记或目标服务账号相匹配。如需详细了解目标和别名 IP 地址,请参阅目标和 IP 地址

如果您使用来源标记或来源服务账号为入站防火墙规则指定来源,则不包括别名 IP 地址范围。

静态路由

当您创建使用内部 IPv4 地址指定的下一个跃点实例的静态路由时,Google Cloud 会验证下一个跃点虚拟机 IP 地址是否在该路由的 VPC 网络子网的 IPv4 范围内。但是,仅当下一个跃点地址是分配给路由的 VPC 网络(不是对等互连的 VPC 网络)中的虚拟机网络接口 (NIC) 的主要内部 IPv4 地址时,Google Cloud 才会对路由进行编程。

虽然您可以创建下一个跃点为别名 IP 地址范围内的内部 IPv4 地址的路由,但 Google Cloud 不会对该路由进行编程,而是会将下一个跃点视为关闭。发送到路由目的地的数据包可能会被丢弃,具体取决于同一目的地的其他路由是否存在以及这些路由是否具有正在运行的下一个跃点。

有关详情,请参阅:

VPC 网络对等互连

VPC 网络对等互连允许您对等互连两个 VPC 网络,从而使两个网络中的虚拟机之间可以通过内部专用 IP 地址进行通信。

在一个对等互连网络中,虚拟机实例可以访问子网的主要 IP 地址范围和次要 IP 地址范围。

对等互连网络间的子网重叠检查可以确保主要和次要范围不与任何对等互连的范围重叠。

网络对等互连场景中的 IP 地址别名(点击可放大)
网络对等互连场景中的 IP 地址别名(点击可放大)

后续步骤