VPC 网络概览

Virtual Private Cloud (VPC) 网络是物理网络的虚拟版本,在 Google 的生产网络内部使用 Andromeda 实现。VPC 网络提供以下功能:

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

规范

VPC 网络具有以下属性:

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

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

  • 进出实例的流量可以通过网络防火墙规则加以控制。规则在虚拟机本身上实现,因此只能在流量离开或到达虚拟机时控制和记录流量。

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

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

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

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

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

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

  • VPC 网络支持 GRE 流量(Beta 版),但 Cloud VPN 上的流量、Cloud Interconnect 上的流量、Cloud NAT 上的流量以及用于负载平衡协议转发的转发规则除外。GRE 可让您使用安全访问服务边缘 (SASE) 和 SD-WAN 等服务。

  • 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 范围。

VPC 网络中所有子网的每个主要或次要 IP 范围都必须是唯一的有效 CIDR 块。请参阅每个网络的限制,了解您可以定义的次要 IP 范围数。

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

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

有效范围

子网的主要和次要 IP 地址范围是区域内部 IP 地址。下表介绍了有效范围。

范围 说明
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
专用 IP 地址 RFC 1918
100.64.0.0/10 共享地址空间 RFC 6598
192.0.0.0/24 IETF 协议分配 RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
文档 RFC 5737
192.88.99.0/24 IPv6 到 IPv4 中继(已弃用)RFC 7526
198.18.0.0/15 基准测试 RFC 2544
240.0.0.0/4

RFC 5735RFC 1112 中所述,预留以供将来使用(E 类)

某些操作系统不支持使用此范围,因此请确认您的操作系统支持此范围,然后再创建使用此范围的子网。

以非公开方式重用的公共 IP 地址 包括不属于此表中所列 RFC 范围且不属于受限集的 IP 地址。 如果您将这些地址用作子网范围,Google Cloud 不会以公开方式将流量路由到这些地址。

对于 VPC 网络对等互连,公共 IP 地址的子网路由不会自动交换。子网路由会自动导出,但如需使用这些路由,您必须将对等网络明确配置为导入它们。

子网范围具有以下限制:

  • 子网范围不能与受限范围匹配,也不 能比受限范围更小或更大。例如,169.0.0.0/8 不是有效的子网范围,因为它与本地链路范围 169.254.0.0/16 (RFC 3927) 重叠,后者属于受限范围。

  • 子网范围不能跨越 RFC 范围(如上表所述)和以非公开方式使用的公共 IP 地址范围。例如,172.16.0.0/10 不是有效的子网范围,因为它与 RFC 1918 和公共 IP 地址重叠。

  • 子网范围不能跨多个 RFC 范围。例如,192.0.0.0/8 不是有效的子网范围,因为它同时包含 192.168.0.0/16(来自 RFC 1918)和 192.0.0.0/24(来自 RFC 6890)。但是,您可以创建两个具有不同主要范围的子网,一个子网的主要范围为 192.0.0.0/16,另一个子网的主要范围为 192.0.0.0/24。或者,如果您将其中一个范围用作次要范围,则可以在同一子网上同时使用这两个范围。

受限范围

受限范围包括 Google 公共 IP 地址和通常预留的 RFC 范围,如下表所述。这些范围不能用于子网范围。

范围 说明
Google API 和服务的公共 IP 地址,包括 Google Cloud 网络块。 您可以在 https://gstatic.com/ipranges/goog.txt 找到这些 IP 地址。
199.36.153.4/30199.36.153.8/30 特定于专用 Google 访问通道的虚拟 IP 地址
0.0.0.0/8 当前(本地)网络 RFC 1122
127.0.0.0/8 本地主机 RFC 1122
169.254.0.0/16 本地链路 RFC 3927
224.0.0.0/4 多播(D 类)RFC 5771
255.255.255.255/32 受限广播目标地址 RFC 8190RFC 919

子网中的预留 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
倒数第二个地址 子网主要 IP 范围中的倒数第二个地址,Google Cloud 预留以供将来可能的使用 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
asia-southeast2 10.184.0.0/20 10.184.0.1 10.184.0.2 至 10.184.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
us-west4 10.182.0.0/20 10.182.0.1 10.182.0.2 至 10.182.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 实例的访问权限,请参阅应用安全

跟踪外部 IP 地址的 Traceroute

由于内部原因,Google Cloud 会增加遍历 Google 网络中下一个跃点的数据包的 TTL 计数器。traceroutemtr 等工具可能会提供不完整的结果,因为 TTL 在某些跃点上不会过期。在以下情况下,Google 网络内部和外部的跃点可能会被隐藏:

  • 当您从 Compute Engine 实例向外部 IP 地址(包括互联网上其他 Google Cloud 资源或目标的外部 IP 地址)发送数据包时。

  • 当您将数据包发送到与 Compute Engine 实例或其他 Google Cloud 资源关联的外部 IP 地址时。

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

此行为没有解决方法。如果您配置了连接到与虚拟机关联的外部 IP 地址的第三方监控,则必须考虑这一点。

出站吞吐量上限

您可以在网络带宽部分查看网络吞吐量信息。

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 地址均在可用范围内。由于子网属于地区资源,因此实例可以将其网络接口与包含其区域的那个地区中的任何子网相关联。

网络性能

延迟时间

您可以在我们的直播信息中心查看所测量的 Google Cloud 网络的地区间延迟时间。 信息中心会显示 Google Cloud 的地区间延迟时间中位数和吞吐量性能指标,以及使用 PerfKit Benchmarker 重现这些结果的方法。

Google Cloud 通常会在同一区域中 c2-standard-4 虚拟机实例之间测量到小于 55 微秒的往返延迟时间(第 50 个百分位),以及小于 80 微秒的尾延迟时间(第 99 个百分位)。

Google Cloud 通常会在同一低延迟网络中的 c2-standard-4 虚拟机实例之间测量到小于 45 微秒的往返延迟时间(第 50 个百分位),以及小于 60 微秒的尾延迟时间(第 99 个百分位)(“紧凑”放置政策)。紧凑放置政策通过确保各虚拟机在物理上位于同一低延迟网络中来缩短网络延迟时间。

方法:通过黑盒探测器监控区域内的延迟时间,该探测器在提供 c2 实例的每个区域中的一对 c2 型虚拟机之间持续运行 netperf TCP_RR 基准。它会收集 P50 和 P99 结果,以便在采用和不采用紧凑放置政策的情况下进行设置。TCP_RR 基准通过测量事务速率来测量请求/响应性能。如果您的应用需要最佳延迟时间,建议使用 c2 实例。

丟包率

Google Cloud 通过定期测量所有地区之间的往返包损失来跟踪跨地区丢包率。我们的目标是这些测量指标的全球平均值小于 0.01%。

方法:黑盒虚拟机到虚拟机探测器使用 ping 监控每个区域对的丢包率,并将结果聚合到一个全球损失指标中。此指标的跟踪期为一天。

后续步骤