快速入门:在 VPC 网络和本地网络之间创建 Cloud Router 路由器

在 VPC 网络和本地网络之间创建 Cloud Router 路由器

Cloud Router 路由器会在 Virtual Private Cloud (VPC) 网络和本地网络之间动态交换路由。创建 Cloud Router 路由器后,您可以在 Cloud Router 路由器和本地路由器之间建立 BGP 会话。

创建 Cloud Router 路由器时,您可以使用其默认路由通告或指定自定义通告。默认情况下,使用区域动态路由的 Cloud Router 路由器将通告其区域中的子网,使用全局动态路由的 Cloud Router 路由器将通告 VPC 网络中的所有子网。借助自定义路由通告,您可以选择让 Cloud Router 路由器通告哪些路由,例如外部静态 IP 地址或特定 CIDR 范围。

如需了解详情,请参阅 Cloud Router 概览的以下部分:

准备工作

如果您要使用本指南中的命令行示例,请执行以下操作:

  1. 安装或更新到 Google Cloud CLI 的最新版本。
  2. 设置默认区域和地区

如果希望使用本指南中的 API 示例,请设置 API 访问权限

创建 Cloud Router 路由器

如需创建 Cloud Router 路由器,请按照以下步骤操作。

控制台

  1. 在 Google Cloud Console 中,转到创建 Cloud Router 路由器页面。

    转到“创建 Cloud Router 路由器”

  2. 指定 Cloud Router 的详细信息:

    • 名称:Cloud Router 路由器的名称。此名称显示在 Cloud Console 中,Google Cloud CLI 会使用此名称引用该 Cloud Router 路由器,例如 my-router
    • 说明(可选):Cloud Router 的说明。
    • 网络:包含您要访问的实例的 VPC 网络,例如 my-network
    • 区域:您希望 Cloud Router 路由器所在的区域,例如 asia-east1
    • Google ASN:您正在配置的 Cloud Router 路由器的专用 ASN64512-655344200000000-4294967294);这可以是您尚未在同一区域和网络中用作对等 ASN 的任何专用 ASN,例如 65001。Cloud Router 要求您使用专用 ASN,但您的本地 ASN 可以是公共的,也可以是专用的。
    • BGP 对等 keepalive 时间间隔:发送到对等路由器的两条连续 BGP keepalive 消息之间的时间间隔。此值必须是介于 20 到 60 之间的整数,用于指定该间隔的秒数。默认时间为 20 秒。如需了解详情,请参阅管理 BGP 计时器
  3. 可选:如需指定自定义路由通告,请转到通告的路由部分。如需详细了解以下步骤,请参阅自定义路由通告

    1. 如需指定自定义路由,请选择创建自定义路由
    2. 选择是否通告该 Cloud Router 路由器可用的子网。启用此选项可模拟 Cloud Router 路由器的默认行为。
    3. 如需添加通告的路由,请选择添加自定义路由,然后进行配置。
  4. 要保存设置并创建 Cloud Router 路由器,请点击创建。您的新 Cloud Router 路由器将显示在 Cloud Router 路由器列表页面上。要查看其详细信息并配置 BGP 会话,请选择该会话。

gcloud

  • 要在包含您要访问的实例的区域中创建 Cloud Router 路由器,请运行 create 命令:

    gcloud compute routers create ROUTER_NAME \
        --project=PROJECT_ID \
        --network=NETWORK \
        --asn=ASN_NUMBER \
        --region=REGION
    

    请替换以下内容:

    • ROUTER_NAME:Cloud Router 路由器的名称
    • PROJECT_ID:Cloud Router 路由器所属项目的 ID
    • NETWORK:包含您要访问的实例的 VPC 网络
    • ASN_NUMBER:您尚未在本地网络中使用的任何专用 ASN64512-655344200000000-4294967294);Cloud Router 要求您使用专用 ASN,但您的本地 ASN 可以是公共的,也可为专用的。
    • REGION:您希望 Cloud Router 路由器所在的区域;该 Cloud Router 路由器会通告其所在区域中的所有子网
  • 如需创建具有自定义路由通告的 Cloud Router 路由器,请将 --advertisement-mode 设置为 custom,并使用 --set-advertisement-ranges--set-advertisement-groups 标志来指定路由通告。

    --set-advertisement-ranges 标记接受 CIDR 范围列表。--set-advertisement-groups 标志接受 Cloud Router 路由器动态通告的 Google 定义组。目前,唯一的有效值是 all_subnets,该设置会根据 VPC 网络的动态路由模式通告子网(类似于默认通告)。

    以下示例演示了如何通告子网和自定义 IP 范围 1.2.3.46.7.0.0/16

    gcloud compute routers create ROUTER_NAME \
        --project=PROJECT_ID \
        --network=NETWORK \
        --asn=ASN_NUMBER \
        --advertisement-mode custom \
        --set-advertisement-groups all_subnets \
        --set-advertisement-ranges 1.2.3.4,6.7.0.0/16
    
  • 如需为 BGP 对等端设置 keepalive 计时器,请使用 --keepalive-interval 选项,它可设置发送到对等路由器的 BGP keepalive 消息的时间间隔。此值必须是介于 20 到 60 之间的整数,用于指定该间隔的秒数。默认时间为 20 秒。

API

  • 使用 routers.insert 方法

       POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
       {
         "bgp": {
           "asn": "ASN_NUMBER"
           "keepaliveInterval": KEEPALIVE_INTERVAL
         },
         "name": "ROUTER_NAME",
         "network": "NETWORK"
       }
    

    请替换以下内容:

    • PROJECT_ID:VPC 网络所在项目的 ID
    • REGION:您希望 Cloud Router 路由器所在的区域。
    • ASN_NUMBER:您正在配置的 Cloud Router 路由器的 的专用 ASN64512-655344200000000-4294967294);它可以是您尚未在同一区域和网络中用作对等 ASN 的任何专用 ASN,例如,65001;Cloud Router 要求您使用专用 ASN 但您的本地 ASN 可以是公共的,也可以是专用的。
    • KEEPALIVE_INTERVAL(可选):Cloud Router 的 keepalive 计时器,用于设置发送到对等路由器的 BGP keepalive 消息之间的时间间隔

      此值必须是介于 20 到 60 之间的整数,用于指定该间隔的秒数。默认时间为 20 秒。

    • ROUTER_NAME:Cloud Router 路由器的名称;此名称显示在 Cloud Console 中,Google Cloud CLI 会使用此名称引用该 Cloud Router 路由器

    • NETWORK:您要访问的实例所在的网络

  • 如需创建具有自定义路由通告的 Cloud Router 路由器,请将 bgp.advertiseMode 字段设置为 CUSTOM,并使用 bgp.advertisedGroups[]bgp.advertisedIpRanges[] 字段来指定路由通告。

    bgp.advertisedIpRanges[] 字段接受一个 CIDR 范围数组。bgp.advertisedGroups[] 字段接受 Cloud Router 路由器动态通告的 Google 定义组。目前,唯一的有效值是 ALL_SUBNETS,该设置会根据 VPC 网络的动态路由模式通告子网(类似于默认通告)。

    以下示例通告子网和自定义 IP 地址范围 1.2.3.46.7.0.0/16

       POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
       {
         "bgp": {
           "asn": "ASN_NUMBER",
           "advertiseMode": "CUSTOM",
           "advertisedGroups": [
             "ALL_SUBNETS"
           ],
           "advertisedIpRanges": [
             {
               "range": "1.2.3.4",
               "description": "First example range"
             },
             {
               "range": "6.7.0.0/16",
               "description": "Second example range"
             }
           ]
         },
         "name": "ROUTER_NAME",
         "network": "NETWORK"
       }
      

Terraform

使用 Terraform 模块

module "cloud_router" {
  source  = "terraform-google-modules/cloud-router/google"
  version = "~> 0.4"

  name   = "my-router"
  region = "us-central1"

  bgp = {
    # The ASN (16550, 64512 - 65534, 4200000000 - 4294967294) can be any private ASN
    # not already used as a peer ASN in the same region and network or 16550 for Partner Interconnect.
    asn = "65001"
  }

  # project = "my-project-id"
  project = var.project
  # network = "my-network"
  network = var.network
}

后续步骤

  • 如需在 Cloud Router 路由器和本地路由器之间建立 BGP 会话,请参阅建立 BGP 会话

  • 如需排查使用 Cloud Router 时遇到的问题,请参阅问题排查