VPC 网络概览

Virtual Private Cloud (VPC) 网络是物理网络(例如数据中心网络)的虚拟版本。该网络可为您的 Compute Engine 虚拟机 (VM) 实例Google Kubernetes Engine (GKE) 集群App Engine 柔性环境实例以及项目中的其他资源提供连接。

项目可以包含多个 VPC 网络。除非您创建组织政策来禁止 VPC 网络,否则新项目会首先创建一个默认网络,此网络在每个区域内都包含一个子网(自动模式 VPC 网络)。

规范

VPC 网络具有以下属性:

  • VPC 网络(包括其关联的路由和防火墙规则)属于全球性资源。它们与任何特定区域或地区均无关联。

  • 子网属于区域性资源。每个子网都会定义一个 IP 地址范围。

  • 进出实例的流量可以通过网络防火墙规则加以控制。

  • VPC 网络内的资源可以使用内部(专用)IPv4 地址相互通信,但须遵守适用的网络防火墙规则。如需了解详情,请参阅网络内通信

  • 具有内部 IP 地址的实例可以与 Google API 和服务通信。如需了解详情,请参阅服务的专用访问通道选项

  • 可以使用 Cloud Identity and Access Management (Cloud IAM) 角色来保护网络管理。

  • 组织可以使用共享 VPC 将 VPC 网络保留在通用宿主项目中。来自同一组织中其他项目的授权 Cloud IAM 成员可以创建使用共享 VPC 网络子网的资源。

  • 通过使用 VPC 网络对等互连,VPC 网络可以连接到不同项目或组织中的其他 VPC 网络。

  • 可以使用 Cloud VPNCloud Interconnect 在混合环境中安全连接 VPC 网络。

  • VPC 网络仅支持 IPv4 单播流量。VPC 网络支持网络内广播多播或 IPv6 流量;VPC 网络内的虚拟机只能将流量发送到 IPv4 目的地且只能接收来自 IPv4 来源的流量。但是,您可以为全球负载平衡器创建 IPv6 地址。

网络和子网术语

术语“subnet”(子网)和“subnetwork”(子网)是同义词。这两个词在 Google Cloud Console、gcloud 命令和 API 文档中可以互换使用。

子网不同于 (VPC) 网络。网络和子网是不同的 Google Cloud 中的对象类型。

网络和子网

每个 VPC 网络由一个或多个称为子网的有用 IP 范围分区组成。每个子网都与一个区域相关联。VPC 网络本身没有任何相关联的 IP 地址范围。您需要为子网定义 IP 范围。

网络必须至少先具有一个子网,然后才能使用。自动模式 VPC 网络会自动在每个区域中创建子网。自定义模式 VPC 网络最初没有子网,让您可以完全控制子网创建。您可以为每个区域创建多个子网。如需了解自动模式和自定义模式 VPC 网络之间差异,请参阅 VPC 网络的类型

在 Google Cloud 中创建资源时,您需要选择网络和子网。对于实例模板以外的其他资源,您还需要选择地区或区域。选择一个地区时,会隐式选择其父区域。由于子网是区域性对象,因此您为资源选择的区域决定了它可以使用的子网:

  • 创建实例的流程涉及到选择地区、网络和子网。可供选择的子网仅限于选定区域中的子网。Google Cloud 会将子网的可用地址范围中的一个 IP 地址分配给该实例。

  • 创建托管实例组的流程涉及到根据组类型和实例模板选择地区或区域。可供选择的实例模板仅限于其定义子网位于为托管实例组选定的那个区域的实例模板。

    • 实例模板属于全球性资源。创建实例模板的流程涉及到选择网络和子网。如果选择自动模式 VPC 网络,则可以选择使用“自动子网”,将子网选择推迟到会使用此模板的任何托管实例组选定区域中有可用子网之后。根据定义,自动模式 VPC 网络在每个区域中都有一个子网。
  • 创建 Kubernetes 容器集群的流程涉及到选择地区或区域(具体取决于集群类型)、网络和子网。可供选择的子网仅限于选定区域中的子网。

子网创建模式

Google Cloud 提供两种类型的 VPC 网络,具体取决于其子网创建模式

  • 创建自动模式 VPC 网络时,系统会在此网络内为每个区域自动创建一个子网。这些自动创建的子网使用 10.128.0.0/9 CIDR 块内的一组预定义 IP 范围。在新 Google Cloud 区域可用时,这些区域中的新子网将使用该块中的 IP 范围,自动添加到自动模式 VPC 网络中。除了自动创建的子网之外,您还可以使用 10.128.0.0/9 之外的 IP 范围,在所选区域中向自动模式 VPC 网络手动添加更多子网

  • 创建自定义模式 VPC 网络时,系统不会自动创建子网。这种类型的网络让您可以完全控制其子网和 IP 范围。您可以使用指定的 IP 范围决定在所选区域中创建哪些子网。

您可以将 VPC 网络从自动模式切换到自定义模式。这是单向转化过程;自定义模式 VPC 网络无法更改为自动模式 VPC 网络。为了帮助您决定哪种类型的网络能满足您的需求,请参阅自动模式 VPC 网络的注意事项

默认网络

除非您选择停用默认网络,否则每个新项目开始都有一个默认网络。默认网络是一个具有预先填充的防火墙规则的自动模式 VPC 网络。

您可以通过创建具有 compute.skipDefaultNetworkCreation 限制条件的组织政策来禁止创建默认网络。继承此组织政策的项目将没有默认网络。

自动模式 VPC 网络的注意事项

自动模式 VPC 网络易于设置和使用,并且非常适合具有以下特性的用例:

  • 在每个区域中自动创建子网非常有用。

  • 子网的预定义 IP 范围与用于不同用途的 IP 范围(例如,与本地资源的 Cloud VPN 连接)不重叠。

不过,自定义模式 VPC 网络更加灵活,也更适合生产。以下特性突出表明了建议或需要使用自定义模式 VPC 网络的用例:

  • 没有必要在每个区域自动创建一个子网。

  • 在新区域可用时,如果自动创建新子网,则可能会与手动创建的子网或静态路由使用的 IP 地址发生重叠,或者可能干扰整体网络规划。

  • 您需要完全控制在 VPC 网络中创建的子网,包括所用区域和 IP 地址范围。

  • 您计划使用 VPC 网络对等互连或 Cloud VPN 来连接 VPC 网络。由于每个自动模式 VPC 网络的子网都使用相同的预定义 IP 地址范围,因此您无法将自动模式 VPC 网络相互连接。

子网和 IP 范围

创建子网时,您必须定义主要 IP 地址范围。您可以选择定义次要 IP 地址范围

  • 主要 IP 地址范围:您可以为子网的主要 IP 地址范围选择任何专用 RFC 1918 CIDR 块。这些 IP 地址可用于虚拟机主要内部 IP 地址、虚拟机别名 IP 地址和内部负载平衡器的 IP 地址。

  • 次要 IP 地址范围:您可以定义一个或多个次要 IP 地址范围,这些范围是单独的 RFC 1918 CIDR 块。这些 IP 地址范围仅用于别名 IP 地址。每个网络的限制说明了您可以为每个子网定义的次要范围的数量上限。

您的子网不需要形成预定义的连续 CIDR 块,但您可以视需要执行此操作。例如,自动模式 VPC 网络会创建适合预定义自动模式 IP 范围的子网。

如需了解详情,请参阅使用子网

预留的 IP

每个子网在其主要 IP 范围内都有四个预留的 IP 地址:次要 IP 范围中没有预留的 IP 地址。

预留的 IP 地址 说明 示例
网络 子网主要 IP 范围中的第一个地址 10.1.2.0/24 中的 10.1.2.0
默认网关 子网主要 IP 范围中的第二个地址 10.1.2.0/24 中的 10.1.2.1
倒数第二个地址 Google Cloud 预留以供将来可能使用的子网主要 IP 范围中的倒数第二个地址 10.1.2.0/24 中的 10.1.2.254
广播 子网主要 IP 范围中的最后一个地址 10.1.2.0/24 中的 10.1.2.255

自动模式 IP 范围

下表列出了自动模式 VPC 网络中自动创建的子网的 IP 范围。这些子网的 IP 范围处于 10.128.0.0/9 CIDR 块内。在创建时,自动模式 VPC 网络会为每个区域构建一个子网,并自动接收新区域中的新子网。10.128.0.0/9 中未使用的部分会预留,以供 Google Cloud 将来使用。

区域 IP 范围 (CIDR) 默认网关 可用地址(含边界值)
asia-east1 10.140.0.0/20 10.140.0.1 10.140.0.2 至 10.140.15.253
asia-east2 10.170.0.0/20 10.170.0.1 10.170.0.2 至 10.170.15.253
asia-northeast1 10.146.0.0/20 10.146.0.1 10.146.0.2 至 10.146.15.253
asia-northeast2 10.174.0.0/20 10.174.0.1 10.174.0.2 至 10.174.15.253
asia-northeast3 10.178.0.0/20 10.178.0.1 10.178.0.2 至 10.178.15.253
asia-south1 10.160.0.0/20 10.160.0.1 10.160.0.2 至 10.160.15.253
asia-southeast1 10.148.0.0/20 10.148.0.1 10.148.0.2 至 10.148.15.253
australia-southeast1 10.152.0.0/20 10.152.0.1 10.152.0.2 至 10.152.15.253
europe-north1 10.166.0.0/20 10.166.0.1 10.166.0.2 至 10.166.15.253
europe-west1 10.132.0.0/20 10.132.0.1 10.132.0.2 至 10.132.15.253
europe-west2 10.154.0.0/20 10.154.0.1 10.154.0.2 至 10.154.15.253
europe-west3 10.156.0.0/20 10.156.0.1 10.156.0.2 至 10.156.15.253
europe-west4 10.164.0.0/20 10.164.0.1 10.164.0.2 至 10.164.15.253
europe-west6 10.172.0.0/20 10.172.0.1 10.172.0.2 至 10.172.15.253
northamerica-northeast1 10.162.0.0/20 10.162.0.1 10.162.0.2 至 10.162.15.253
southamerica-east1 10.158.0.0/20 10.158.0.1 10.158.0.2 至 10.158.15.253
us-central1 10.128.0.0/20 10.128.0.1 10.128.0.2 至 10.128.15.253
us-east1 10.142.0.0/20 10.142.0.1 10.142.0.2 至 10.142.15.253
us-east4 10.150.0.0/20 10.150.0.1 10.150.0.2 至 10.150.15.253
us-west1 10.138.0.0/20 10.138.0.1 10.138.0.2 至 10.138.15.253
us-west2 10.168.0.0/20 10.168.0.1 10.168.0.2 至 10.168.15.253
us-west3 10.180.0.0/20 10.180.0.1 10.180.0.2 至 10.180.15.253

路由和防火墙规则

路由

路由定义了数据包离开实例(出站流量)的路径。Google Cloud 中的路由分为两类:系统生成的路由和自定义路由。

每个新网络开始都有两类系统生成的路由:

  • 默认路由定义了流量离开 VPC 网络的路径。默认路由提供了对符合互联网访问要求的虚拟机的常规互联网访问权限。它还为专用 Google 访问通道提供了典型路径。

  • 子网路由是为与子网关联的每个 IP 范围创建的。每个子网的主要 IP 范围至少有一个子网路由。如果您向子网添加次要 IP 范围,则系统会为此子网创建其他子网路由。子网路由定义了流量到达使用相应子网的虚拟机的路径。您不能手动移除子网路由。

自定义路由可以是您手动创建的静态路由,也可以是由一个或多个 Cloud Router 路由器自动维护的动态路由。如需了解详情,请参阅自定义路由

如需了解 Google Cloud 中路由的完整详情,请参阅路由概览

动态路由模式

每个 VPC 网络都有一个关联的动态路由模式,用于控制网络中所有 Cloud Router 路由器的行为。在通过使用动态路由的 Cloud VPN 隧道专用互连合作伙伴互连将您的 VPC 网络连接到其他网络时,Cloud Router 路由器会共享通向您的 VPC 网络的路由并通过连接的网络获知自定义动态路由。

  • 默认设置是区域动态路由。在此模式下,通向 VPC 网络中给定 Cloud Router 路由器获知的本地资源的路由仅适用于该 Cloud Router 路由器所在区域中的子网。除非由自定义通告修改,否则每个 Cloud Router 路由器仅与其本地对应设备共享通向其所在区域内的子网的路由。

  • 全球动态路由会更改网络中所有 Cloud Router 路由器的行为,使得通向它们获知的本地资源的路由可供 VPC 网络中的所有子网使用,无论这些子网所在的区域如何。除非由自定义通告修改,否则每个 Cloud Router 路由器与其本地对应设备共享通向 VPC 网络中的所有子网的路由。

如需了解如何自定义 Cloud Router 路由器共享的路由集,请参阅自定义通告

您可以在创建或修改 VPC 网络时设置动态路由模式。您可以不受限制地将动态路由模式从区域更改为全球,反之亦然。如需查看说明,请参阅更改动态路由模式

防火墙规则

防火墙规则同时适用于网络中的传出(出站)和传入(入站)流量。防火墙规则用于控制流量(即使流量完全在网络内),包括虚拟机实例之间的通信。

每个 VPC 网络都有两条隐式防火墙规则。一条隐式规则允许大部分出站流量,另一条隐式规则拒绝所有入站流量。您无法删除隐式规则,但可以使用自己的规则替换它们。无论防火墙规则如何,Google Cloud 都会始终禁止部分流量;如需了解详情,请参阅禁止的流量

如需监控哪条防火墙规则允许或拒绝了特定连接,请参阅防火墙规则日志记录

通信和访问权限

网络内通信

系统生成的子网路由定义了使用内部(专用)IP 地址在网络内的实例之间发送流量的路径。为了让一个实例能够与另一个实例进行通信,还必须配置适当的防火墙规则,因为每个网络都有一条用于入站流量的隐式拒绝防火墙规则。

您必须明确创建更高优先级的入站防火墙规则以允许实例相互通信,默认网络除外。除了隐式防火墙规则之外,默认网络还包括一些其他防火墙规则,其中包括允许网络内实例间通信的 default-allow-internal 规则。默认网络还附带允许 RDP 和 SSH 等协议的入站规则。

默认网络附带的规则也会显示为选项,供您应用于使用 Cloud Console 创建的新自动模式 VPC 网络。

互联网访问要求

为使实例具有传出互联网访问权限,必须满足以下条件:

  • 网络必须具有有效的默认互联网网关路由或自定义路由,其目的地 IP 范围是最通用的范围 (0.0.0.0/0)。此路由定义了访问互联网的路径。如需了解详情,请参阅路由

  • 防火墙规则必须允许来自实例的出站流量。除非被更高优先级的规则所替换,否则出站流量的隐式允许规则允许来自所有实例的出站流量。

  • 必须满足以下条件之一:

    • 实例必须具有外部 IP 地址。外部 IP 可在创建时创建后分配给实例。

    • 实例必须能够使用 Cloud NAT 或基于实例的代理(即静态 0.0.0.0/0 路由的目标)。

适用于 App Engine 的通信和访问权限

VPC 防火墙规则适用于在 VPC 网络中运行的资源,例如 Compute Engine 虚拟机。对于 App Engine 实例,防火墙规则的工作原理如下所示:

  • App Engine 标准环境:只有 App Engine 防火墙规则适用于入站流量。由于 App Engine 标准环境实例不在您的 VPC 网络内运行,因此 VPC 防火墙规则不适用于入站流量。

  • App Engine 柔性环境:App Engine 和 VPC 防火墙规则均适用于入站流量。只有在这两种防火墙规则都允许的情况下,才允许入站流量。对于出站流量,VPC 防火墙规则适用。

如需详细了解如何控制对 App Engine 实例的访问权限,请参阅应用安全

跟踪互联网绑定的目的地的 Traceroute

由于内部原因,Google Cloud 会增加离开 Compute Engine 实例通向互联网的数据包的 TTL 计数器。traceroute 等工具可能会提供不完整的结果,因为 TTL 在某些跃点上不会过期。Google 网络内部和外部的跃点可能会被隐藏。

隐藏的跃点数因实例的 Network Service Tiers、区域和其他因素而异。如果只有几个跃点,则所有跃点都可能会被隐藏。traceroute 结果中缺少跃点并不意味着出站流量被丢弃。

此行为没有解决方法。

VPC 网络示例

以下示例演示了在两个区域中具有三个子网的自定义模式 VPC 网络:

VPC 网络示例(点击可放大)
VPC 网络示例(点击可放大)
  • Subnet1 定义为 us-west1 区域内的 10.240.0.0/24
    • us-west1-a 地区中的两个虚拟机实例位于此子网中。它们的 IP 地址均在 subnet1 中的可用地址范围内。
  • Subnet2 定义为 us-east1 区域内的 192.168.1.0/24
    • us-east1-a 地区中的两个虚拟机实例位于此子网中。它们的 IP 地址均在 subnet2 中的可用地址范围内。
  • Subnet3 同样位于 us-east1 区域内,定义为 10.2.0.0/16
    • us-east1-a 地区内的一个虚拟机实例和 us-east1-b 地区内的另一个实例都位于 subnet3 中,每个实例获得的 IP 地址均在可用范围内。由于子网属于区域资源,因此实例可以将其网络接口与包含其地区的那个区域中的任何子网相关联。

后续步骤