通告自定义 IP 地址范围

在 Cloud Router 路由器上或 Cloud Router 路由器上的边界网关协议 (BGP) 会话中使用自定义通告模式,以通告 Virtual Private Cloud (VPC) 网络的子网 IP 地址范围以外的 IP 地址范围。例如,您可以通告外部 IP 地址范围、任意内部 IP 地址范围,或与您的 VPC 网络连接的其他 VPC 网络中的 IP 地址范围的内部 IP 地址。您的 VPC 网络可能通过 VPC 网络对等互连或者 Network Connectivity Center 中的 VPC Spoke 进行连接。

当 Cloud Router 路由器配置为使用默认通告模式时,它仅会通告与 Cloud Router 路由器属于同一 VPC 网络的子网的路由。在此模式下,Cloud Router 路由器会排除静态路由和从其他 VPC 网络动态获知的路由,例如由 VPC 网络对等互连或者 Network Connectivity Center 中的 VPC Spoke 获知的路由。

如需在创建 Cloud Router 路由器或配置 BGP 会话时指定自定义通告路由,请参阅创建 Cloud Router 路由器建立 BGP 会话

在 Cloud Router 路由器上指定自定义通告路由

如需在现有 Cloud Router 路由器上指定自定义通告路由,请按以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 选择要更新的 Cloud Router 路由器。

  3. 路由器详情页面上,点击 修改

  4. 通告的路由部分,对于路由,选择创建自定义路由

  5. 选择通告向 Cloud Router 路由器公开的所有子网复选框,以继续通告 Cloud Router 路由器可用的子网。启用此选项可模拟 Cloud Router 路由器在默认通告模式下的行为。

  6. 选择添加自定义路由以添加通告路由。

  7. 配置自定义通告路由:

    • 来源:选择自定义 IP 范围
    • IP 地址范围:使用 CIDR 表示法指定自定义 IP 范围。 您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。
    • 说明:添加说明以帮助标识此自定义通告路由的用途,然后点击完成
  8. 添加完自定义通告路由后,点击保存

gcloud

运行 update 命令。如需指定自定义 IP 范围,请使用 --set-advertisement-ranges 标志或 --add-advertisement-ranges 标志。

  1. 使用 --set-advertisement-ranges 标志;所有现有的自定义通告都会被替换:

    gcloud compute routers update ROUTER_NAME \
       --project=PROJECT_ID \
       --advertisement-mode custom \
       --set-advertisement-groups=ADVERTISED_GROUPS \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    替换以下内容:

    • ROUTER_NAME:Cloud Router 路由器的名称
    • PROJECT_ID:Cloud Router 路由器所属的项目
    • ADVERTISED_GROUPS:Cloud Router 路由器动态通告的组,由 Google 定义。

      唯一的有效值是 all_subnets,它根据 VPC 网络的动态路由模式(类似于默认通告模式)通告子网。

    • ADVERTISED_IP_RANGES:新 IP 地址范围数组的内容

      您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。 但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。

    以下示例演示了如何更新 my-router Cloud Router 路由器,以通告所有子网以及自定义 IP 范围 1.2.3.46.7.0.0/16

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups all_subnets \
       --set-advertisement-ranges 1.2.3.4,6.7.0.0/16
    

    以下示例更新了 my-router Cloud Router 路由器,以通告所有子网和默认 IPv6 范围:

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups all_subnets \
       --set-advertisement-ranges ::/0
    

    Cloud Router 路由器仅在启用了 IPv6 的 BGP 会话中通告 IPv6 范围。

    --set-advertisement-groups 标志接受 Cloud Router 路由器动态通告的 Google 定义组。您可以移除 --set-advertisement-groups 标志以排除子网通告。如需查看完整的通告组列表,请参阅 Google SDK 文档中的 set-advertisement-groups 标志。

  2. 使用 --add-advertisement-ranges 标志,它要求 Cloud Router 路由器的通告模式已设置为 custom

    gcloud compute routers update ROUTER_NAME \
       --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    请替换以下内容:

    • ROUTER_NAME:Cloud Router 路由器的名称
    • ADVERTISED_IP_RANGES:新 IP 地址范围数组的内容

    以下示例展示了如何将 1.2.3.5 自定义 IP 地址添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update my-router \
       --add-advertisement-ranges 1.2.3.5
    

    以下示例将 2001:db8:abcd:12::/64 自定义 IPv6 范围添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update my-router \
       --add-advertisement-ranges 2001:db8:abcd:12::/64
    

    Cloud Router 路由器仅在启用了 IPv6 的 BGP 会话中通告 IPv6 范围。

API

使用 routers.patch 方法更新 bgp.advertisedGroups[]bgp.advertisedIpRanges[] 字段。

bgp.advertisedGroups[]bgp.advertisedIpRanges[] 字段存储通告组和通告 IP 地址范围的数组。PATCH 这些字段时,您将使用请求中的新数组覆盖现有数组。

  1. 发送 GET 请求以获取路由器上的当前通告组和通告 IP 地址范围的数组。如需了解详情,请参阅查看 BGP 会话配置

  2. 发送 PATCH 请求,其中包含新的通告组和通告 IP 地址范围的数组。使用上一步中的 GET 请求中的数组,然后添加您希望在路由器上使用的所有组或 IP 地址范围。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgp": {
        "advertisedGroups": [
        "ADVERTISED_GROUPS"
       ],
        "advertisedIpRanges": [
        ADVERTISED_IP_RANGES
       ]
     }
    }
    

    请替换以下内容:

    • PROJECT_ID:Cloud Router 路由器所属的项目
    • REGION:Cloud Router 路由器所在的区域
    • ROUTER_NAME:Cloud Router 路由器的名称
    • ADVERTISED_GROUPS:Cloud Router 路由器动态通告的组,由 Google 定义。

      唯一的有效值是 ALL_SUBNETS,它根据 VPC 网络的动态路由模式通告子网(类似于默认通告)。

    • ADVERTISED_IP_RANGES:新 IP 地址范围数组的内容

      您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。 但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。

    以下示例包含两个 IPv4 地址范围和一个 IPv6 地址范围:

        {
          "range": "1.2.3.4",
          "description": "First example range"
        },
        {
          "range": "6.7.0.0/16",
          "description": "Second example range"
        },
        {
          "range": "2001:db8:abcd:12::/64",
          "description: "Third example range"
        }
    

为 BGP 会话指定自定义通告路由

如需为现有 BGP 会话指定自定义通告路由,请按照以下步骤操作。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。

    前往“Cloud Router 路由器”

  2. 选择待更新 BGP 会话所属的 Cloud Router 路由器。

  3. 路由器详细信息页面上,选择要更新的 BGP 会话。

  4. BGP 会话详情页面中,点击 修改

  5. 对于路由,选择创建自定义路由

  6. 选择通告向 Cloud Router 路由器公开的所有子网复选框,以继续通告 Cloud Router 路由器可用的子网。启用此选项可模拟 Cloud Router 路由器的默认行为。

  7. 选择添加自定义路由以添加通告路由。

  8. 配置路由通告:

    • 来源:选择自定义 IP 范围
    • IP 地址范围:使用 CIDR 表示法指定自定义 IP 范围。 您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。 但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。
    • 说明:添加说明以帮助标识此路由通告的用途,然后点击完成
  9. 添加完自定义路由后,点击保存

gcloud

运行 update-bgp-peer 命令。如需指定自定义 IP 范围,请使用 --set-advertisement-ranges 标志或 --add-advertisement-ranges 标志。

  1. 使用 --set-advertisement-ranges 标志;所有现有的自定义通告都会被替换:

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --advertisement-mode custom \
        --set-advertisement-groups=ADVERTISED_GROUPS \
        --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    替换以下内容:

    • ROUTER_NAME:Cloud Router 路由器的名称
    • PEER_NAME:您的 BGP 对等体的名称
    • (可选)如果您要添加自定义 IPv6 范围,请添加 --enable-ipv6 标志。
    • ADVERTISED_GROUPS:Cloud Router 路由器动态通告的组,由 Google 定义。

      唯一的有效值是 all_subnets,它根据 VPC 网络的动态路由模式通告子网(类似于默认通告)。

    • ADVERTISED_IP_RANGES:新 IP 地址范围数组的内容

      您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。 但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。

    以下示例演示了如何更新 my-router Cloud Router 路由器上的 my-bgp-session BGP 会话,以通告所有子网以及自定义 IP 地址范围 1.2.3.46.7.0.0/162001:db8:abcd:12::/64

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --enable-ipv6 \
        --advertisement-mode custom \
        --set-advertisement-groups all_subnets \
        --set-advertisement-ranges 1.2.3.4,6.7.0.0/16,2001:db8:abcd:12::/64
    

    --set-advertisement-groups 标志接受 BGP 会话动态通告的 Google 定义组。您可以移除 --add-advertisement-groups 标志以排除子网通告。如需查看完整的通告组列表,请参阅 Google SDK 文档中的 set-advertisement-groups 标志。

  2. 使用 --add-advertisement-ranges 标志,它要求 Cloud Router 路由器的通告模式已设置为 custom

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    请替换以下内容:

    • ROUTER_NAME:Cloud Router 路由器的名称
    • PEER_NAME:您的 BGP 对等体的名称
    • ADVERTISED_IP_RANGES:新 IP 地址范围数组的内容

      您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。 但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。

    以下示例展示了如何将 1.2.3.5 自定义 IP 地址添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges 1.2.3.5
    

    以下示例将 2001:db8:abcd:12::/64 自定义 IPv6 地址添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --enable-ipv6 \
        --add-advertisement-ranges 2001:db8:abcd:12::/64
    

API

使用 routers.patch 方法更新 bgpPeers[] 字段。

bgpPeers[] 字段接受 BGP 对等方数组。PATCH 此字段时,您将使用请求中包含的新数组覆盖现有 BGP 对等端数组。

  1. 发送 GET 请求以获取路由器的当前 BGP 对等端数组。如需了解详情,请参阅查看 BGP 会话配置

  2. 发送带有新 BGP 对等端数组的 PATCH 请求。针对要为其添加通告的每个 BGP 对等体,执行以下操作:

    • bgpPeers[].advertisedIpRanges[] 字段中添加您需要的所有 IP 地址范围通告。
    • bgpPeers[].advertisedGroups[] 字段中添加您需要的所有组通告。

      唯一的有效值是 ALL_SUBNETS,它根据 VPC 网络的动态路由模式(类似于默认通告模式)通告子网。

      如需详细了解这些值,请参阅 API 文档中的 routers.patch

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    请替换以下内容:

    • PROJECT_ID:Cloud Router 路由器所属的项目
    • REGION:Cloud Router 路由器所在的区域
    • ROUTER_NAME:Cloud Router 路由器的名称
    • BGP_PEERS:新 BGP 对等体数组的内容

    以下示例包含两个具有自定义通告的 BGP 对等体:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "enableIpv6": true,
          "advertisedRoutePriority": 100,
          "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"
            },
            {
              "range": "2001:db8:abcd:12::/64",
              "description: "Third example range"
            }
          ]
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedIpRanges": [
            {
              "range": "192.168.10.0/24",
              "description": "Fourth example range"
            }
          ]
        }
    

后续步骤