使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
快速入门:创建和修改 Virtual Private Cloud (VPC) 网络

创建和修改 Virtual Private Cloud (VPC) 网络

本页面介绍了如何创建、修改和删除 VPC 网络。本页面假定您已了解 VPC 网络概览中所述的 VPC 网络特征。网络和子网在 Google Cloud 中是不同的资源

如果您计划在子网上启用 IPv6 范围,请参阅 IPv6 子网范围

自行试用

如果您是 Google Cloud 新手,请创建一个帐号来评估 VPC 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 VPC

创建网络

您可以选择创建自动模式 VPC 网络或自定义模式 VPC 网络。 您创建的每个新网络在同一项目内必须具有唯一的名称。

创建自动模式 VPC 网络

当您创建自动模式 VPC 网络时,系统会在每个 Google Cloud 区域中创建一个子网。在新区域可用后,这些区域中的新子网将自动添加到自动模式 VPC 网络中。自动创建的子网的 IPv4 范围来自预定范围集。所有自动模式 VPC 网络都使用同一组 IPv4 地址范围。

自动模式 VPC 网络不支持具有 IPv6 范围的子网。如果要创建双栈子网,请创建自定义模式 VPC 网络

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击创建 VPC 网络
  3. 输入网络的名称
  4. 子网创建模式选择自动
  5. 防火墙规则部分中,选择零条或更多预定义防火墙规则。这些规则适用于实例连接的常见使用场景。

    无论您是否选择预定义的规则,都可以在创建网络之后创建自己的防火墙规则

    每个预定义的规则名称都以您创建的 VPC 网络的名称 NETWORK 开头。在 IPv4 防火墙规则标签页中,可修改名为 NETWORK-allow-custom 的预定义入站防火墙规则。默认情况下,该规则指定来源范围 10.128.0.0/9,其中包含自动模式网络中子网的当前和未来 IPv4 范围。在包含该规则的行的右侧,点击修改以选择子网,添加其他 IPv4 范围并指定协议和端口。

  6. 为 VPC 网络选择动态路由模式

    如需了解详情,请参阅动态路由模式。稍后,您可以更改动态路由模式

  7. 最大传输单元 (MTU):选择网络的 MTU 是 1460(默认值)、1500 还是 8896。在将 MTU 设置为高于 1460 的值之前,请查看最大传输单元概览

  8. 点击创建

gcloud

gcloud compute networks create NETWORK \
    --subnet-mode=auto \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE \
    --mtu=MTU

将以下内容替换为有效值:

  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,以控制网络中 Cloud Router 路由器的行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。 可以将 MTU 设置为以下任何值:13008896(默认:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "autoCreateSubnetworks": true,
  "name": "auto-network1",
  "mtu": MTU
}

替换以下内容:

  • PROJECT_ID 是在其中创建 VPC 网络的项目的 ID。
  • MTU 是该网络的最大传输单元。 可以将 MTU 设置为以下任何值:13008896(默认:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

如需指定 VPC 网络的动态路由模式,请使用 routingConfig 字段:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "routingConfig": {
    "routingMode": "DYNAMIC_ROUTING_MODE"
  },
  "autoCreateSubnetworks": true,
  "name": "NETWORK",
  "mtu": MTU
}

请将占位符替换为有效值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。 MTU 可以设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

如需了解详情,请参阅 networks.insert 方法。

Terraform

您可以使用 Terraform 模块来创建自动模式 VPC 网络。

MTU 是该网络的最大传输单元。 可以将 MTU 设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

resource "google_compute_network" "vpc_network" {
  project                 = var.project_id # Replace this with your project ID in quotes
  name                    = "my-auto-mode-network"
  auto_create_subnetworks = true
  mtu                     = 1460
}

如需了解如何应用或移除 Terraform 配置,请参阅使用 Terraform 配置

创建仅具有 IPv4 子网的自定义模式 VPC 网络

对于自定义模式的 VPC 网络,创建一个网络,随后在区域内创建所需子网。您不必立即为所有区域指定子网,甚至根本不必指定子网,但不能在没有定义子网的区域中创建实例。 最后,为您的网络定义防火墙规则。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击创建 VPC 网络
  3. 输入网络的名称
  4. 子网创建模式选择自定义
  5. 新子网部分,为子网指定以下配置参数:

    1. 为子网提供名称
    2. 选择区域
    3. 输入 IP 地址范围。这是子网的主要 IPv4 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    4. 要为子网定义次要范围,请点击创建次要 IP 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    5. 专用 Google 访问通道:选择是在创建子网时为它启用专用 Google 访问通道,还是稍后通过修改来启用。

    6. 流日志:选择是在创建子网时为它启用 VPC 流日志,还是稍后通过修改来启用。

    7. 点击完成

  6. 如需添加更多子网,请点击添加子网,然后重复上述步骤。此外,您还可以在创建网络后向网络添加更多子网

  7. 防火墙规则部分中,选择 IPv4 防火墙规则中的零条或更多预定义防火墙规则。这些规则适用于实例连接的常见使用场景。

    如果您不选择任何预定义规则,则可以在创建网络之后创建自己的防火墙规则

    每个预定义的规则名称都以您创建的 VPC 网络的名称 NETWORK 开头。在 IPv4 防火墙规则标签页中,可修改名为 NETWORK-allow-custom 的预定义入站防火墙规则。在包含规则的行的右侧,点击修改以选择子网,添加其他 IPv4 范围并指定协议和端口。

    如果您以后添加其他子网,则 NETWORK-allow-custom 防火墙规则不会自动更新。如果需要将防火墙规则用于新子网,则必须更新防火墙配置以添加规则。

  8. 为 VPC 网络选择动态路由模式

    如需了解详情,请参阅动态路由模式。稍后,您可以更改动态路由模式

  9. 最大传输单元 (MTU):选择网络的 MTU 是 1460(默认值)、1500 还是 8896。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

  10. 点击创建

gcloud

gcloud compute networks create NETWORK \
    --subnet-mode=custom \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE \
    --mtu=MTU

请将占位符替换为有效值:

  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。 MTU 可以设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

接下来,向网络添加子网

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "autoCreateSubnetworks": false,
  "name": "NETWORK",
  "mtu": MTU,
  "routingConfig": {
    "routingMode": "DYNAMIC_ROUTING_MODE"
  }
}

请将占位符替换为有效值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式
  • MTU 是该网络的最大传输单元。 MTU 可以设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

    如需了解详情,请参阅 networks.insert 方法。

接下来,向网络添加子网

Terraform

您可以使用 Terraform 模块来创建自定义模式 VPC 网络。

MTU 是该网络的最大传输单元。 可以将 MTU 设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

resource "google_compute_network" "vpc_network" {
  project                 = var.project_id # Replace this with your project ID in quotes
  name                    = "my-custom-mode-network"
  auto_create_subnetworks = false
  mtu                     = 1460
}

接下来,向网络添加子网

如需了解如何应用或移除 Terraform 配置,请参阅使用 Terraform 配置

创建具有双栈子网的自定义模式 VPC 网络

您可以在创建网络时创建子网,也可以稍后添加子网。

子网可以具有其主要 IP 地址范围的以下配置之一:

  • 单栈:仅限内部 IPv4 范围
  • 双栈:内部 IPv4 范围和内部 IPv6 范围
  • 双栈:内部 IPv4 范围和外部 IPv6 范围

VPC 中的每个子网可以具有不同的配置;例如,您无需将它们都配置为双栈。

如需配置具有内部 IPv6 范围的子网,请启用 VPC 网络 ULA 内部 IPv6 范围。内部 IPv6 子网范围是从此范围分配的。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击创建 VPC 网络
  3. 输入网络的名称
  4. 如果您要在此网络中的子网上配置内部 IPv6 地址范围,请完成以下步骤:

    1. 对于 VPC 网络 ULA 内部 IPv6 范围,选择已启用
    2. 对于分配内部 IPv6 范围,选择自动手动

      如果您选择手动,请在 fd20::/20 范围内输入 /48 范围。如果此范围正在使用中,系统会提示您提供其他范围。

  5. 对于子网创建模式,选择自定义

  6. 新子网部分,为子网指定以下配置参数:

    1. 为子网提供名称
    2. 选择区域
    3. 如需创建双栈子网,对于 IP 栈类型,请选择 IPv4 和 IPv6(双栈)
    4. 输入 IPv4 范围。这是子网的主要 IPv4 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    5. 选择 IPv6 访问权限类型外部内部

    6. 点击完成

  7. 要添加更多子网,请点击添加子网,然后重复上述步骤。

    VPC 网络中的每个子网可以具有不同的栈类型和 IPv6 访问权限类型配置。您无需将给定网络中的所有子网都配置为双栈子网。

    此外,您还可以在创建网络后向网络添加更多单栈双栈子网。

  8. IPv4 防火墙规则IPv6 防火墙规则标签页的防火墙规则部分,选择零条或更多预定义防火墙规则。这些规则适用于实例连接的常见使用场景。

    如果您不选择任何预定义规则,则可以在创建网络之后创建自己的防火墙规则

    每个预定义的规则名称都以您创建的 VPC 网络的名称 NETWORK 开头。IPv4 防火墙规则标签页和 IPv6 防火墙规则标签页中都有可修改的预定义入站防火墙规则;IPv4 规则名为 NETWORK-allow-custom,IPv6 规则名为 NETWORK-allow-ipv6-custom。在包含规则的行的右侧,点击修改以选择子网,添加其他 IP 范围并指定协议和端口。

    如果您以后添加其他子网,NETWORK-allow-customNETWORK-allow-ipv6-custom 防火墙规则不会自动更新。如果需要将防火墙规则用于新子网,则必须更新防火墙配置以添加规则。

  9. 为 VPC 网络选择动态路由模式

    如需了解详情,请参阅动态路由模式。稍后,您可以更改动态路由模式

  10. 最大传输单元 (MTU):选择网络的 MTU 是 1460(默认值)、1500 还是 8896。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

  11. 点击创建

gcloud

创建一个新的自定义模式 VPC 网络。创建此网络后,您可以向其添加仅限 IPv4 的子网双栈子网

如果您要在此网络的任何子网上配置内部 IPv6 范围,请使用 --enable-ula-internal-ipv6 标志。此选项会分配 Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的/48 ULA 前缀。如果您要选择分配的 /48 IPv6 范围,请使用 --internal-ipv6-range 标志指定范围。

如果您只想在此 VPC 网络中的子网上配置外部 IPv6,则可以省略这两个标志。

gcloud compute networks create NETWORK \
    --subnet-mode=custom \
    [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE \
    --mtu=MTU

请将占位符替换为有效值:

  • NETWORK:VPC 网络的名称。

  • ULA_IPV6_RANGE:Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 前缀。如果您不使用 --internal-ipv6-range 标志,则 Google 会为该网络选择 /48 前缀。

  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制该网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式

  • MTU 是该网络的最大传输单元。 MTU 可以设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

API

创建一个新的自定义模式 VPC 网络。创建此网络后,您可以向其添加仅限 IPv4 的子网双栈子网

如果您要在此网络中的任何子网上配置内部 IPv6 范围,请将 enableUlaInternalIpv6 设置为 true。此选项会分配 Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 范围。如果您要选择分配的 /48 IPv6 范围,还请使用 internalIpv6Range 字段指定范围。

如果您只想在此 VPC 网络中的子网上配置外部 IPv6,则可以省略这两个字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
{
  "autoCreateSubnetworks": false,
  "name": "NETWORK",
  "mtu": MTU,
  "enableUlaInternalIpv6": true,
  "internalIpv6Range": "ULA_IPV6_RANGE",
  "routingConfig": {
    "routingMode": "DYNAMIC_ROUTING_MODE"
  }
}

请将占位符替换为有效值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • MTU 是该网络的最大传输单元。 MTU 可以设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览
  • ULA_IPV6_RANGE:Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 前缀。如果您没有为 internalIpv6Range 提供值,Google 会为该网络选择 /48 前缀。
  • DYNAMIC_ROUTING_MODE 可以是 globalregional,用于控制网络中 Cloud Router 路由器的路由通告行为。如需了解详情,请参阅动态路由模式

    如需了解详情,请参阅 networks.insert 方法。

关于防火墙规则

创建网络后,创建防火墙规则以允许或拒绝网络中资源之间的流量,例如虚拟机实例之间的通信。您还可以使用防火墙规则来控制哪些流量从 VPC 网络流向互联网或哪些流量从互联网流向 VPC 网络。

查看网络

查看项目中的 VPC 网络和旧式网络。对于 VPC 网络,您可以查看有关其子网及其子网创建模式的信息。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络

    控制台会列出所有 VPC 网络和旧式网络。

  2. 选择一个 VPC 网络以查看其详细信息,例如该 VPC 网络的对等互连连接和子网。

gcloud

  1. 列出项目中的网络,如以下示例所示。

    gcloud compute networks list
    

    该命令会列出所有 VPC 网络和旧式网络。旧式网络显示子网创建模式为 LEGACY,而 VPC 网络显示 AUTOCUSTOM

    NAME             SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE     GATEWAY_IPV4
    custom-network   CUSTOM       REGIONAL
    default          AUTO         REGIONAL
    legacy-network1  LEGACY       REGIONAL          10.240.0.0/16  10.240.0.1
    
  2. 描述具体网络以查看其详细信息,例如该网络的对等互连连接和子网。

    gcloud compute networks describe NETWORK
    

API

  1. 列出项目中的所有网络。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
    

    PROJECT_ID 替换为包含所要列出 VPC 网络的项目 ID。

    如需了解详情,请参阅 networks.list 方法。

  2. 描述具体网络以查看其详细信息。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK
    

    请将占位符替换为有效值:

    • PROJECT_ID 是 VPC 网络所在项目的 ID。
    • NETWORK 是要描述的 VPC 网络的名称。

    如需了解详情,请参阅 networks.get 方法。

使用子网

您在创建或修改子网时必须遵循以下规则:

  • 在一个项目中,子网不能与 VPC 网络同名,除非它是该网络的成员。在一个项目中,同一区域中的子网必须具有唯一名称。例如,名为 production 的网络可以具有多个同样名为 production 的子网,前提是每个子网都位于唯一区域中。

  • 创建子网后,就无法更改子网的名称或区域。 不过,只要没有任何资源在使用子网,您就可以删除和替换它。

  • 每个子网都必须有一个主要 IPv4 范围,而别名 IP 地址可以有一个或多个次要 IPv4 范围(可选)。每个网络的限制说明了您可以为每个子网定义的次要范围的数量上限。主要和次要 IPv4 范围必须是有效范围

    • 在 VPC 网络中,所有主要和次要 IPv4 范围必须是唯一的,但它们需要是连续的。例如,一个子网的主要范围可以是 10.0.0.0/24,而同一网络中另一子网的主要范围可以是 192.168.0.0/16

    • 创建子网后,子网的主要 IPv4 范围可以扩展,但不可替换或缩小。

    • 只有在没有任何实例使用子网的次要 IPv4 范围时,您才可以移除和替换该范围。

    • 最小主要或次要范围大小是八个 IPv4 地址。换句话说,您可以使用的最长子网掩码是 /29

  • 子网的主要和次要范围不得与以下范围重叠:任何分配范围、同一网络中其他子网的任何主要或次要范围,或者对等互连网络中子网的任何 IPv4 范围。

  • Google Cloud 会为主要和次要 IP 范围创建相应的子网路由。根据定义,子网路由以及子网 IP 地址范围必须具有最具体的 IP 地址范围。

    • 如果您已通过 Cloud VPN专用互连或合作伙伴互连将 VPC 网络连接到其他网络,则主要和次要范围不得与本地 IP 范围发生冲突。

    • 在通过 VPC 网络对等互连进行连接的 VPC 网络之间,所有子网的 IPv4 范围都必须是唯一的。

    • 子网 IPv4 范围不得与静态路由的目的地发生冲突。

    • 避免将 10.128.0.0/9 块中的 IPv4 地址用于子网的主要或次要 IPv4 范围。在自动模式 VPC 网络中自动创建的子网会使用此地址块中的 IPv4 地址。如果您使用 10.128.0.0/9 块中的 IP 地址,则将无法使用 VPC 对等互连或通过 Cloud VPN 隧道将网络连接到自动模式 VPC 网络。

列出子网

您可以看到一个项目存在的所有子网。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到 VPC 网络
    此页面会显示所有 VPC 网络中的子网。
  2. 点击网络名称,然后点击 VPC 网络详情页面上的子网标签,以便仅查看此网络的子网,而不是所有网络的子网。

gcloud

您可以列出项目中所有网络中的所有子网,也可以仅显示特定网络或区域的子网。以下列表显示了示例命令。

  • 使用以下命令可列出所有地区的所有 VPC 网络中的所有子网:

    gcloud compute networks subnets list
    
  • 使用以下命令可列出特定 VPC 网络中的所有子网,请将 NETWORK 替换为相应网络的名称:

    gcloud compute networks subnets list \
       --network=NETWORK
    
  • 使用以下命令可列出特定区域中的所有子网,请将 REGION 替换为地区名称:

    gcloud compute networks subnets list \
       --filter="region:( REGION … )"
    

API

列出项目中的所有子网。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/subnetworks

PROJECT_ID 替换为包含所要列出子网的项目的 ID。

如需了解详情,请参阅 subnetworks.aggregatedList 方法。

描述子网

您可以按照本部分中的步骤查看现有子网的详细信息,例如子网的主要 IPv4 范围、任何次要 IP 范围、任何 IPv6 范围及其区域。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到 VPC 网络
    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。
  2. 要关注特定网络的子网,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签页中具体子网的名称,以查看其“子网详情”页面。

gcloud

  1. 列出子网可确定项目中现有子网的名称和地区。

  2. 描述子网,并将 SUBNETREGION 分别替换为子网的名称和区域。

    gcloud compute networks subnets describe SUBNET \
        --region=REGION
    

API

  1. 列出特定区域中的子网以查找子网的名称。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
    

    请将占位符替换为有效值:

    • PROJECT_ID 是包含所要列出子网的项目的 ID。
    • REGION 是包含所要列出子网的 Google Cloud 地区的名称。

    如需了解详情,请参阅 subnetworks.list 方法。

  2. 描述相应子网以查看其详细信息。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    请将占位符替换为有效值:

    • PROJECT_ID 是包含所要描述子网的项目的 ID。
    • REGION 是包含所要描述子网的 Google Cloud 地区的名称。
    • SUBNET 是所要描述子网的名称。

    如需了解详情,请参阅 subnetworks.get 方法。

添加仅限 IPv4 的子网

在创建子网时,请根据子网规则设置名称、区域和至少一个主要 IPv4 地址范围。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击添加子网。在显示的面板中:

    1. 提供名称
    2. 选择区域
    3. 输入 IP 地址范围。这是子网的主要 IPv4 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    4. 要为子网定义次要范围,请点击创建次要 IP 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    5. 专用 Google 访问通道:您可以在创建子网时为它启用专用 Google 访问通道,也可以稍后通过修改来启用。

    6. 流日志:您可以在创建子网时为它启用 VPC 流日志,也可以稍后通过修改来启用。

    7. 点击添加

gcloud

gcloud compute networks subnets create SUBNET \
    --network=NETWORK \
    --range=PRIMARY_RANGE \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是新子网的名称。
  • NETWORK 是将要包含新子网的 VPC 网络的名称。
  • PRIMARY_RANGE 是新子网的主要 IPv4 范围(采用 CIDR 表示法)。如需了解详情,请参阅 IPv4 子网范围
  • REGION 是将在其中创建新子网的 Google Cloud 地区。

您可以使用以下可选标志修改以上命令:

  • --secondary-range=SECONDARY_RANGE_NAME=SECONDARY_RANGE:将 SECONDARY_RANGE_NAME 替换为次要范围的名称,将 SECONDARY_RANGE 替换为采用 CIDR 表示法的次要范围。每个网络的限制说明了您可以为每个子网定义的次要范围的数量上限。
  • --enable-flow-logs:创建子网时在子网中启用 VPC 流日志
  • --enable-private-ip-google-access:创建子网时在子网中启用专用 Google 访问通道
  • --purpose:可让您为内部 HTTP(S) 负载平衡创建代理专用子网。
  • --role:仅适用于内部 HTTP(S) 负载平衡,允许您为代理专用子网指定角色(活跃或备份)。

接下来,创建防火墙规则

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • REGION 是要添加子网所在的 Google Cloud 地区的名称。
  • IP_RANGE 是子网的主要 IPv4 范围。如需了解详情,请参阅 IPv4 子网范围
  • NETWORK_URL 是所要添加子网的 VPC 网络的网址。
  • SUBNET 是子网的名称。

如需了解详情,请参阅 subnetworks.insert 方法。

接下来,创建防火墙规则

Terraform

您可以使用 Terraform 模块创建自定义模式 VPC 网络和子网。

MTU 是该网络的最大传输单元。 可以将 MTU 设置为 13008896 之间的任何值(默认值:1460)。在将 MTU 设置为高于 1460 的值之前,请先查看最大传输单元概览

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 4.0.1"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-custom-mode-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "subnet-01"
      subnet_ip     = "10.10.10.0/24"
      subnet_region = "us-west1"
    },
    {
      subnet_name           = "subnet-02"
      subnet_ip             = "10.10.20.0/24"
      subnet_region         = "us-west1"
      subnet_private_access = "true"
      subnet_flow_logs      = "true"
    },
    {
      subnet_name               = "subnet-03"
      subnet_ip                 = "10.10.30.0/24"
      subnet_region             = "us-west1"
      subnet_flow_logs          = "true"
      subnet_flow_logs_interval = "INTERVAL_10_MIN"
      subnet_flow_logs_sampling = 0.7
      subnet_flow_logs_metadata = "INCLUDE_ALL_METADATA"
      subnet_flow_logs_filter   = "false"
    }
  ]
}

接下来,创建防火墙规则

添加双栈子网

双栈子网同时具有 IPv4 和 IPv6 地址范围。

您可以创建启用外部或内部 IPv6 地址的子网。如果您在子网上配置 IPv6 范围,则系统不会在连接到该子网的虚拟机上配置 IPv6。如需详细了解如何在虚拟机上配置 IPv6,请参阅在虚拟机上配置 IPv6 地址

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击添加子网。在显示的面板中:

    1. 提供名称
    2. 选择区域
    3. 对于 IP 栈类型,请选择 IPv4 和 IPv6(双栈)
    4. 输入 IPv4 范围。这是子网的主要 IPv4 范围

      如果您选择的范围不是 RFC 1918 地址,请确认该范围与现有配置不冲突。如需了解详情,请参阅 IPv4 子网范围

    5. 选择 IPv6 访问权限类型内部外部

      如果您要将访问权限类型设置为内部,但内部选项不可用,请检查是否为网络分配了内部 IPv6 范围

    6. 点击添加

gcloud

gcloud compute networks subnets create SUBNET \
    --network=NETWORK \
    --range=PRIMARY_IPv4_RANGE \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=IPv6_ACCESS_TYPE \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是新子网的名称。
  • NETWORK 是将要包含新子网的 VPC 网络的名称。
  • PRIMARY_IPv4_RANGE 是新子网的主要 IPv4 范围(采用 CIDR 表示法)。如需了解详情,请参阅 IPv4 子网范围
  • IPv6_ACCESS_TYPE 是 IPv6 访问权限类型。可以为 EXTERNALINTERNAL
  • REGION 是将在其中创建新子网的 Google Cloud 地区。

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
{
  "ipCidrRange": "IP_RANGE",
  "network": "NETWORK_URL",
  "name": "SUBNET"
  "stackType": IPV4_IPV6,
  "ipv6AccessType": IPv6_ACCESS_TYPE
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • REGION 是要添加子网所在的 Google Cloud 地区的名称。
  • IP_RANGE 是子网的主要 IPv4 范围。如需了解详情,请参阅 IPv4 子网范围
  • NETWORK_URL 是所要添加子网的 VPC 网络的网址。
  • SUBNET 是子网的名称。
  • IPv6_ACCESS_TYPE 是 IPv6 访问权限类型。可以为 EXTERNALINTERNAL

如需了解详情,请参阅 subnetworks.insert 方法。

将子网的栈类型更改为双栈

双栈子网同时具有 IPv4 和 IPv6 子网范围。您可以将内部或外部 IPv6 子网范围添加到自定义模式 VPC 网络中的现有 IPv4 子网。如需了解详情,请参阅 IPv6 子网范围

如果您向子网添加 IPv6 子网范围,则系统不会在连接的虚拟机上配置 IPv6。如需了解如何配置虚拟机,请参阅在虚拟机上配置 IPv6

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到 VPC 网络
  2. 点击网络名称以查看 VPC 网络详细信息页面。
  3. 子网标签页中,点击要修改的子网的名称。
  4. 子网详情页面上,点击 修改
  5. 对于 IP 栈类型,请选择 IPv4 和 IPv6(双栈)
  6. 选择 IPv6 访问权限类型内部外部

    如果您要将访问权限类型设置为内部,但内部选项不可用,请检查是否为网络分配了内部 IPv6 范围

  7. 点击保存

gcloud

gcloud compute networks subnets update SUBNET \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=IPv6_ACCESS_TYPE \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是将在其中更新子网的 Google Cloud 区域。
  • IPv6_ACCESS_TYPE 是子网的 IPv6 访问权限类型。可以是 EXTERNALINTERNAL

API

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
{
  "stackType": IPV4_IPV6,
  "ipv6AccessType": IPv6_ACCESS_TYPE
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • REGION 是要添加子网所在的 Google Cloud 地区的名称。
  • SUBNET 是子网的名称。
  • IPv6_ACCESS_TYPE 是 IPv6 访问权限类型。可以为 EXTERNALINTERNAL

将子网栈类型更改为仅限 IPv4

如果 IPv6 访问权限类型为外部,则您可以将子网的栈类型从 IPv4 和 IPv6(双栈)更改为仅限 IPv4(单栈)。

如果您进行此更改,则无法创建连接到该子网的新双栈虚拟机。但是,现有的双栈虚拟机不受影响。如果您需要将虚拟机的堆栈类型更改为仅 IPv4,请参阅更改虚拟机的堆栈类型

此更改仅在 Google Cloud CLI 和 API 中受支持。

如果 IPv6 访问权限类型为内部,则不支持将栈类型从 IPv4 和 IPv6(双栈)更改为仅限 IPv4(单栈)。

gcloud

gcloud compute networks subnets update SUBNET \
    --stack-type=IPV4_ONLY \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是将在其中更新子网的 Google Cloud 区域。

API

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
{
  "stackType": IPV4_ONLY,
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • REGION 是要添加子网所在的 Google Cloud 地区的名称。
  • SUBNET 是子网的名称。

删除子网

使用以下说明可删除手动创建的子网。在删除子网之前,您必须先删除使用该子网的所有资源。例如,您需要删除使用该子网的虚拟机、预留的内部 IP 地址、内部转发规则以及 Cloud NAT 网关。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络

    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。

  2. 如需查看特定网络,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签中某一子网的名称,以查看其子网详情页面。

  3. 点击删除子网

  4. 在显示的消息中,点击删除进行确认。

gcloud

gcloud compute networks subnets delete SUBNET \
    --region=REGION

请将占位符替换为有效值:

  • SUBNET 是所要删除子网的名称。
  • REGION 是子网所在的地区。

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要删除子网的项目的 ID。
  • REGION 是包含所要描述子网的 Google Cloud 地区的名称。
  • SUBNET 是所要删除子网的名称。

如需了解详情,请参阅 subnetworks.delete 方法。

扩展主要 IPv4 范围

您可以扩展现有子网的主要 IPv4 范围,方法是修改其子网掩码,然后将前缀长度设置为较小的数字。新的建议子网主要 IPv4 范围必须遵循子网规则

在自动模式 VPC 网络(或者曾是自动模式 VPC 网络的自定义模式 VPC 网络)中扩展自动创建的子网的 IPv4 范围时,您可以使用的最宽泛的前缀(子网掩码)是 /16。比 /16 更宽泛的任何前缀都会与其他自动创建的子网的主要 IPv4 范围发生冲突。

您无法扩展负载均衡器代理专用的子网。如需了解详情,请参阅负载均衡器的代理专用子网

扩展子网的主要 IPv4 范围这一操作可能需要几分钟才能完成。在扩展期间,子网内的流量不会中断。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到 VPC 网络
    项目中的所有网络和子网都以层次视图呈现,其中子网显示为网络中的条目。
  2. 要关注特定网络的子网,请点击网络的名称。在网络的 VPC 网络详情页面上,点击子网标签中某一子网的名称,以查看其子网详情页面。
  3. 点击修改
  4. IP 地址范围字段中输入一个更宽泛的新 CIDR 块。

    如需了解有效范围,请参阅 IPv4 子网范围

  5. 点击保存

gcloud

gcloud compute networks subnets expand-ip-range SUBNET \
  --region=REGION \
  --prefix-length=PREFIX_LENGTH

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • PREFIX_LENGTH 是子网掩码大小(以位为单位)。如果主要 IPv4 范围是 10.1.2.0/24,则可以输入 20,以将子网掩码减少到 20 位,从而将主要 IP 范围更改为 10.1.2.0/20。如需了解有效范围,请参阅 IPv4 子网范围

API

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET/expandIpCidrRange
{
  "ipCidrRange": "IP_RANGE"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改子网的项目的 ID。
  • REGION 是包含所要修改子网的 Google Cloud 地区的名称。
  • SUBNET 是要修改的子网的名称。
  • IP_RANGE 是该子网的扩展的 IPv4 地址范围。如需了解有效范围,请参阅 IPv4 子网范围

如需了解详情,请参阅 subnetworks.expandIpCidrRange 方法。

修改次要 IPv4 范围

您可以为子网添加次要 IPv4 范围,也可以移除任何次要 IPv4 范围,前提是没有任何资源在使用该次要范围内的 IP 地址。

gcloud

使用以下 gcloud CLI 命令将新的次要 IPv4 范围添加到子网:

gcloud compute networks subnets update SUBNET \
  --region=REGION \
  --add-secondary-ranges=SECONDARY_RANGE_NAME=SECONDARY_RANGE

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • SECONDARY_RANGE_NAME 是次要范围的名称。
  • SECONDARY_RANGE 是次要 IPv4 地址范围(采用 CIDR 表示法)。如需了解有效范围,请参阅 IPv4 子网范围

使用以下 gcloud CLI 命令从子网中移除次要 IPv4 范围:

gcloud compute networks subnets update SUBNET \
  --region=REGION \
  --remove-secondary-ranges=SECONDARY_RANGE_NAME

请将占位符替换为有效值:

  • SUBNET 是子网的名称。
  • REGION 是子网所在的地区。
  • SECONDARY_RANGE_NAME 是所要移除次要范围的名称。

API

修改现有子网的次要 IPv4 地址范围。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET
{
  "secondaryIpRanges": [
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "IP_RANGE"
  },
  {
    "rangeName": "SECONDARY_RANGE_NAME",
    "ipCidrRange": "IP_RANGE"
  }],
  "fingerprint": "SUBNETWORK_FINGERPRINT"
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改子网的项目的 ID。
  • REGION 是包含所要修改子网的 Google Cloud 地区的名称。
  • SUBNET 是要修改的子网的名称。
  • SECONDARY_RANGE_NAME 是次要 IPv4 地址范围的名称。
  • IP_RANGE 是该子网的扩展的 IPv4 地址范围。如需了解有效范围,请参阅 IPv4 子网范围
  • SUBNET_FINGERPRINT 是现有子网的指纹 ID,由您在描述子网时提供。

如需了解详情,请参阅 subnetworks.patch 方法。

修改网络

将自动模式 VPC 网络转换为自定义模式

您可以通过此过程将自动模式 VPC 网络转换为自定义模式 VPC 网络。如需了解为什么可能需要执行此操作的背景信息,请查看自动模式 VPC 网络的注意事项

将自动模式 VPC 网络转换为自定义模式 VPC 网络可以保留其自动创建的所有子网和已添加的任何子网。子网名称和 IP 范围不会更改。

将自动模式 VPC 网络转换为自定义模式后,您必须检查所有隐式引用在网络处于自动模式时自动创建的任何子网的 API 调用和 gcloud CLI 命令。您需要修改 API 调用和命令,以便它们显式引用子网。对于具有子网规范标志 (--subnet) 的 gcloud CLI 命令,需要使用该标志来引用自定义模式 VPC 网络中的子网。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击修改
  4. 子网创建模式部分,选择自定义
  5. 点击保存

gcloud

使用以下命令将自动模式 VPC 网络转换为自定义模式 VPC 网络,并将 NETWORK 替换为网络的名称。

gcloud compute networks update NETWORK \
    --switch-to-custom-subnet-mode

API

将现有的自动模式 VPC 网络转换为自定义模式 VPC 网络。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK/switchToCustomMode

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要转换 VPC 网络的项目的 ID。
  • NETWORK 是所要转换 VPC 网络的名称。

如需了解详情,请参阅 networks.switchToCustomMode 方法。

为网络分配内部 IPv6 范围

如果您要在子网上配置内部 IPv6 地址,则必须先在 VPC 网络上启用内部 IPv6 地址。启用内部 IPv6 后,系统会为该网络分配 /48 唯一的本地地址 (ULA) 范围。

为您的 VPC 网络启用内部 IPv6 范围后,您可以添加双栈子网将 IPv4 子网转换为双栈子网

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击修改
  4. 对于 VPC 网络 ULA 内部 IPv6 范围,选择已启用
  5. 可选:您可以提供用于内部 IPv6 范围的前缀。

    1. 对于分配 ULA 内部 IPv6 范围,点击手动
    2. 输入 fd20::/20 范围内的 /48 范围。

      如果此范围正在使用中,系统会提示您输入其他范围。

  6. 点击保存

gcloud

--enable-ula-internal-ipv6 标志会分配 Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 前缀。如果您要选择分配的 /48 IPv6 范围,请使用 --internal-ipv6-range 标志指定范围。

gcloud compute networks update NAME \
    --enable-ula-internal-ipv6 \
    [ --internal-ipv6-range=ULA_IPV6_RANGE ]

请将占位符替换为有效值:

  • NAME 是 VPC 网络的名称。
  • ULA_IPV6_RANGE 是您需要为其分配 ULA 前缀的 IPv6 地址范围。

API

enableUlaInternalIpv6 设置为 true 会分配 Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 范围。如果您要选择分配的 /48 IPv6 范围,还请使用 internalIpv6Range 字段指定范围。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networksa/NETWORK
{
  "enableUlaInternalIpv6": true,
  "internalIpv6Range": "ULA_IPV6_RANGE",
}

请将占位符替换为有效值:

  • PROJECT_ID 是创建 VPC 网络的项目的 ID。
  • NETWORK 是 VPC 网络的名称。
  • ULA_IPV6_RANGE:Google 用于内部 IPv6 子网范围的 fd20::/20 范围内的 /48 前缀。如果您没有为 internalIpv6Range 提供值,Google 会为该网络选择 /48 前缀。

    如需了解详情,请参阅 networks.insert 方法。

更改动态路由模式

每个 VPC 网络都有一个关联的动态路由模式,用于控制网络中 Cloud Router 路由器的行为。如需了解每种模式如何影响 Cloud Router 路由器共享路由和应用已知路由的方式,请参阅“VPC 网络概览”页面中的动态路由模式部分。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击修改
  4. 动态路由模式部分中,选择全局区域
  5. 点击保存

gcloud

gcloud compute networks update NETWORK \
    --bgp-routing-mode=DYNAMIC_ROUTING_MODE

请将占位符替换为有效值:

  • NETWORK 是您需要更改其动态路由模式的 VPC 网络的名称。
  • DYNAMIC_ROUTING_MODEglobalregional,具体取决于网络中所有 Cloud Router 路由器的预期行为。

API

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK
{
  "routingConfig": {
    "routingMode": "ROUTING_MODE"
  }
}

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
  • NETWORK 是所要修改 VPC 网络的名称。
  • ROUTING_MODEGLOBALREGIONAL

如需了解详情,请参阅 subnetworks.patch 方法。

更改网络的 MTU

如需了解如何更改 VPC 网络的 MTU,请参阅更改 VPC 网络的 MTU 设置

删除网络

您可以删除未使用的网络。如需删除某个网络,您必须先删除其所有子网中的所有资源,以及引用该网络的所有资源。引用网络的资源包括 Cloud VPN 网关、Cloud Router、无服务器 VPC 访问通道连接器及其连接的服务、防火墙规则和自定义静态路由。

控制台

  1. 转到 Google Cloud Console 中的 VPC 网络页面。
    转到VPC 网络
  2. 点击某个 VPC 网络的名称以显示其 VPC 网络详情页面。
  3. 点击删除 VPC 网络
  4. 在显示的消息中,点击删除进行确认。

gcloud

NETWORK 替换为要移除的网络的名称。

gcloud compute networks delete NETWORK

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK

请将占位符替换为有效值:

  • PROJECT_ID 是包含所要删除 VPC 网络的项目 ID。
  • NETWORK 是所要删除 VPC 网络的名称。

如需了解详情,请参阅 subnetworks.delete 方法。

监控您的 VPC 网络

您可以对进出虚拟机的网络流启用日志记录功能。如需了解相关说明,请参阅使用 VPC 流日志

您可以为防火墙规则启用日志记录功能,以便了解哪些规则允许或阻止了哪些流量。如需了解相关说明,请参阅使用防火墙规则日志记录

迁移虚拟机

在给定项目内,您可以将虚拟机 (VM) 实例从一个网络迁移到另一个网络。如需了解相关说明,请参阅在网络之间迁移虚拟机

问题排查

错误:Constraint constraints/compute.requireVpcFlowLogs violated

如果同时满足以下两个条件,就会出现此错误:

  • 已设置组织政策限制条件,该限制条件要求配置 VPC 流日志。

  • 您创建了一个子网或更新了现有子网的 VPC 流日志配置,而该配置不符合政策的要求。

如需详细了解此限制条件及其对子网创建和更新的影响,请参阅 VPC 流日志的组织政策限制条件

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个帐号来评估 VPC 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 VPC