创建高可用性 VPN 网关来连接 VPC 网络

本页面介绍如何使用两个高可用性 VPN 网关连接 Google Cloud 中的两个虚拟私有云 (VPC) 网络。只要两个 VPC 网络中的主要和次要子网 IPv4 或 IPv6 地址范围不重叠,您就可以将它们连接在一起。

此高可用性 VPN 配置要求这两个高可用性 VPN 网关位于同一区域。但是,该区域要求不会限制高可用性 VPN 流量的范围。由于 VPC 网络的动态路由模式配置为全局路由,因此高可用性 VPN 流量可以到达所有子网,无论为其分配的区域为何。

如需详细了解 Cloud VPN,请参阅以下资源:

要求

一般准则

如需实现 99.99% 的服务等级协议 (SLA) 目标,请在创建此配置时确保满足以下要求:

  • 在每个 VPC 网络中设置一个高可用性 VPN 网关。
  • 在同一个 Google Cloud 区域中设置两个高可用性 VPN 网关。
  • 在每个网关的每个接口上配置隧道。
  • 匹配网关接口,如下所示:
    • 第一个网关的 interface 0 上的隧道必须连接到第二个网关上的 interface 0
    • 第一个网关的 interface 1 上的隧道必须连接到第二个网关上的 interface 1

虽然可以使用高可用性 VPN 网关之间的单个隧道或使用传统 VPN 网关将两个 VPC 网络相连,但这种类型的配置不具备高可用性,且不满足高可用性服务等级协议 (SLA) 承诺的 99.99% 可用性。

Cloud Router 路由器建议

配置新的高可用性 VPN 网关时,您可以创建新的 Cloud Router 路由器,也可以将现有 Cloud Router 路由器与现有 Cloud VPN 隧道或 VLAN 连接搭配使用。但是,由于连接的特定 ASN 要求,您使用的 Cloud Router 路由器必须尚未管理与合作伙伴互连连接关联的 VLAN 连接的 BGP 会话。

管理权限

由于高可用性 VPN 网关并不总会属于您或您的 Google Cloud 组织,因此在创建高可用性 VPN 网关或连接到其他人所拥有的高可用性 VPN 网关时,请考虑以下权限要求:

  • 如果您拥有在其中创建高可用性 VPN 网关的项目,请为其配置建议的权限。
  • 如果您要连接到非您所拥有的 Google Cloud 组织或项目中的高可用性 VPN 网关,请向所有者请求 compute.vpnGateways.use 权限。

准备工作

查看 Google Cloud 中动态路由的工作原理。

确保您的对等 VPN 网关支持边界网关协议 (BGP)。

在 Google Cloud 中设置以下各项,以更轻松地配置 Cloud VPN:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 安装 Google Cloud CLI。
  5. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  6. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  7. 确保您的 Google Cloud 项目已启用结算功能

  8. 安装 Google Cloud CLI。
  9. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  1. 如果您使用的是 Google Cloud CLI,请使用以下命令设置项目 ID。此页面上的 gcloud 说明假设您在发出命令前已设置了项目 ID。

        gcloud config set project PROJECT_ID
        
  1. 您还可以通过运行以下命令来查看已设置的项目 ID:

        gcloud config list --format='text(core.project)'
        

创建自定义 VPC 网络和子网

本文档中介绍的流程使用两个不同的 VPC 网络。每个 VPC 网络至少有两个子网,并且这些子网位于不同区域。

创建高可用性 VPN 网关和高可用性 VPN 隧道之前,请创建两个 VPC 网络。

每个 VPC 网络必须在您创建高可用性 VPN 网关的区域中至少有一个子网。

如需在高可用性 VPN 隧道中启用 IPv6 流量,您必须在创建 VPC 网络时启用 IPv6 内部地址的分配。

此外,请将子网配置为使用 IPv6 内部地址。

您还必须在子网中的虚拟机上配置 IPv6:

VPC 子网必须配置为使用内部 IPv6 地址。使用 gcloud CLI 时,您可以使用 --ipv6-access-type=INTERNAL 标志配置子网。Cloud Router 路由器不会动态通告配置为使用外部 IPv6 地址 (--ipv6-access-type=EXTERNAL) 的子网的路由。

如需了解如何在 VPC 网络和子网中使用内部 IPv6 范围,请参阅内部 IPv6 规范

本文档中的示例还使用了 VPC 全球动态路由模式,该模式的行为如下:

  • Cloud Router 路由器的所有实例会将其获知的 to on-premises 路由应用于 VPC 网络的所有子网。
  • 指向 VPC 网络中所有子网的路由会与本地路由器共享。

创建两个相互连接且经过全面配置的高可用性 VPN 网关

按照本部分中的说明创建高可用性 VPN 网关、对等 VPN 网关资源、隧道和 BGP 会话。

创建高可用性 VPN 网关

控制台

VPN 设置向导包括创建高可用性 VPN 网关、对等 VPN 网关资源、隧道和 BGP 会话所需的所有配置步骤。

如要创建第一个高可用性 VPN 网关,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,转到 VPN 页面。

    转到 VPN

  2. 如果您是首次创建网关,请点击创建 VPN 连接

  3. 选择 VPN 设置向导

  4. 如果您已有高可用性 VPN 网关,请选择该网关的选项按钮。

  5. 点击继续

  6. 指定 VPN 网关名称

  7. VPC 网络下,选择现有网络或默认网络。

  8. 选择区域

  9. 为网关选择栈类型:IPv4(单栈)IPv4 和 IPv6(双栈)

  10. 点击创建并继续

  11. 控制台页面会刷新,刷新后会显示您的网关信息。系统会自动为每个网关接口分配两个外部 IPv4 地址。请记下您网关配置的详细信息,以供后续配置步骤使用。

如需创建第二个高可用性 VPN 网关,请重复上述步骤,并考虑以下事项:

  • 如有必要,请使用单独的浏览器创建第二个高可用性 VPN 网关。如果要连接两个高可用性 VPN,请选择托管要连接的网络的项目。
  • 选择您为第一个高可用性 VPN 网关配置的区域
  • 确保指定与第一个网关相同的堆栈类型,即 IPv4(单栈)IPv4 和 IPv6(双栈)

gcloud

根据您计划通过隧道支持的工作负载,您可以在创建网关时按如下方式选择堆栈类型:

  • 如需仅支持 IPv4 工作负载,请创建使用 IPV4_ONLY 堆栈类型的高可用性 VPN 网关。
  • 如需同时支持 IPv4 和 IPv6 工作负载,请创建使用 IPV4_IPV6 堆栈类型的高可用性 VPN 网关。
  • 如需仅支持 IPv6 工作负载,请创建具有 IPV6_ONLY 堆栈类型的高可用性 VPN 网关(适用于预览版,且仅搭配使用 Google Cloud CLI 或 API)。

如需创建两个高可用性 VPN 网关,请完成以下命令序列:

  • REGION 的每个网络中创建一个高可用性 VPN 网关。

    每个网关创建后,系统会自动分配两个外部 IPv4 地址,每个地址对应一个网关接口。记下这些 IP 地址,以便稍后在配置步骤中使用

    在以下命令中,替换以下选项:

    • GW_NAME_1GW_NAME_2:每个网关的名称
    • NETWORK:Google Cloud 网络的名称
    • REGION:您需要在其中创建网关和隧道的 Google Cloud 区域
    • IP_STACK(可选):要使用的 IP 栈。指定 IPV4_ONLYIPV4_IPV6IPV6_ONLY预览版)。如果未指定此标志,则堆栈类型默认为 IPV4_IPV6

    创建第一个网关

    对于具有 IPv4 接口的网关:

    gcloud compute vpn-gateways create GW_NAME_1 \
       --network=NETWORK_1 \
       --region=REGION \
       --stack-type=IP_STACK
    

    您创建的网关类似于以下示例输出。系统已自动为每个网关接口分配了一个外部 IPv4 地址:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnGateways/ha-vpn-gw-a].
    NAME          INTERFACE0     INTERFACE1     NETWORK     REGION
    ha-vpn-gw-a   203.0.113.16   203.0.113.23   network-a   us-central1
    

    创建第二个网关

    gcloud compute vpn-gateways create GW_NAME_2 \
       --network=NETWORK_2 \
       --region=REGION \
       --stack-type=IP_STACK
    

    如果您为第一个网关指定了堆栈类型,请将相同的堆栈类型用于第二个网关。

    对于 REGION,请指定您在创建第一个高可用性 VPN 网关时指定的区域。

    您创建的网关类似于以下示例输出:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-east1/vpnGateways/ha-vpn-gw-b].
    NAME          INTERFACE0     INTERFACE1     NETWORK     REGION
    ha-vpn-gw-b   203.0.114.18   203.0.114.25   network-b   us-east1
    

    对于具有 IPv6 接口的网关:

    gcloud beta compute vpn-gateways create GW_NAME_1 \
       --network=NETWORK_1 \
       --region=REGION \
       --gateway-ip-version=IPV6 \
       --stack-type=IP_STACK
    

    系统会自动为每个网关接口分配一个外部 IPv6 地址。

API

如需为高可用性 VPN 网关创建完整配置,请使用以下部分中的 API 命令。这些部分使用的所有字段值均为示例值。

对于具有 IPv4 接口的网关:

  1. 通过向 vpnGateways.insert 方法发出 POST 请求,创建第一个高可用性 VPN 网关。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnGateways
    {
     "name": "ha-vpn-gw-a",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/network-a",
     "stackType": "IPV4_IPV6"
    }
    

    stackType 字段为可选字段。有效值为 IPV4_IPV6IPV4_ONLY。如果未指定 stackType,则默认为 IPV4_ONLY

  2. 重复该命令以创建第二个高可用性 VPN 网关,并指定适当的 projectnamenetworkregion

    如果您为第一个网关指定了 stackType,请将相同的堆栈类型用于第二个网关:IPV4_ONLYIPV4_IPV6

对于具有 IPv6 接口的网关:

  1. 通过向 vpnGateways.insert 方法发出 POST 请求,创建第一个高可用性 VPN 网关。

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/vpnGateways
    {
     "name": "ha-vpn-gw-a",
     "network": "https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/networks/network-a",
     "gatewayIpVersion": "IPV6",
     "stackType": "IPV6_ONLY"
    }
    

    为高可用性 VPN 网关分配外部 IPv6 地址时,必须将 IPV6 指定为 gatewayIpVersion 值。stackType 字段为可选字段。

    • 如果未指定 stackType,则默认值为 IPV4_IPV6

    • 对于 gatewayIpVersionIPV6 的网关,唯一有效的 stackType 值是 IPV4_IPV6IPV6_ONLY预览版)。

  2. 重复该命令以创建第二个高可用性 VPN 网关,并指定适当的 projectnamenetworkregion

    为高可用性 VPN 网关分配外部 IPv6 地址时,必须将 IPV6 指定为 gatewayIpVersion 值。stackType 字段为可选字段。

    如果您为第一个网关指定了 stackType,请将相同的堆栈类型用于第二个网关:IPV6_ONLY预览版)或 IPV4_IPV6

指定对等 VPN 网关资源

在此设置中,对等 VPN 网关资源是第二个高可用性 VPN,即新的 VPN 隧道连接的端点。

如果您要连接两个 VPC 网络,则第二个 VPC 网络可以存在于同一个 Google Cloud 项目中,也可以存在于单独的 Google Cloud 项目中。

控制台

如需指定对等高可用性 VPN 网关资源,请按照以下步骤操作:

  1. 创建 VPN 页面上的对等 VPN 网关部分中,选择 Google Cloud VPN 网关
  2. 项目字段中,选择包含新网关的 Google Cloud 项目。
  3. VPN 网关名称字段中,选择您在创建高可用性 VPN 网关中创建的第二个高可用性 VPN。
  4. 继续创建 VPN 隧道。

gcloud

您在创建高可用性 VPN 网关步骤创建第二个高可用性 VPN 网关时,创建了对等 VPN 网关资源。

创建高可用性 VPN 隧道时,您可以将此高可用性 VPN 网关指定为对等 VPN 网关资源。

API

您在创建高可用性 VPN 网关步骤创建第二个高可用性 VPN 网关时,创建了对等 VPN 网关资源。

创建高可用性 VPN 隧道时,您可以将此高可用性 VPN 网关指定为对等 VPN 网关资源。

创建 Cloud Router 路由器

控制台

Cloud Router 路由器下,创建指定以下选项的 Cloud Router(如果尚未创建)。如果 Cloud Router 路由器尚未管理与“合作伙伴互连”连接关联的 VLAN 连接的 BGP 会话,则可以使用现有的 Cloud Router 路由器。

  1. 要创建新的 Cloud Router 路由器,请指定以下内容:

    • 名称
    • 可选的说明
    • 新路由器的 Google ASN

    您可以使用未在网络中其他位置使用的任何专用 ASN(645126553442000000004294967294)。Google ASN 用于同一个 Cloud Router 路由器上的所有 BGP 会话,且以后不能更改 ASN。

  2. 如需创建新路由器,请点击创建

gcloud

以下说明假定您尚未创建用于管理高可用性 VPN 隧道的 BGP 会话的 Cloud Router 路由器。您可以在每个 VPC 网络中使用现有的 Cloud Router 路由器,除非这些路由器已经为与合作伙伴互连连接关联的 VLAN 连接管理 BGP 会话。

如需创建两个 Cloud Router 路由器,请完成以下命令序列:

  • REGION 的每个网络中创建一个 Cloud Router 路由器。

    在以下命令中,替换以下选项:

    • PEER_ASN_1PEER_ASN_2:您尚未使用的任何专用 ASN(645126553442000000004294967294)。对于 ROUTER_NAME_1 的两个接口,此示例使用 ASN 65001,对于 ROUTER_NAME_2 的两个接口,此示例使用 ASN 65002
    • 将所有其他选项替换为您之前使用的值。

    创建第一个路由器

    gcloud compute routers create ROUTER_NAME_1 \
       --region=REGION \
       --network=NETWORK_1 \
       --asn=PEER_ASN_1
    

    您创建的路由器类似于以下示例输出:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    NAME       REGION        NETWORK
    router-a   us-central1   network-a
    

    创建第二个路由器

    gcloud compute routers create ROUTER_NAME_2 \
       --region=REGION \
       --network=NETWORK_2 \
       --asn=PEER_ASN_2
    

    您创建的路由器类似于以下示例输出:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    NAME       REGION        NETWORK
    router-b   us-central1   network-b
    

API

如果您已在每个高可用性 VPN 网关所在的每个 VPC 网络中创建了 Cloud Router 路由器,则可以使用这些 Cloud Router 路由器,无需新建。但是,如果 Cloud Router 路由器为与合作伙伴互连连接关联的 VLAN 连接管理 BGP 会话,则创建新的 Cloud Router 路由器。

如需创建 Cloud Router 路由器,请向 routers.insert 方法发出 POST 请求。

 POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers
   {
     "name": "router-a",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/network-a"
   }

创建 VPN 隧道

控制台

如需创建 VPN 隧道,请按以下步骤操作:

  1. 高可用性下,选择一对隧道或一个连接到其他高可用性 VPN 网关的隧道:

    • 如果您选择创建一对 VPN 隧道(推荐),请配置创建 VPN 页面底部出现的两个隧道对话框。

    • 如果您选择创建一个 VPN 隧道,您可以在创建 VPN 页面的其余部分配置单个隧道。但是,您必须创建第二个隧道,才能让另一个高可用性 VPN 网关获得服务等级协议 (SLA) 承诺的 99.99% 的可用性。稍后,您可以按照此过程的末尾所述添加第二个隧道。

  2. 在同一页面上或在页面底部的每个隧道对话框中,完成以下步骤。

  3. 如果您要配置一个隧道,请在关联的 Cloud VPN 网关接口下,针对此网关选择高可用性 VPN 接口和 IP 地址组合,以将其与其他高可用性 VPN 网关上的网关接口关联。对于双隧道配置,此选项和关联的对等 VPN 网关接口选项均不可用,因为已为您配置了正确的接口组合。

    1. 指定隧道的名称
    2. 指定可选的说明
    3. 指定 IKE 版本。我们建议使用 IKEv2。如需允许 IPv6 流量,您必须选择 IKEv2。
    4. 使用预共享密钥(共享密钥)指定 IKE 预共享密钥,该密钥必须与您在对等网关上创建的合作伙伴隧道的预共享密钥相对应。如果您尚未在对等 VPN 网关上配置预共享密钥并希望生成预共享密钥,请点击生成并复制。请确保将预共享密钥记录在安全位置,因为在创建 VPN 隧道后将无法检索该密钥。
    5. 点击完成
    6. 创建 VPN 页面上,为其余的隧道对话框重复隧道创建步骤。
  4. 配置完所有隧道后,点击创建并继续

gcloud

如需在每个高可用性 VPN 网关上创建两个 VPN 隧道,请完成以下命令序列。

  • 您从 GW_NAME_1interface 0 创建的隧道必须连接到与 NETWORK_2GW_NAME_2interface 0 相关联的外部 IP 地址。
  • GW_NAME_1interface 1 中的隧道必须连接到与 GW_NAME_2interface 1 关联的外部 IP 地址。
  • NETWORK_1 中的 GW_NAME_1 上创建 VPN 隧道时,请指定 NETWORK_2GW_NAME_2 的信息。Google 会自动将 interface 0GW_NAME_1 隧道与 GW_NAME_2 中的 interface 0 连接,并将 GW_NAME_1interface 1 连接到 GW_NAME_2interface 1

    GW_NAME_1 上创建两个隧道

    • NETWORK_1GW_NAME_1 的两个接口上各创建一个 VPN 隧道。

      在以下命令中,替换以下选项:

      • TUNNEL_NAME_GW1_IF0TUNNEL_NAME_GW1_IF1:源自 GW_NAME_1 的每条隧道的名称;通过添加网关接口名称为隧道命名有助于以后识别隧道
      • GW_NAME_2--peer-gcp-gateway 的值
      • REGIONGW_NAME_1 所在的区域
      • 可选:--vpn-gateway-region 是运行高可用性 VPN 网关的区域。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认区域属性值。
      • IKE_VERS2 表示 IKEv2;两个隧道都连接到另一个高可用性 VPN 网关,因此 Google 建议使用 IKEv2。如需允许 IPv6 流量,您必须使用 IKEv2。
      • SHARED_SECRET:您的预共享密钥(共享密钥),该密钥必须与您在 interface 0interface 1 上通过 GW_NAME_2 创建的相应隧道使用的预共享密钥相同;有关建议,请参阅生成强预共享密钥
      • INT_NUM_0GW_NAME_1 上第一个接口的编号 0
      • INT_NUM_1GW_NAME_1 上第二个接口的编号 1
      • 如果 peer-gcp-gateway 位于与 VPN 隧道和本地 VPN 网关不同的项目中,则可以使用 --peer-gcp-gateway 选项作为完整 URI 或相对名称来指定该项目。以下示例选项是相对名称:
        --peer-gcp-gateway projects/other-project/regions/us-central1/vpnGateways/ha-vpn-gw-b
        
      • --peer-gcp-gateway-region 是 VPN 隧道所连接的对等端高可用性 VPN 网关所在的区域,必须与 VPN 隧道位于同一区域。如果未指定,则系统会自动设置区域。

      GW_NAME_1 INT_NUM_0 上创建第一个隧道

      gcloud compute vpn-tunnels create TUNNEL_NAME_GW1_IF0 \
          --peer-gcp-gateway=GW_NAME_2 \
          --region=REGION \
          --ike-version=IKE_VERS \
          --shared-secret=SHARED_SECRET \
          --router=ROUTER_NAME_1 \
          --vpn-gateway=GW_NAME_1 \
          --interface=INT_NUM_0
      

      GW_NAME_1 INT_NUM_1 上创建第二个隧道

      gcloud compute vpn-tunnels create TUNNEL_NAME_GW1_IF1 \
          --peer-gcp-gateway=GW_NAME_2 \
          --region=REGION \
          --ike-version=IKE_VERS \
          --shared-secret=SHARED_SECRET \
          --router=ROUTER_NAME_1 \
          --vpn-gateway=GW_NAME_1 \
          --interface=INT_NUM_1
      

      命令输出类似于以下示例:

      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-0].
      NAME                 REGION        VPN_GATEWAY   VPN_INTERFACE  PEER_ADDRESS
      tunnel-a-to-b-if-0   us-central1   ha-vpn-gw-a   0          ha-vpn-gw-b
      
      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-1].
      NAME                 REGION        VPN_GATEWAY   VPN_INTERFACE  PEER_ADDRESS
      tunnel-a-to-b-if-1   us-central1   ha-vpn-gw-a   1          ha-vpn-gw-b
      

    GW_NAME_2 上创建两个隧道

    • NETWORK_2GW_NAME_2 的两个接口上各创建一个 VPN 隧道。

      • 您从 GW_NAME_2interface 0 创建的隧道必须连接到与 NETWORK_1GW_NAME_1interface 0 相关联的外部 IP 地址。
      • GW_NAME_2interface 1 中的隧道必须连接到与 GW_NAME_1interface 1 关联的外部 IP 地址。

      在以下命令中,替换以下选项:

      • REGIONGW_NAME_2 所在的区域
      • 可选:--vpn-gateway-region 是运行 VPN 网关的区域。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认区域属性值。
      • TUNNEL_NAME_GW2_IF0TUNNEL_NAME_GW2_IF1:源自 GW_NAME_2 的每条隧道的名称;通过添加网关接口名称为隧道命名有助于以后识别隧道
      • GW_NAME_1--peer-gcp-gateway 的值;--peer-gcp-gateway-region 的值必须与 VPN 隧道位于同一区域。如果未指定,则系统会自动设置该值。在此示例中,区域为 REGION
      • IKE_VERS2 表示 IKEv2;这些隧道连接到上一步创建的两个隧道,因此它们必须使用相同的 IKE 版本(Google 建议使用 IKEv2)。如需允许 IPv6 流量,您必须使用 IKEv2。
      • SHARED_SECRET:您的预共享密钥(共享密钥),必须与您在 GW_NAME_1 的每个接口上创建的合作伙伴隧道的预共享密钥相对应;如需查看建议,请参阅生成强预共享密钥
      • GW_NAME_2:您在网关配置步骤中配置的第二个网关的名称
      • INT_NUM_0GW_NAME_2 上第一个接口的编号 0
      • INT_NUM_1GW_NAME_2 上第二个接口的编号 1
      • 如果 peer-gcp-gateway 位于与 VPN 隧道和本地 VPN 网关不同的项目中,则可以使用 --peer-gcp-gateway 选项作为完整 URI 或相对名称来指定该项目。以下示例选项是相对名称:
        --peer-gcp-gateway projects/other-project/regions/us-central1/vpnGateways/ha-vpn-gw-b
        
      • --peer-gcp-gateway-region 是 VPN 隧道所连接的对等端高可用性 VPN 网关所在的区域,必须与 VPN 隧道位于同一区域。如果未指定,则系统会自动设置区域。

      GW_NAME_2 INT_NUM_0 上创建第一个隧道

      gcloud compute vpn-tunnels create TUNNEL_NAME_GW2_IF0 \
          --peer-gcp-gateway=GW_NAME_1 \
          --region=REGION \
          --ike-version=IKE_VERS \
          --shared-secret=SHARED_SECRET \
          --router=ROUTER_NAME_2 \
          --vpn-gateway=GW_NAME_2 \
          --interface=INT_NUM_0
      

      GW_NAME_2 INT_NUM_1 上创建第二个隧道

      gcloud compute vpn-tunnels create TUNNEL_NAME_GW2_IF1 \
          --peer-gcp-gateway=GW_NAME_1 \
          --region=REGION \
          --ike-version=IKE_VERS \
          --shared-secret=SHARED_SECRET \
          --router=ROUTER_NAME_2 \
          --vpn-gateway=GW_NAME_2 \
          --interface=INT_NUM_1
      

      命令输出类似于以下示例:

      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-0].
      NAME                 REGION       VPN_GATEWAY   VPN_INTERFACE  PEER_ADDRESS
      tunnel-b-to-a-if-0   us-central1  ha-vpn-gw-b   0          ha-vpn-gw-a
      
      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-1].
      NAME                 REGION       VPN_GATEWAY   VPN_INTERFACE  PEER_ADDRESS
      tunnel-b-to-a-if-1   us-central1  ha-vpn-gw-b   1          ha-vpn-gw-a
      

    完成此步骤后,请等待几分钟,然后检查每个 VPN 隧道的状态

    仅当对应的合作伙伴隧道同样可用且配置正确时,VPN 隧道的状态才会更改为 Established。此外,还必须在它们之间协商有效的 IKE 和子安全关联 (SA)。

    例如,仅当 ha-vpn-gw-b 上的 tunnel-b-to-a-if-0 已配置且可用时,才能在 ha-vpn-gw-a 上建立 tunnel-a-to-b-if-0

API

如需为高可用性 VPN 网关的两个接口各创建一个 VPN 隧道,请向 vpnTunnels.insert 方法发出 POST 请求。

  1. 如需创建第一个隧道,请运行以下命令:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnTunnels
    {
     "name": "ha-vpn-gw-a-tunnel-0",
     "ikeVersion": 2,
     "peerGcpGateway": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnGateways/ha-vpn-gw-b",
     "router": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/router-a",
     "sharedSecret": "SECRET_1",
     "vpnGateway": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnGateways/ha-vpn-gw-a",
     "vpnGatewayInterface": 0
    }
    

    如果您计划在与此隧道关联的 BGP 会话中启用 IPv6,则必须为 ikeVersion 指定 2

  2. 如需创建第二个隧道,请重复上述命令,但更改以下参数:

    • name:例如,ha-vpn-gw-a-tunnel-1
    • sharedSecretsharedSecretHash(如果需要)
    • vpnGatewayInterface:更改为其他高可用性 VPN 网关接口的值 - 在此示例中,请将此值更改为 1

接下来,为连接到第一个高可用性 VPN 网关的第二个高可用性 VPN 网关创建两个隧道。

  1. 如需在第二个高可用性 VPN 网关上创建第一个隧道,请运行以下命令:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnTunnels
    {
     "name": "ha-vpn-gw-b-tunnel-0",
     "ikeVersion": 2,
     "peerGcpGateway": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnGateways/ha-vpn-gw-a",
     "router": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/router-b",
     "sharedSecret": SECRET_1,
     "vpnGateway": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnGateways/ha-vpn-gw-b",
     "vpnGatewayInterface": 0
    }
    

    使用您为第一个网关 (ha-vpn-gw-a-tunnel-0) 的第一个隧道指定的相同 sharedSecret

    如果您计划在与此隧道关联的 BGP 会话中启用 IPv6,则必须为 ikeVersion 指定 2

  2. 如需在第二个高可用性 VPN 网关上创建第二个隧道,请重复上述命令,但更改以下参数:

    • name:例如 ha-vpn-gw-b-tunnel-1
    • sharedSecretsharedSecretHash:指定在第一个网关上创建第二个隧道时使用的 sharedSecretsharedSecretHash
    • vpnGatewayInterface:更改为其他高可用性 VPN 网关接口的值 - 在此示例中,请将此值更改为 1

创建 BGP 会话

对于每个高可用性 VPN 隧道,您可以创建 IPv4 BGP 会话和/或 IPv6 BGP 会话(预览版)。

如需查看特定说明,请选择适合您的高可用性 VPN 网关和 VPC 网络流量需求的 BGP 会话类型。

BGP 会话类型 高可用性 VPN 网关 VPC 网络 是否允许 MP-BGP?
IPv4 BGP 会话 仅 IPv4 或双栈 仅 IPv4 或双栈
IPv6 BGP 会话 双栈 双栈
IPv4 和 IPv6 BGP 会话 双栈 双栈

如需在高可用性 VPN 隧道的 BGP 会话中使用多协议 BGP (MP-BGP),必须使用双栈高可用性 VPN 网关。

您还必须使用双栈高可用性 VPN 网关在同一高可用性 VPN 隧道中设置 IPv4 和 IPv6 BGP 会话。但是,您无法在单个 IPv4 和 IPv6 BGP 会话中启用双栈路由交换 (MP-BGP)。

IPv4 BGP 会话

控制台

如要创建 BGP 会话,请按照以下步骤操作:

  1. 如果您不想立即配置 BGP 会话,请点击稍后配置 BGP 会话,这将打开摘要和提醒页面。
  2. 如果您要立即配置 BGP 会话,请在第一个 VPN 隧道上点击配置
  3. 创建 BGP 会话页面上,完成以下步骤:
    1. 指定 BGP 会话的名称
    2. 指定为对等 VPN 网关配置的对等 ASN
    3. 可选:指定通告路由的优先级
    4. 可选:选择启用 IPv6 以允许通过 BGP 会话交换 IPv6 地址前缀。
    5. 分配 BGP IPv4 地址下,选择自动手动。如果您选择手动,您可以指定 Cloud Router BGP IP 地址和 BGP 对等 IP 地址。确保 IPv4 地址满足以下要求:
      • 每个 BGP IP 地址必须属于适合 169.254.0.0/16 的相同 /30 CIDR。
      • 每个 BGP IP 地址不能是 /30 CIDR 中的第一个(网络)或最后一个(广播)地址。
      • 每个 BGP 会话的每个 BGP IP 地址范围在 VPC 网络的所有区域中的所有 Cloud Router 路由器中必须唯一。
    6. 可选:如果您启用了 IPv6,则可以自动或手动分配 IPv6 下一个跃点地址。如需手动分配地址,请执行以下操作:
      1. 分配 IPv6 下一个跃点下,选择手动
      2. 输入 Cloud Router 路由器 IPv6 下一个跃点的 IPv6 地址。此地址是 Cloud Router 通告的 IPv6 路由的下一个跃点地址。该地址必须在 2600:2d00:0:2::/63 范围内。
      3. 输入对等 IPv6 下一个跃点的 IPv6 地址。此地址是 Cloud Router 从 BGP 对等端获知的 IPv6 路由的下一个跃点地址。IPv6 下一个跃点地址必须在 2600:2d00:0:2::/63 范围内。
    7. 可选:对于 MD5 身份验证,选择启用。这样,您就可以对 Cloud Router 路由器及其对等方之间的 BGP 会话进行身份验证。如需了解如何配置 MD5 身份验证,请参阅使用 MD5 身份验证。您也可以选择稍后启用 MD5 身份验证。
    8. 可选:点击通告的路由列表,然后创建自定义路由。
    9. 点击保存并继续
  4. 针对网关中配置的其余隧道重复上述步骤。对于每个隧道,请使用不同的 Cloud Router BGP IP 地址和 BGP 对等 IP 地址。
  5. 配置完所有 BGP 会话后,请点击保存 BGP 配置

gcloud

在本部分中,您将配置 Cloud Router 接口和 BGP 对等端;下表概述了这些接口和对等端。同时介绍了您为每个接口指定的 IPv4 范围和对等 IPv4 地址之间的关系。

例如,router-1 的第一个接口的 IPv4 地址为 169.254.0.1,这意味着 router-1 是 IPv4 子网 169.254.0.0/30 中的第一个主机。另一个 Cloud Router router-2router-1 的 BGP 对等端。系统为 router-2 的第一个接口分配了 169.254.0.2,这是 IPv4 子网 169.254.0.0/30 中的第二个主机。因此,router-1 的对等 IPv4 BGP 地址为 169.254.0.2router-2 的对等 IPv4 BGP 地址为 169.254.0.1

下表还显示了 IPv6 下一个跃点地址配置的示例。

路由器 接口名称 IPv4 范围 对等 IPv4 地址 对等 ASN IPv6 下一个跃点
地址
对等 IPv6 下一个跃点
地址
router-1 if-tunnel-a-to-b-if-0 169.254.0.1/30 169.254.0.2 65002 2600:2d00:0:2::1 2600:2d00:0:2::2
router-2 if-tunnel-b-to-a-if-0 169.254.0.2/30 169.254.0.1 65001 2600:2d00:0:2::2 2600:2d00:0:2::1
router-1 if-tunnel-a-to-b-if-1 169.254.1.1/30 169.254.1.2 65002 2600:2d00:0:2:1::1 2600:2d00:0:2:1::2
router-2 if-tunnel-b-to-a-if-1 169.254.1.2/30 169.254.1.1 65001 2600:2d00:0:2:1::2 2600:2d00:0:2:1::1

如需创建 Cloud Router 路由器接口和 BGP 对等端,请完成以下命令序列。

  1. 在隧道 TUNNEL_NAME_GW1_IF0ROUTER_NAME_1 上创建接口和 BGP 对等端

    此接口将 GW_1interface 0 上的 TUNNEL_NAME_GW1_IF0 连接到 GW_2interface 0

    在以下命令中,替换以下选项:

    • ROUTER_1_INTERFACE_NAME_0:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • IP_VERSION:指定 IPV4 或保留为未指定。如果您未指定此项,则默认设置为 IPV4
    • IP_ADDRESS_1:尚未使用的来自 169.254.0.0/16 范围的 BGP IPv4 地址;此示例使用 169.254.0.1。如果您省略此标志,并且未手动分配 BGP IPv4 地址,Google Cloud 会自动为您分配地址。
    • MASK_LENGTH:指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。
    • PEER_NAME_GW1_IF0:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • PEER_IP_ADDRESS_1:尚未使用的来自 169.254.0.0/16 的 BGP IPv4 地址;本示例使用 169.254.0.2。如果您之前没有专门分配 BGP IPv4 地址 IP_ADDRESS_1,则省略此选项,且 Google Cloud 会自动为您分配一个匹配的 BGP 对等 IPv4 地址。如果您手动指定了 IP_ADDRESS_1,则也必须手动配置此选项。
    • PEER_ASN_2:用于其他 Cloud Router 路由器上所有接口的 ASN 编号 ROUTER_NAME_2;此示例使用 ASN 编号 65002
    • 可选:如果您使用 MP-BGP 创建 IPv4 BGP 会话,请在运行 add-bgp-peer 命令时指定 --enable-ipv6 以启用 IPv6 路由交换。您还可以选择自动或手动配置 IPv6 下一个跃点地址。如需手动配置下一个跃点地址,请替换以下两项:

      • IPV6_NEXTHOP_ADDRESS_1:Cloud Router 通告的 IPv6 路由的下一个跃点地址;该地址必须在范围 2600:2d00:0:2::/63 内。
      • PEER_IPV6_NEXTHOP_ADDRESS_1:Cloud Router 从 BGP 对等端获知的 IPv6 路由的下一个跃点地址;下一个跃点地址必须在 2600:2d00:0:2::/63 范围内。

      如果您未指定 IPv6 下一个跃点地址,Google Cloud 会自动分配 2600:2d00:0:2::/63 范围内未使用的地址。

    • AUTHENTICATION_KEY:用于在 PEER_NAME_GW1_IF0 上进行 MD5 身份验证的密钥。如需详细了解此可选功能,请参阅使用 MD5 身份验证

    TUNNEL_NAME_GW1_IF0 创建 Cloud Router 接口

    如需在 Cloud Router 上创建具有 IPv4 地址的接口,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_1 \
        --interface-name=ROUTER_1_INTERFACE_NAME_0 \
        --ip-address=IP_ADDRESS_1 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
        --region=REGION
    

    TUNNEL_NAME_GW1_IF0 创建 BGP 对等端

    以下示例命令会创建一个启用 IPv6 的 BGP 对等端,其中包含手动指定的 IPv4 BGP 地址和 IPv6 下一个跃点地址:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
        --peer-name=PEER_NAME_GW1_IF0 \
        --interface=ROUTER_1_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_1 \
        --peer-asn=PEER_ASN_2 \
        --region=REGION \
        --enable-ipv6 \
        --ipv6-nexthop-address=IPV6_NEXTHOP_ADDRESS_1 \
        --peer-ipv6-nexthop-address=PEER_IPV6_NEXTHOP_ADDRESS_1
    

    以下命令会创建一个未启用 IPv6 的 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
        --peer-name=PEER_NAME_GW1_IF0 \
        --interface=ROUTER_1_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_1 \
        --peer-asn=PEER_ASN_2 \
        --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志。使用此字段提供您的密钥:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
        --peer-name=PEER_NAME_GW1_IF0 \
        --interface=ROUTER_1_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_1 \
        --peer-asn=PEER_ASN_2 \
        --region=REGION \
        --md5-authentication-key=AUTHENTICATION_KEY
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    
  2. 在隧道 TUNNEL_NAME_GW1_IF1ROUTER_NAME_1 上创建接口和 BGP 对等端

    此接口用于将 GW_1interface 1 上的 TUNNEL_NAME_GW1_IF1 连接到 GW_2interface 1

    在以下命令中,替换以下选项:

    • ROUTER_1_INTERFACE_NAME_1:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • IP_VERSION:指定 IPV4 或保留为未指定
    • IP_ADDRESS_2:可选:尚未使用的来自 169.254.0.0/16 的 BGP IPv4 地址;本示例使用 169.254.1.1。如果您省略此标志,并且未手动分配 BGP IPv4 地址,Google Cloud 会自动为您分配地址
    • MASK_LENGTH:指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。
    • PEER_NAME_GW1_IF1:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • PEER_IP_ADDRESS_2:尚未使用的来自 169.254.0.0/16 范围的 BGP IPv4 地址;此示例使用 169.254.1.2。如果您没有专门分配 BGP IPv4 地址 IP_ADDRESS_2,则省略此选项,且 Google Cloud 会自动为您分配一个匹配的 BGP 对等 IPv4 地址。如果您手动指定了 IP_ADDRESS_2,则也必须手动配置此选项。
    • PEER_ASN_2:用于其他 Cloud Router 路由器上所有接口的 ASN 编号 ROUTER_NAME_2;此示例使用 ASN 编号 65002
    • 可选:如果您使用 MP-BGP 配置 IPv4 BGP 会话,请在 add-bgp-peer 命令中指定 --enable-ipv6 以启用 IPv6 路由交换。您还可以选择手动配置 IPv6 下一个跃点地址。如需配置下一个跃点地址,请替换以下两项:

      • IPV6_NEXTHOP_ADDRESS_2:Cloud Router 通告的 IPv6 路由的下一个跃点地址;该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内
      • PEER_IPV6_NEXTHOP_ADDRESS_2:Cloud Router 从 BGP 对等端获知的 IPv6 路由的下一个跃点地址;该地址必须在 2600:2d00:0:2::/642600:2d00:0:3::/64 范围内

      如果您未指定 IPv6 下一个跃点地址,Google Cloud 会自动分配 2600:2d00:0:2::/642600:2d00:0:3::/64 范围中的未用地址。

    • AUTHENTICATION_KEY_2:用于在 PEER_NAME_GW1_IF1 上进行 MD5 身份验证的密钥;如需详细了解此可选功能,请参阅使用 MD5 身份验证

    TUNNEL_NAME_GW1_IF1 创建 Cloud Router 接口

    如需创建具有 IPv4 地址的接口,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_1 \
       --interface-name=ROUTER_1_INTERFACE_NAME_1 \
       --ip-address=IP_ADDRESS_2 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
       --region=REGION
    

    TUNNEL_NAME_GW1_IF1 创建 BGP 对等端

    以下示例命令会创建一个启用 IPv6 的 BGP 对等端,其中包含手动指定的 IPv4 BGP 地址和 IPv6 下一个跃点地址:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1  \
       --peer-name=PEER_NAME_GW1_IF1 \
       --interface=ROUTER_1_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_2 \
       --peer-asn=PEER_ASN_2 \
       --region=REGION \
       --enable-ipv6 \
       --ipv6-nexthop-address=IPV6_NEXTHOP_ADDRESS_1 \
       --peer-ipv6-nexthop-address=PEER_IPV6_NEXTHOP_ADDRESS_1
    

    以下命令会创建一个未启用 IPv6 路由交换的 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
        --peer-name=PEER_NAME_GW1_IF1 \
        --interface=ROUTER_1_INTERFACE_NAME_1 \
        --peer-ip-address=PEER_IP_ADDRESS_2 \
        --peer-asn=PEER_ASN_2 \
        --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志提供您的密钥:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
       --peer-name=PEER_NAME_GW1_IF1 \
       --interface=ROUTER_1_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_2 \
       --peer-asn=PEER_ASN_2 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY_2
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    
  3. 验证 ROUTER_NAME_1 的设置

    gcloud compute routers describe ROUTER_NAME_1 \
        --region=REGION
    

    命令输出类似于以下示例:

     bgp:
       advertisemode: DEFAULT
       asn: 65001
       keepaliveInterval: 20
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv6: true
       interfaceName: if-tunnel-a-to-b-if-0
       ipAddress: 169.254.0.1
       ipv6NexthopAddress: 2600:2d00:0:2:0:0:0:1
       name: bgp-peer-tunnel-a-to-b-if-0
       peerAsn: 65002
       peerIpAddress: 169.254.0.2
       peerIpv6NexthopAddress: 2600:2d00:0:2:0:0:0:2
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv6: true
       interfaceName: if-tunnel-a-to-b-if-1
       ipAddress: 169.254.1.1
       ipv6NexthopAddress: 2600:2d00:0:2:0:0:1:1
       name: bgp-peer-tunnel-a-to-b-if-1
       peerAsn: 65002
       peerIpAddress: 169.254.1.2
       peerIpv6NexthopAddress: 2600:2d00:0:2:0:0:1:2
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: 169.254.0.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-0
       name: if-tunnel-a-to-b-if-0
     — ipRange: 169.254.1.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-1
       name: if-tunnel-a-to-b-if-1
     kind: compute#router
     name: router-a
     network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/network-a
     region: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-a
    
  4. 在隧道 TUNNEL_NAME_GW2_IF0ROUTER_NAME_2 上创建接口和 BGP 对等端

    此接口将 GW_2interface 0 上的 TUNNEL_NAME_GW2_IF0 连接到 GW_1interface 0

    在以下命令中,替换以下选项:

    • ROUTER_2_INTERFACE_NAME_0:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • IP_VERSION:指定 IPV4 或保留为未指定。如果您未指定此项,则默认设置为 IPV4
    • IP_ADDRESS_3:如果您为 TUNNEL_NAME_GW1_IF0 手动配置了 PEER_IP_ADDRESS_1,请为 IP_ADDRESS_3 指定该值。如果 Google Cloud 自动分配了此对等 IPv4 地址,则必须找出哪个地址由 Google Cloud 分配。运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端 PEER_NAME_GW1_IF0 的输出中,使用 peerIpAddress 字段中显示的值。本示例使用 169.254.0.2
    • MASK_LENGTH:指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。
    • PEER_NAME_GW2_IF0:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • PEER_IP_ADDRESS_3:您之前在配置第一个网关和接口时使用的 BGP IPv4 地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您为 TUNNEL_NAME_GW1_IF0 创建的 BGP 对等端 PEER_NAME_GW1_IF0ipAddress 字段中显示的值。本示例使用 169.254.0.1
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001
    • 可选:如果您使用 IPv4 BGP 会话和 MP-BGP 创建 VPN 隧道,请在 add-bgp-peer 命令中指定 --enable-ipv6 以启用 IPv6 流量。您必须配置 IPv6 下一个跃点地址,以匹配为第一个网关配置的接口和 BGP 对等端。如需配置下一个跃点地址,请替换以下两项:

      • IPV6_NEXTHOP_ADDRESS_3:您之前在 PEER_IPV6_NEXTHOP_ADDRESS_1 中指定的 IPv6 路由的下一个跃点地址。如果您在 ROUTER_NAME_1 上为 TUNNEL_NAME_GW1_IF0 创建接口和 BGP 对等端时自动分配 IPv6 下一个跃点地址,则必须找出哪个 IPv6 下一个跃点地址由 Google Cloud 分配。运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF0 设置的 BPG 对等端 PEER_NAME_GW1_IF0 的输出。使用 peerIpv6NextHopAddress 字段中显示的值。本示例使用 2600:2d00:0:2:0:0:0:2
      • PEER_IPV6_NEXTHOP_ADDRESS_3:Cloud Router 路由器从 BGP 对等方获知的 IPv6 路由的下一个跃点地址。请使用您之前在 IPV6_NEXTHOP_ADDRESS_1 中指定的值。如果您自动分配了 IPv6 下一个跃点地址,请运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF0 设置的 BPG 对等端的输出。使用 Ipv6NextHopAddress 字段中显示的值。 本示例使用 2600:2d00:0:2:0:0:0:1
    • AUTHENTICATION_KEY:用于在 PEER_NAME_GW2_IF0 上进行 MD5 身份验证的密钥

    TUNNEL_NAME_GW2_IF0 创建 Cloud Router 接口

    如需创建具有 IPv4 地址的接口,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_2 \
        --interface-name=ROUTER_2_INTERFACE_NAME_0 \
        --ip-address=IP_ADDRESS_3 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW2_IF0 \
        --region=REGION
    

    TUNNEL_NAME_GW2_IF0 创建 BGP 对等端

    以下示例命令会创建一个启用了 IPv6 路由交换的 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF0 \
        --interface=ROUTER_2_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_3 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION \
        --enable-ipv6 \
        --ipv6-nexthop-address=IPV6_NEXTHOP_ADDRESS \
        --peer-ipv6-nexthop-address=PEER_IPV6_NEXTHOP_ADDRESS
    

    以下命令会创建一个未启用 IPv6 路由交换的 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF0 \
        --interface=ROUTER_2_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_3 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION
    

    或者,如果将 ROUTER_NAME_1 配置为对 PEER_NAME_GW1_IF0 使用 MD5 身份验证,请将 ROUTER_NAME_2 配置为使用 MD5 身份验证,如下所示:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF0 \
       --interface=ROUTER_2_INTERFACE_NAME_0 \
       --peer-ip-address=PEER_IP_ADDRESS_3 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    
  5. 在隧道 TUNNEL_NAME_GW2_IF1ROUTER_NAME_2 上创建一个具有 IPv4 地址和 BGP 对等端的接口

    此接口将 GW_2interface 1 上的 TUNNEL_NAME_GW2_IF1 连接到 GW_1interface 1

    在以下命令中,替换以下选项:

    • ROUTER_2_INTERFACE_NAME_1:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • IP_VERSION:指定 IPV4 或保留为未指定。如果您未指定此项,则默认设置为 IPV4
    • IP_ADDRESS_4:如果您为 TUNNEL_NAME_GW1_IF1PEER_IP_ADDRESS_2 手动分配 BGP IPv4 地址,则为 IP_ADDRESS_4 指定该值。如果 Google Cloud 自动分配了 IPv4 地址,则必须找出哪个地址由 Google Cloud 分配。运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端 PEER_NAME_GW1_IF1 的输出中,使用 peerIpAddress 字段中显示的值。本示例使用 169.254.1.2
    • MASK_LENGTH:对于具有 IPv4 地址的接口,请指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。对于具有 IPv6 地址的接口,请将掩码长度指定为 126 或更短。
    • PEER_NAME_GW2_IF1:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • PEER_IP_ADDRESS_4:您在配置第一个网关和接口时指定为 IP_ADDRESS_2 的 IP 地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您为 TUNNEL_NAME_GW1_IF1 创建的 BGP 对等端的 ipAddress 字段中显示的值。本示例使用 169.254.1.1
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001
    • 可选:如果您使用 MP-BGP 配置 IPv4 BGP 会话,请在 add-bgp-peer 命令中指定 --enable-ipv6 以启用 IPv6 路由交换。您还可以选择手动配置 IPv6 下一个跃点地址。如需配置下一个跃点地址,请替换以下两项:

      • IPV6_NEXTHOP_ADDRESS_4:您之前在 PEER_IPV6_NEXTHOP_ADDRESS_2 中指定的 IPv6 路由的下一个跃点地址。如果您在 ROUTER_NAME_1 上为 TUNNEL_NAME_GW1_IF1 创建接口和 BGP 对等端时自动分配 IPv6 下一个跃点地址,则必须找出哪个 IPv6 下一个跃点地址由 Google Cloud 分配。运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF1 设置的 BPG 对等端 PEER_NAME_GW1_IF1 的输出。使用 peerIpv6NextHopAddress 字段中显示的值。
      • PEER_IPV6_NEXTHOP_ADDRESS_3:Cloud Router 路由器从 BGP 对等方获知的 IPv6 路由的下一个跃点地址。请使用您之前在 IPV6_NEXTHOP_ADDRESS_2 中指定的值。如果您自动分配了 IPv6 下一个跃点地址,请运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF1 设置的 BPG 对等端 PEER_NAME_GW1_IF1 的输出。使用 Ipv6NextHopAddress 字段中显示的值。本示例使用 2600:2d00:0:2:0:0:1:1
    • AUTHENTICATION_KEY_2:用于在 PEER_NAME_GW2_IF1 上进行 MD5 身份验证的密钥

    TUNNEL_NAME_GW2_IF1 创建 Cloud Router 接口

    gcloud compute routers add-interface ROUTER_NAME_2 \
       --interface-name=ROUTER_2_INTERFACE_NAME_1 \
       --ip-address=IP_ADDRESS_4 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_GW2_IF1 \
       --region=REGION
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    

    TUNNEL_NAME_GW2_IF1 创建 BGP 对等端

    以下示例命令会创建一个启用了 IPv6 路由交换的 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF1 \
       --interface=ROUTER_2_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --enable-ipv6 \
       --ipv6-nexthop-address=IPV6_NEXTHOP_ADDRESS \
       --peer-ipv6-nexthop-address=PEER_IPV6_NEXTHOP_ADDRESS
    

    以下命令会创建一个未启用 IPv6 路由交换的 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF1 \
        --interface=ROUTER_2_INTERFACE_NAME_1 \
        --peer-ip-address=PEER_IP_ADDRESS_4 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION
    

    或者,如果将 ROUTER_NAME_1 配置为对 PEER_NAME_GW1_IF1 使用 MD5 身份验证,请将 ROUTER_NAME_2 配置为使用 MD5 身份验证,如下所示:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF1 \
       --interface=ROUTER_2_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY_2
    
    命令输出类似于以下示例:
    Updated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    
  6. 验证 ROUTER_NAME_2 的设置

    gcloud compute routers describe ROUTER_NAME_2  \
       --region=REGION
    

    命令输出类似于以下示例:

     bgp:
       advertiseMode: DEFAULT
       asn: 65002
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv6: true
       interfaceName: if-tunnel-b-to-a-if-0
       ipAddress: 169.254.0.2
       ipv6NexthopAddress: 2600:2d00:0:2:0:0:0:2
       name: bgp-peer-tunnel-b-to-a-if-0
       peerAsn: 65001
       peerIpAddress: 169.254.0.1
       peerIpv6NexthopAddress: 2600:2d00:0:2:0:0:0:1
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv6: true
       interfaceName: if-tunnel-b-to-a-if-1
       ipAddress: 169.254.1.2
       ipv6NexthopAddress: 2600:2d00:0:2:0:0:1:2
       name: bgp-peer-tunnel-b-to-a-if-1
       peerAsn: 65001
       peerIpAddress: 169.254.1.1
       peerIpv6NexthopAddress: 2600:2d00:0:2:0:0:1:1
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: 169.254.0.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-0
       name: if-tunnel-b-to-a-if-0
       — ipRange: 169.254.1.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-1
       name: if-tunnel-b-to-a-if-1
     kind: compute#router
     name: router-b
     network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/network-b
     region: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-b
    

API

  1. 如需创建 Cloud Router 接口,请向 routers.patch 方法或 routers.update 方法发出 PATCHUPDATE 请求。PATCH 仅更新您包含的参数。UPDATE 会更新 Cloud Router 的所有参数。为高可用性 VPN 网关上的每个 VPN 隧道创建一个 Cloud Router 接口。

    您指定的 BGP IPv4 地址范围在 VPC 网络所有区域中的所有 Cloud Router 间必须唯一。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "interfaces": [
       {
         "name": "if-tunnel-a-to-on-prem-if-0",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipRange": "169.254.0.1/30"
       }
     ]
    }
    
  2. 如需向每个 VPN 隧道的 Cloud Router 添加 BGP 对等端,请使用 routers.patch 方法routers.update 方法发出 PATCHUPDATE 请求。对于另一个 VPN 隧道,请重复此命令,但更改除 namepeerAsn 以外的所有选项。

    如需为高可用性 VPN 网关创建完整的 BGP 会话配置,请使用以下 API 命令:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "bgpPeers": [
       {
         "name": "bgp-peer-tunnel-a-to-on-prem-if-0",
         "interfaceName": "if-tunnel-a-to-on-prem-if-0",
         "ipAddress": "169.254.0.1",
         "peerIpAddress": "169.254.0.2",
         "peerAsn": 65002,
    
         "advertiseMode": "DEFAULT"
       }
     ]
    }
    

    如需为启用了 IPv6 的高可用性 VPN 网关创建完整的 BGP 会话配置,请使用以下 API 命令:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "bgpPeers": [
       {
         "name": "bgp-peer-tunnel-a-to-on-prem-if-0",
         "interfaceName": "if-tunnel-a-to-on-prem-if-0",
         "ipAddress": "169.254.0.1",
         "peerIpAddress": "169.254.0.2",
         "peerAsn": 65002,
    
         "advertiseMode": "DEFAULT"
         "enableIpv6": true
         "ipv6NexthopAddress: "2600:2d00:0:2:0:0:0:1"
         "peerIpv6NexthopAddress: "2600:2d00:0:2:0:0:0:2"
       }
     ]
    }
    

    如果要将会话配置为使用 MD5 身份验证,您的请求必须包含身份验证密钥,这意味着它必须同时提供密钥和密钥名称。创建 BGP 对等互连会话时,它还必须按名称引用密钥。例如:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
    "md5AuthenticationKeys": [
      {
       "name": "bgppeer-1-key",
       "key": "secret_key_value"
       }
    ],
    }
    {
    "bgpPeers": [
      {
       "interfaceName": "if-tunnel-a-to-on-prem-if-0",
       "ipAddress": "169.254.0.1",
       "name": "bgp-peer-tunnel-a-to-on-prem-if-0",
       "peerAsn": 65002,
       "peerIpAddress": "169.254.0.2",
       "advertiseMode": "DEFAULT",
       "md5AuthenticationKeyName": "bgppeer-1-key"
       }
     ],
    }
    

IPv6 BGP 会话

gcloud

在本部分中,您将配置 IPv6 Cloud Router 接口和 BGP 对等端;下表概述了这些接口和对等端。同时介绍了您为每个接口指定的 IPv6 BGP 范围和对等 IP 地址之间的关系。

例如,router-1 的第一个接口的 IPv6 地址为 fdff:1:1:1::1,这意味着 router-1 是 IPv6 子网 fdff:1:1:1::/112 中的第一个主机。另一个 Cloud Router router-2router-1 的 BGP 对等端。系统为 router-2 的第一个接口分配了 fdff:1:1:1::2,这是 IPv6 子网 fdff:1:1:1::/112 中的第二个主机。因此,router-1 的对等 IPv6 BGP 地址为 fdff:1:1:1::2router-2 的对等 IPv6 BGP 地址为 fdff:1:1:1::1

路由器 接口名称 IPv6 范围 对等 IPv6 地址 对等 ASN IPv6 下一个跃点
地址
对等 IPv4 下一个跃点
地址
router-1 if-tunnel-a-to-b-if-0 fdff:1:1:1::1/112 fdff:1:1:1::2 65002 169.254.12.1 169.254.12.2
router-2 if-tunnel-b-to-a-if-0 fdff:1:1:1::2/112 fdff:1:1:1::1 65001 169.254.12.2 169.254.12.1
router-1 if-tunnel-a-to-b-if-1 fdff:1:1:2::1/112 fdff:1:1:2::2 65002 169.254.13.1 169.254.13.2
router-2 if-tunnel-b-to-a-if-1 fdff:1:1:2::2/112 fdff:1:1:2::1 65001 169.254.13.2 169.254.13.1

如需创建 Cloud Router 接口和 BGP 对等端,请完成以下命令序列。

  1. 在隧道 TUNNEL_NAME_GW1_IF0ROUTER_NAME_1 上创建接口和 BGP 对等端

    此接口将 GW_1interface 0 上的 TUNNEL_NAME_GW1_IF0 连接到 GW_2interface 0

    在以下命令中,替换以下选项:

    • ROUTER_1_INTERFACE_NAME_0:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • IP_VERSIONIPV6;仅当您希望 Google Cloud 自动为此接口分配 IPv6 地址时,才需要此参数。如果要手动为此接口分配 IPv6 地址,则可以省略此标志。
    • IP_ADDRESS_1:尚未使用的来自 ffdf:1::/64 范围的 BGP IPv6 地址;此示例使用 ffdf:1:1:1::2。如果您省略此标志,并且未手动分配 IPv6 地址,Google Cloud 会自动为您分配地址。
    • MASK_LENGTH:指定 126 或短的掩码长度。
    • PEER_NAME_GW1_IF0:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • PEER_IP_ADDRESS_1:尚未使用的来自 ffdf:1::/64 范围的 BGP IPv6 地址;此示例使用 ffdf:1:1:1::1。如果您之前未分配特定 BGP IPv6 地址 IP_ADDRESS_1,也请忽略此选项,Google Cloud 会自动为您分配一个匹配的 BGP 对等 IPv6 地址。如果您手动指定了 IP_ADDRESS_1,则也必须手动配置此选项。
    • PEER_ASN_2:用于其他 Cloud Router 路由器上所有接口的 ASN 编号 ROUTER_NAME_2;此示例使用 ASN 编号 65002
    • 可选:如需启用使用 MP-BGP 的 IPv6 BGP 会话中的 IPv4 路由交换,请在运行 gcloud beta compute routers add-bgp-peer 命令时指定 --enable-ipv4。您还可以选择自动或手动配置 IPv4 下一个跃点地址。

      如需手动配置 IPv4 下一个跃点地址,请替换以下两项:

      • IPV4_NEXTHOP_ADDRESS_1:Cloud Router 通告的 IPv4 路由的下一个跃点地址;该地址必须在链路本地范围 169.254.0.0/16 中。
      • PEER_IPV4_NEXTHOP_ADDRESS_1:Cloud Router 从 BGP 对等端获知的 IPv4 路由的下一个跃点地址;该地址必须在链路本地范围 169.254.0.0/16 中。

      如果您未指定 IPv4 下一个跃点地址,则 Google Cloud 会自动为您分配 169.254.0.0/16 范围内的未使用地址。

    • AUTHENTICATION_KEY:用于在 PEER_NAME_GW1_IF0 上进行 MD5 身份验证的密钥。如需详细了解此可选功能,请参阅使用 MD5 身份验证

    可选:分配 BGP 标识符范围

    当您向具有 IPv6 地址的 Cloud Router 添加第一个接口时,系统会自动为 Cloud Router 分配一个 BGP 标识符范围。如果您希望为 Cloud Router 定义自己的 BGP 标识符范围,可以创建自己的范围。您也可以稍后修改此范围。

    如需了解详情,请参阅配置 Cloud Router 的 BGP 标识符范围

    自动

    TUNNEL_NAME_GW1_IF0 创建接口

    如需创建具有自动分配的 IPv6 地址的接口,请运行以下命令。

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION \
      --ip-version=IPV6
    

    TUNNEL_NAME_GW1_IF0 创建 BGP 对等端

    如需创建启用 IPv4 路由交换并具有自动分配的 IPv4 下一个跃点地址的 IPv6 BGP 对等端,请运行以下命令。

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0 \
      --interface=ROUTER_1_INTERFACE_NAME_0 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
      --enable-ipv4 \
    

    以下命令会创建一个未启用 IPv4 且不带自动分配的 IPv6 地址的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF0 \
     --interface=ROUTER_1_INTERFACE_NAME_0 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志。使用此字段提供您的密钥:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF0 \
     --interface=ROUTER_1_INTERFACE_NAME_0 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION \
     --md5-authentication-key=AUTHENTICATION_KEY
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    

    手动

    TUNNEL_NAME_GW1_IF0 创建接口

    如需创建具有手动指定的 IPv6 地址的接口,请运行以下命令。

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0 \
      --ip-address=IP_ADDRESS_1 \
      --mask-length=MASK_LENGTH \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION \
    

    TUNNEL_NAME_GW1_IF0 创建 BGP 对等端

    如需创建启用 IPv4 路由交换并具有手动指定的 IPv4 下一个跃点地址的 BGP 对等端,请运行以下命令。

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0 \
      --interface=ROUTER_1_INTERFACE_NAME_0 \
      --peer-ip-address=PEER_IP_ADDRESS_1 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
      --enable-ipv4 \
      --ipv4-nexthop-address=IPV4_NEXTHOP_ADDRESS_1 \
      --peer-ipv4-nexthop-address=PEER_IPV4_NEXTHOP_ADDRESS_1
    

    以下命令会创建一个未启用 IPv4 路由交换的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF0 \
     --interface=ROUTER_1_INTERFACE_NAME_0 \
     --peer-ip-address=PEER_IP_ADDRESS_1 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志。使用此字段提供您的密钥:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0 \
      --interface=ROUTER_1_INTERFACE_NAME_0 \
      --peer-ip-address=PEER_IP_ADDRESS_1 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
      --md5-authentication-key=AUTHENTICATION_KEY
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    
  2. 在隧道 TUNNEL_NAME_GW1_IF1ROUTER_NAME_1 上创建接口和 BGP 对等端

    此接口将 GW_1interface 1 上的 TUNNEL_NAME_GW1_IF1 连接到 GW_2interface 1

    在以下命令中,替换以下选项:

    • ROUTER_1_INTERFACE_NAME_1:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • IP_VERSIONIPV6
    • IP_ADDRESS_2:尚未使用的来自 ffdf:1::/64 范围的 BGP IPv6 地址;此示例使用 ffdf:1:1:1::1。如果您省略此标志,并且未手动分配 BGP IPv6 地址,Google Cloud 会自动为您分配一个地址。
    • MASK_LENGTH:指定 126 或更短的掩码长度
    • PEER_NAME_GW1_IF1:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • PEER_IP_ADDRESS_2:尚未使用的来自 ffdf:1::/64 范围的 BGP IPv6 地址;此示例使用 ffdf:1:1:2::1。如果您没有专门分配 IPv6 地址 IP_ADDRESS_2,则省略此选项,Google Cloud 会自动为您分配一个匹配的 BGP 对等 IPv6 地址。如果您手动指定了 IP_ADDRESS_2,则也必须手动配置此选项。
    • PEER_ASN_2:用于其他 Cloud Router 路由器上所有接口的 ASN 编号 ROUTER_NAME_2;此示例使用 ASN 编号 65002
    • 可选:如需启用使用 MP-BGP 的 IPv6 BGP 会话中的 IPv4 路由交换,请在运行 gcloud beta compute routers add-bgp-peer 命令时指定 --enable-ipv4。您还可以选择自动或手动配置 IPv4 下一个跃点地址。

      如需手动配置 IPv4 下一个跃点地址,请替换以下两项:

      • IPV4_NEXTHOP_ADDRESS_2:Cloud Router 通告的 IPv4 路由的下一个跃点地址;该地址必须在链路本地范围 169.254.0.0/16 中。
      • PEER_IPV4_NEXTHOP_ADDRESS_2:Cloud Router 从 BGP 对等端获知的 IPv4 路由的下一个跃点地址;该地址必须在链路本地 IPv4 范围 169.254.0.0/16 中。
    • AUTHENTICATION_KEY_2:用于在 PEER_NAME_GW1_IF1 上进行 MD5 身份验证的密钥;如需详细了解此可选功能,请参阅使用 MD5 身份验证

    自动

    TUNNEL_NAME_GW1_IF1 创建 Cloud Router 接口

    如需创建具有自动分配的 IPv6 地址的接口,请运行以下命令。

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
       --interface-name=ROUTER_1_INTERFACE_NAME_1 \
       --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
       --region=REGION \
       --ip-version=IPV6
    

    TUNNEL_NAME_GW1_IF1 创建 BGP 对等端

    如需创建启用 IPv4 路由交换并具有自动分配的 IPv4 下一个跃点地址的 IPv6 BGP 对等端,请运行以下命令。

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
       --peer-name=PEER_NAME_GW1_IF1 \
       --interface=ROUTER_1_INTERFACE_NAME_1 \
       --peer-asn=PEER_ASN_2 \
       --region=REGION \
       --enable-ipv4 \
    

    以下命令会创建一个未启用 IPv4 的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
       --peer-name=PEER_NAME_GW1_IF1 \
       --interface=ROUTER_1_INTERFACE_NAME_1 \
       --peer-asn=PEER_ASN_2 \
       --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志提供您的密钥:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
       --peer-name=PEER_NAME_GW1_IF1 \
       --interface=ROUTER_1_INTERFACE_NAME_1 \
       --peer-asn=PEER_ASN_2 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY_2
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    

    手动

    TUNNEL_NAME_GW1_IF1 创建 Cloud Router 接口

    如需使用手动指定的 IPv6 地址创建接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_1 \
      --ip-address=IP_ADDRESS_2 \
      --mask-length=MASK_LENGTH \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
      --region=REGION \
    

    TUNNEL_NAME_GW1_IF1 创建 BGP 对等端

    如需创建启用 IPv4 路由交换的 IPv6 BGP 对等端,请运行以下命令:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF1 \
     --interface=ROUTER_1_INTERFACE_NAME_1 \
     --peer-ip-address=PEER_IP_ADDRESS_2 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION \
     --enable-ipv4 \
     --ipv4-nexthop-address=IPV4_NEXTHOP_ADDRESS_2 \
     --peer-ipv4-nexthop-address=PEER_IPV4_NEXTHOP_ADDRESS_2
    

    以下命令会创建一个未启用 IPv4 的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF1 \
     --interface=ROUTER_1_INTERFACE_NAME_1 \
     --peer-ip-address=PEER_IP_ADDRESS_2 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION
    

    如果要使用 MD5 身份验证,请使用 --md5-authentication-key 标志提供您的密钥:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF1 \
      --interface=ROUTER_1_INTERFACE_NAME_1 \
      --peer-ip-address=PEER_IP_ADDRESS_2 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
      --md5-authentication-key=AUTHENTICATION_KEY_2
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-a].
    
  3. 验证 ROUTER_NAME_1 的设置

    gcloud compute routers describe ROUTER_NAME_1 \
        --region=REGION
    

    命令输出类似于以下示例:

     bgp:
       advertisemode: DEFAULT
       asn: 65001
       keepaliveInterval: 20
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv4: true
       interfaceName: if-tunnel-a-to-b-if-0
       ipAddress: fdff:1:1:1::1
       ipv4NexthopAddress: 169.254.12.2
       name: bgp-peer-tunnel-a-to-b-if-0
       peerAsn: 65002
       peerIpAddress: fdff:1:1:1::2
       peerIpv4NexthopAddress: 169.254.12.1
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv4: true
       interfaceName: if-tunnel-a-to-b-if-1
       ipAddress: fdff:1:1:2::1
       ipv4NexthopAddress: 169.254.13.2
       name: bgp-peer-tunnel-a-to-b-if-1
       peerAsn: 65002
       peerIpAddress: fdff:1:1:2::2
       peerIpv4NexthopAddress: 169.254.13.1
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: fdff:1:1:1::1/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-0
       name: if-tunnel-a-to-b-if-0
     — ipRange: fdff:1:1:2::1/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-1
       name: if-tunnel-a-to-b-if-1
     kind: compute#router
     name: router-a
     network: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/networks/network-a
     region: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-a
    
  4. 在隧道 TUNNEL_NAME_GW2_IF0ROUTER_NAME_2 上创建接口和 BGP 对等端

    此接口将 GW_2interface 0 上的 TUNNEL_NAME_GW2_IF0 连接到 GW_1interface 0

    在以下命令中,替换以下选项:

    • ROUTER_2_INTERFACE_NAME_0:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • IP_VERSIONIPV6;仅当您希望 Google Cloud 自动为此接口分配 IPv6 地址时,才需要此参数。如果要手动为此接口分配 IPv6 地址,则可以省略此标志。
    • IP_ADDRESS_3:如果您为 TUNNEL_NAME_GW1_IF0PEER_IP_ADDRESS_1 手动分配 BGP IPv6 地址,则为 IP_ADDRESS_3 指定该值。如果 Google Cloud 自动分配了此对等 IPv6 地址,则必须找出哪个地址由 Google Cloud 分配。运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端 PEER_NAME_GW1_IF0 的输出中,使用 peerIpAddress 字段中显示的值。本示例使用 ffdf:1:1:1::2
    • MASK_LENGTH:指定 126 或短的掩码长度。
    • PEER_NAME_GW2_IF0:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • PEER_IP_ADDRESS_3:您之前在配置第一个网关和接口时使用的 BGP IPv6 地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您为 ffdf:1:1:1::2 创建的 BGP 对等端的 ipAddress 字段中显示的值。
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001
    • 可选:如果您要创建 IPv6 BGP 会话和 MP-BGP,请在运行 gcloud beta compute routers add-bgp-peer 命令时指定 --enable-ipv4 以启用 IPv4 流量。您必须配置 IPv4 下一个跃点地址,以匹配为第一个网关配置的接口和支持 IPv4 的 BGP 对等端。

      如需配置下一个跃点地址,请替换以下两项:

      • IPV4_NEXTHOP_ADDRESS_3:先前在 PEER_IPV4_NEXTHOP_ADDRESS_1 中指定的 IPv4 路由的下一个跃点地址;如果您在为 ROUTER_NAME_1 上的 TUNNEL_NAME_GW1_IF0 创建接口和 BGP 对等体时自动分配了 IPv4 下一个跃点地址,那么必须找出由 Google Cloud 分配的地址。运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF0 设置的 BPG 对等端的输出。使用 peerIpv4NextHopAddress 字段中显示的值。 本示例使用 169.254.13.1
      • PEER_IPV4_NEXTHOP_ADDRESS_2:Cloud Router 从 BGP 对等端获知的 IPv4 路由的下一个跃点地址;该地址必须在 IPv4 链路本地范围 169.254.0.0/16 中。本示例使用 169.254.13.2
    • AUTHENTICATION_KEY:用于在 PEER_NAME_GW2_IF0 上进行 MD5 身份验证的密钥

    可选:分配 BGP 标识符范围

    当您向具有 IPv6 地址的 Cloud Router 添加第一个接口时,系统会自动为 Cloud Router 分配 BGP 标识符范围。如果您希望为 Cloud Router 定义自己的 BGP 标识符范围,可以创建自己的范围。您也可以稍后修改此范围。

    如需了解详情,请参阅配置 Cloud Router 的 BGP 标识符范围

    TUNNEL_NAME_GW2_IF0 创建 Cloud Router 接口

    如需创建具有 IPv6 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
        --interface-name=ROUTER_2_INTERFACE_NAME_0 \
        --ip-address=IP_ADDRESS_3 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW2_IF0 \
        --region=REGION \
        --ip-version=IPV6
    

    TUNNEL_NAME_GW2_IF0 创建 BGP 对等端

    以下示例命令会创建一个支持 IPv4 的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF0 \
        --interface=ROUTER_2_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_3 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION \
        --enable-ipv4 \
        --ipv4-nexthop-address=IPV4_NEXTHOP_ADDRESS \
        --peer-ipv4-nexthop-address=PEER_IPV4_NEXTHOP_ADDRESS
    

    以下命令会创建一个未启用 IPv4 的 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF0 \
        --interface=ROUTER_2_INTERFACE_NAME_0 \
        --peer-ip-address=PEER_IP_ADDRESS_3 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION
    

    或者,如果将 ROUTER_NAME_1 配置为对 PEER_NAME_GW1_IF0 使用 MD5 身份验证,请将 ROUTER_NAME_2 配置为使用 MD5 身份验证,如下所示:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF0 \
       --interface=ROUTER_2_INTERFACE_NAME_0 \
       --peer-ip-address=PEER_IP_ADDRESS_3 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY
    

    命令输出类似于以下示例:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    
  5. 在隧道 TUNNEL_NAME_GW2_IF1ROUTER_NAME_2 上创建接口和 BGP 对等端

    此接口将 GW_2interface 1 上的 TUNNEL_NAME_GW2_IF1 连接到 GW_1interface 1

    在以下命令中,替换以下选项:

    • ROUTER_2_INTERFACE_NAME_1:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • IP_ADDRESS_4:如果您为 TUNNEL_NAME_GW1_IF1PEER_IP_ADDRESS_2 手动分配 BGP IPv6 地址,则为 IP_ADDRESS_4 指定该值。如果您为 ROUTER_NAME_1 上的 TUNNEL_NAME_GW1_IF1 创建接口和 BGP 对等端时 Google Cloud 自动分配了对等 BGP IPv6 地址,则必须找出由 Google Cloud 分配的地址。运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端的输出中,使用 peerIpAddress 字段显示的值。 本示例使用 ffdf:1:1::2:1
    • MASK_LENGTH:指定 126 或短的掩码长度。
    • PEER_NAME_GW2_IF1:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • PEER_IP_ADDRESS_4:如果您为 TUNNEL_NAME_GW1_IF1IP_ADDRESS_2 手动分配 BGP IP 地址,请为 PEER_IP_ADDRESS_4 指定该值。如果 Google Cloud 自动为您分配了 BGP IPv6 地址,则您必须找出由 Google Cloud 分配的地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您所创建的 BGP 对等端的 ipAddress 字段中显示的值。本示例使用 ffdf:1:1:1::2
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001
    • 可选:如果您要创建 IPv6 BGP 会话和 MP-BGP,请在运行 gcloud beta compute routers add-bgp-peer 命令时指定 --enable-ipv4 以启用 IPv4 流量。您必须配置 IPv4 下一个跃点地址,以匹配为第一个网关配置的接口和支持 IPv4 的 BGP 对等端。

      如需配置下一个跃点地址,请替换以下两项:

      • IPV4_NEXTHOP_ADDRESS_4:先前在 PEER_IPV4_NEXTHOP_ADDRESS_3 中指定的 IPv4 路由的下一个跃点地址;如果您在为 ROUTER_NAME_1 上的 TUNNEL_NAME_GW1_IF0 创建接口和 BGP 对等体时自动分配了 IPv4 下一个跃点地址,那么必须找出由 Google Cloud 分配的地址。运行 gcloud compute routers describe ROUTER_NAME_1 并检查您为 TUNNEL_NAME_GW1_IF0 设置的 BPG 对等端的输出。使用 peerIpv4NextHopAddress 字段中显示的值。本示例使用 169.254.13.1
      • PEER_IPV4_NEXTHOP_ADDRESS_4:Cloud Router 从 BGP 对等端获知的 IPv4 路由的下一个跃点地址;该地址必须在链路本地 IPv4 范围 169.254.0.0/16 中。本示例使用 169.254.13.2
    • AUTHENTICATION_KEY_2:用于在 PEER_NAME_GW2_IF1 上进行 MD5 身份验证的密钥

    TUNNEL_NAME_GW2_IF1 创建 Cloud Router 接口

    gcloud beta compute routers add-interface ROUTER_NAME_2 \
       --interface-name=ROUTER_2_INTERFACE_NAME_1 \
       --ip-address=IP_ADDRESS_4 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_GW2_IF1 \
       --region=REGION \
    

    命令输出应如以下示例所示:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    

    TUNNEL_NAME_GW2_IF1 创建 BGP 对等端

    以下示例命令会创建一个启用了 IPv4 路由交换的 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF1 \
       --interface=ROUTER_2_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --enable-ipv4 \
       --ipv4-nexthop-address=IPV4_NEXTHOP_ADDRESS \
       --peer-ipv4-nexthop-address=PEER_IPV4_NEXTHOP_ADDRESS
    

    以下命令会创建一个未启用 IPv4 路由交换的 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF1 \
        --interface=ROUTER_2_INTERFACE_NAME_1 \
        --peer-ip-address=PEER_IP_ADDRESS_4 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION
    

    或者,如果将 ROUTER_NAME_1 配置为对 PEER_NAME_GW1_IF1 使用 MD5 身份验证,请将 ROUTER_NAME_2 配置为使用 MD5 身份验证,如下所示:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF1 \
       --interface=ROUTER_2_INTERFACE_NAME_1 \
       --peer-ip-address=PEER_IP_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION \
       --md5-authentication-key=AUTHENTICATION_KEY_2
    

    命令输出应如以下示例所示:

    Updated [https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-b].
    
  6. 验证 ROUTER_NAME_2 的设置

    gcloud compute routers describe ROUTER_NAME_2  \
       --region=REGION
    

    命令输出应如以下示例所示:

     bgp:
       advertiseMode: DEFAULT
       asn: 65002
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv4: true
       interfaceName: if-tunnel-b-to-a-if-0
       ipAddress: fdff:1:1:1::2
       ipv4NexthopAddress: 169.254.12.2
       name: bgp-peer-tunnel-b-to-a-if-0
       peerAsn: 65001
       peerIpAddress: fdff:1:1:1::1
       peerIpv4NexthopAddress: 169.254.12.1
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       enableIpv4: true
       interfaceName: if-tunnel-b-to-a-if-1
       ipAddress: fdff:1:1:2::1
       ipv4NexthopAddress: 169.254.13.2
       name: bgp-peer-tunnel-b-to-a-if-1
       peerAsn: 65001
       peerIpAddress: fdff:1:1::2:1
       peerIpv4NexthopAddress: 169.254.13.2
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: fdff:1:1:1::2/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-0
       name: if-tunnel-b-to-a-if-0
       — ipRange: fdff:1:1:2::2/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-1
       name: if-tunnel-b-to-a-if-1
     kind: compute#router
     name: router-b
     network: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/networks/network-b
     region: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-b
    

API

  1. 如需创建具有 IPv6 地址的 Cloud Router 接口,请向 routers.patch 方法routers.update 方法发出 PATCHUPDATE 请求。PATCH 仅更新您包含的参数。UPDATE 会更新 Cloud Router 的所有参数。为高可用性 VPN 网关上的每个 VPN 隧道创建一个接口。

    以下示例会创建一个具有手动配置的 IPv6 BGP 地址的接口。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "interfaces": [
       {
         "name": "if-tunnel-a-to-b-if-0",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipRange": "fdff:1:1:1::2/112"
        }
      ]
    }
    

    每个 BGP 会话的每个 BGP IPv6 地址范围在 VPC 网络的所有区域中的所有 Cloud Router 路由器中必须唯一。

    在另一个示例中,以下命令会创建一个具有自动分配的 IPv6 地址的接口。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "interfaces": [
       {
         "name": "if-tunnel-a-to-b-if-0",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipVersion": "IPV6"
        }
      ]
    }
    

    对高可用性 VPN 网关上的每个 VPN 隧道重复此步骤。

  2. 针对每个接口向 Cloud Router 添加一个 BGP 对等端。

    如需创建 BGP 对等端,请使用 routers.patch 方法routers.update 方法发出 PATCHUPDATE 请求。 对其他接口重复此命令,并根据需要更改字段值。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "bgpPeers": [
       {
         "name": "bgp-peer-tunnel-a-to-b-if-0",
         "interfaceName": "if-tunnel-a-to-b-if-0",
         "ipAddress": "fdff:1:1::1::2",
         "peerIpAddress": "fdff:1:1:1::1",
         "peerAsn": 65002,
         "advertiseMode": "DEFAULT"
       }
     ]
    }
    

    如需创建配置了 MP-BGP 和 IPv4 下一个跃点地址的 IPv6 BGP 会话,请使用以下 API 命令:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
    "bgpPeers": [
       {
         "name": "bgp-peer-tunnel-a-to-b-if-0",
         "interfaceName": "if-tunnel-a-to-b-if-0",
         "ipAddress": "fdff:1:1:1::2",
         "peerIpAddress": "fdff:1:1:1::1",
         "peerAsn": 65002,
         "advertiseMode": "DEFAULT",
         "enableIpv4": true,
         "ipv4NexthopAddress: "169.254.12.2",
         "peerIpv4NexthopAddress: "169.254.12.1"
       }
     ]
    }
    

    如果要将会话配置为使用 MD5 身份验证,您的请求必须包含身份验证密钥,这意味着它必须同时提供密钥和密钥名称。创建 BGP 对等互连会话时,它还必须按名称引用密钥。例如:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
    "md5AuthenticationKeys": [
      {
       "name": "bgppeer-1-key",
       "key": "secret_key_value"
       }
    ],
    }
    {
    "bgpPeers": [
      {
       "interfaceName": "if-tunnel-a-to-b-if-0",
       "ipAddress": "fdff:1:1:1::2",
       "name": "bgp-peer-tunnel-a-to-b-if-0",
       "peerAsn": 65002,
       "peerIpAddress": "fdff:1:1:1::1",
       "advertiseMode": "DEFAULT",
       "md5AuthenticationKeyName": "bgppeer-1-key"
       }
     ],
    }
    

IPv4 和 IPv6 BGP 会话

gcloud

在本部分中,您将为每个高可用性 VPN 隧道配置两个接口和 BGP 对等端。下表简要介绍了这些接口和对等端。同时介绍了您为每个接口指定的 IP 范围和对等 IP 地址之间的关系。

例如,系统会为 router-1 的第一个接口分配 IPv4 地址 169.254.0.1。系统会为 router-1 的第二个接口分配 IPv6 地址 fdff:1:1:1::1。另一个 Cloud Router router-2router-1 的 BGP 对等端。系统为 router-2 的第一个接口分配了 169.254.0.2,这是 IPv4 子网 169.254.0.0/30 中的第二个主机。系统为 router-2 的第二个接口分配了 fdff:1:1:1::2,这是 IPv6 子网 fdff:1:1:1::/112 中的第二个主机。因此,router-1 的对等 IPv4 BGP 地址为 169.254.0.2,其对等 IPv6 BGP 地址为 fdff:1:1:1::2router-2 的对等 IPv4 BGP 地址为 169.254.0.1,其对等 IPv6 BGP 地址为 fdff:1:1:1::1

路由器 接口名称 BGP IP 地址 对等 IP 地址 对等 ASN
router-1 if-tunnel-a-to-b-if-0_ipv4 169.254.0.1/30 169.254.0.2 65002
router-1 if-tunnel-a-to-b-if-0_ipv6 fdff:1:1:1::1/112 fdff:1:1:1::2 65002
router-1 if-tunnel-a-to-b-if-1_ipv4 169.254.1.1/30 169.254.1.2 65002
router-1 if-tunnel-a-to-b-if-1_ipv6 fdff:1:1:2::1/112 fdff:1:1:2::2 65002
router-2 if-tunnel-b-to-a-if-0_ipv4 169.254.0.2/30 169.254.0.1 65001
router-2 if-tunnel-b-to-a-if-0_ipv6 fdff:1:1:1::2/112 fdff:1:1:1::1 65001
router-2 if-tunnel-b-to-a-if-1_ipv4 169.254.1.2/30 169.254.1.1 65001
router-2 if-tunnel-b-to-a-if-1_ipv6 fdff:1:1:2::2/112 fdff:1:1:2::1 65001

如需创建 Cloud Router 接口和 BGP 对等端,请完成以下命令序列。

  1. ROUTER_NAME_1 上为隧道 TUNNEL_NAME_GW1_IF0 创建接口和 BGP 对等端

    这两个接口将 GW_1interface 0 上的 TUNNEL_NAME_GW1_IF0 连接到 GW_2interface 0

    在命令中,替换以下内容:

    • ROUTER_1_INTERFACE_NAME_0_ipv4ROUTER_1_INTERFACE_NAME_0_ipv6:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • IP_VERSION:接口的 IPv6 版本,IPV6IPV4。仅当您希望 Google Cloud 自动为接口分配 IPv6 地址时,才需要此参数。如果要手动为此接口分配 IPv6 地址,则可以省略此标志。
    • IPV4_ADDRESS_1IPV6_ADDRESS_1169.254.0.0/16fdff:1::/64 范围内尚未使用的 BGP IP 地址;此示例使用 169.254.0.1ffdf:1:1:1::1。如果您省略此标志,并且未手动分配 BGP IP 地址,Google Cloud 会自动为您分配一个地址。
    • MASK_LENGTH:为接口指定 BGP IPv6 地址时,请指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围中的唯一 /30 CIDR。为接口指定 IPv6 地址时,请将掩码长度指定为 126 或更短。
    • PEER_NAME_GW1_IF0_ipv4PEER_NAME_GW1_IF0_ipv6:描述 IPv4 和 IPv6 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF0 相关的名称会很有帮助
    • PEER_IPV4_ADDRESS_1PEER_IPV6_ADDRESS_1169.254.0.0/16ffdf:1::/64 范围中尚未使用的 BGP 地址;此示例使用 169.254.0.2ffdf:1:1::1:2。如果您之前没有为 IPV4_ADDRESS_1IPV6_ADDRESS_1 分配特定的 BGP 地址,则也会省略这些选项,Google Cloud 会自动为您分配一个匹配的 BGP 对等 IP 地址。如果您手动指定了 IPV4_ADDRESS_1IPV6_ADDRESS_1,则也必须手动配置这些选项。
    • PEER_ASN_2:用于 ROUTER_NAME_2 上所有接口的 ASN 编号;此示例使用 ASN 编号 65002

    可选:分配 BGP 标识符范围

    当您向 Cloud Router 添加具有 IPv6 地址的第一个接口时,系统会自动为 Cloud Router 分配 BGP 标识符范围。如果您希望为 Cloud Router 定义自己的 BGP 标识符范围,可以创建自己的范围。您也可以稍后修改此范围。

    如需了解详情,请参阅配置 Cloud Router 的 BGP 标识符范围

    自动

    TUNNEL_NAME_GW1_IF0 创建 Cloud Router 接口

    如需创建具有自动配置的 BGP IPv4 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0_ipv4 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION \
      --ip-version=IPV4
    

    如需创建具有自动配置的 BGP IPv6 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0_ipv6 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION \
      --ip-version=IPV6
    

    TUNNEL_NAME_GW1_IF0 创建 BGP 对等端

    以下示例命令会创建 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0_ipv4 \
      --interface=ROUTER_1_INTERFACE_NAME_0_ipv4 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
    

    以下示例命令会创建 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0_ipv6 \
      --interface=ROUTER_1_INTERFACE_NAME_0_ipv6 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION
    

    通过创建两个接口和 BGP 对等端,您可以在同一隧道中运行两个并行 IPv4 和 IPv6 BGP 会话。

    您无法在此配置中使用 MP-BGP。

    手动

    TUNNEL_NAME_GW1_IF0 创建 Cloud Router 接口

    如需创建具有手动配置的 BGP IPv4 地址的接口,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0_ipv4 \
      --ip-address=IPV4_ADDRESS_1 \
      --mask-length=30 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION
    

    如需创建具有手动配置的 BGP IPv6 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_0_ipv6 \
      --ip-address=IPV6_ADDRESS_1 \
      --mask-length=MASK_LENGTH \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF0 \
      --region=REGION \
    

    TUNNEL_NAME_GW1_IF0 创建 BGP 对等端

    以下示例命令会创建 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0_ipv4 \
      --interface=ROUTER_1_INTERFACE_NAME_0_ipv4 \
      --peer-ip-address=PEER_IPV4_ADDRESS_1 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION \
    

    以下命令将创建 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF0_ipv6 \
      --interface=ROUTER_1_INTERFACE_NAME_0_ipv6 \
      --peer-ip-address=PEER_IPV6_ADDRESS_1 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION
    

    通过创建两个接口和 BGP 对等端,您可以在同一隧道中运行两个并行 IPv4 和 IPv6 BGP 会话。

    您无法在此配置中使用 MP-BGP。

  2. ROUTER_NAME_1 上为隧道 TUNNEL_NAME_GW1_IF1 创建接口和 BGP 对等端

    这两个接口将 GW_1interface 1 上的 TUNNEL_NAME_GW1_IF1 连接到 GW_2interface 1

    在以下命令中,替换以下选项:

    • ROUTER_1_INTERFACE_NAME_1_ipv4ROUTER_1_INTERFACE_NAME_1_ipv6:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • IP_VERSION:接口的版本,IPV6IPV4。如果您未指定此项,则默认设置为 IPV4。仅当您希望 Google Cloud 自动为接口分配 IPv6 地址时,才需要此参数。如果要手动为此接口分配 IPv4 或 IPv6 地址,则可以忽略此标志。
    • IPV4_ADDRESS_2IPV6_ADDRESS_2169.254.0.0/16ffdf:1::/64 范围中尚未使用的 BGP IPv4 或 IPv6 地址;此示例使用 169.254.0.2 和/或 ffdf:1:1:1::2。如果您忽略此标志,并且未手动分配 BGP IPv4 或 IPv6 地址,则 Google Cloud 会自动为您分配一个地址。
    • MASK_LENGTH:在为接口指定 IPv4 地址时,请指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。为接口指定 IPv6 地址时,请将掩码长度指定为 126 或更短。
    • PEER_NAME_GW1_IF1_ipv4PEER_NAME_GW1_IF0_ipv6:描述 IPv4 和 IPv6 BGP 对等端的名称;使用与 TUNNEL_NAME_GW1_IF1 相关的名称会很有帮助
    • PEER_IPV4_ADDRESS_2PEER_IPV6_ADDRESS_2169.254.0.0/16ffdf:1::/64 范围中尚未使用的 BGP IPv4 或 IPv6 地址;此示例使用 169.254.1.2ffdf:1:1:2::1。如果您没有专门分配 IPv4 或 IPv6 地址(IPV4_ADDRESS_2IPV6_ADDRESS_2),则忽略此选项,Google Cloud 会自动为您分配一个匹配的 BGP 对等 IPv4 或 IPv6 地址。如果您手动指定了 IPV4_ADDRESS_2IPV6_ADDRESS_2,则也必须手动配置此选项。
    • PEER_ASN_2:用于其他 Cloud Router 路由器上所有接口的 ASN 编号 ROUTER_NAME_2;此示例使用 ASN 编号 65002
    • AUTHENTICATION_KEY_2:用于在 PEER_NAME_GW1_IF1 上进行 MD5 身份验证的密钥;如需详细了解此可选功能,请参阅使用 MD5 身份验证

    自动

    TUNNEL_NAME_GW1_IF1 创建 Cloud Router 接口

    如需使用自动配置的 IPv4 地址创建接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_1_ipv4 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
      --region=REGION \
      --ip-version=IPV4
    

    如需创建具有自动配置的 IPv6 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_1_ipv6 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
      --region=REGION \
      --ip-version=IPV6
    

    TUNNEL_NAME_GW1_IF1 创建 BGP 对等端

    以下示例命令将创建一个 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF1_ipv4 \
      --interface=ROUTER_1_INTERFACE_NAME_1_ipv4 \
      --peer-ip-address=PEER_IPV4_ADDRESS_2 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION
    

    以下示例命令将创建一个 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF1_ipv6 \
      --interface=ROUTER_1_INTERFACE_NAME_1_ipv6 \
      --peer-ip-address=PEER_IPV6_ADDRESS_2 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION
    

    通过创建两个接口和 BGP 对等端,您可以在同一隧道中运行两个并行 IPv4 和 IPv6 BGP 会话。

    您无法在此配置中使用 MP-BGP。

    手动

    TUNNEL_NAME_GW1_IF1 创建 Cloud Router 接口

    如需创建具有手动配置的 IPv4 地址的接口,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_1_ipv4 \
      --ip-address=IPV4_ADDRESS_2 \
      --mask-length=30 \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
      --region=REGION
    

    如需创建具有手动配置的 IPv6 地址的接口,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
      --interface-name=ROUTER_1_INTERFACE_NAME_1_ipv6 \
      --ip-address=IPV6_ADDRESS_2 \
      --mask-length=MASK_LENGTH \
      --vpn-tunnel=TUNNEL_NAME_GW1_IF1 \
      --region=REGION
    

    TUNNEL_NAME_GW1_IF1 创建 BGP 对等端

    以下示例命令将创建一个 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_1 \
      --peer-name=PEER_NAME_GW1_IF1_ipv4 \
      --interface=ROUTER_1_INTERFACE_NAME_1_ipv4 \
      --peer-ip-address=PEER_IPV4_ADDRESS_2 \
      --peer-asn=PEER_ASN_2 \
      --region=REGION
    

    以下示例命令将创建一个 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_1 \
     --peer-name=PEER_NAME_GW1_IF1_ipv6 \
     --interface=ROUTER_1_INTERFACE_NAME_1_ipv6 \
     --peer-ip-address=PEER_IPV6_ADDRESS_2 \
     --peer-asn=PEER_ASN_2 \
     --region=REGION
    

    通过创建两个接口和 BGP 对等端,您可以在同一隧道中运行两个并行 IPv4 和 IPv6 BGP 会话。

    您无法在此配置中使用 MP-BGP。

  3. 验证 ROUTER_NAME_1 的设置

    gcloud compute routers describe ROUTER_NAME_1 \
        --region=REGION
    

    命令输出应如以下示例所示:

     bgp:
       advertisemode: DEFAULT
       asn: 65001
       keepaliveInterval: 20
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-a-to-b-if-0_ipv4
       ipAddress: 169.254.0.1
       name: bgp-peer-tunnel-a-to-b-if-0_ipv4
       peerAsn: 65002
       peerIpAddress: 169.254.0.2
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-a-to-b-if-1_ipv4
       ipAddress: 169.254.1.1
       name: bgp-peer-tunnel-a-to-b-if-1_ipv4
       peerAsn: 65002
       peerIpAddress: 169.254.1.2
    — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-a-to-b-if-0_ipv6
       ipAddress: fdff:1:1:1::1
       name: bgp-peer-tunnel-a-to-b-if-0_ipv6
       peerAsn: 65002
       peerIpAddress: fdff:1:1:1::2
    — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-a-to-b-if-1_ipv6
       ipAddress: fdff:1:1:2::1
       name: bgp-peer-tunnel-a-to-b-if-1_ipv6
       peerAsn: 65002
       peerIpAddress: fdff:1:1:2::2
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: 169.254.0.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-0
       name: if-tunnel-a-to-b-if-0
     — ipRange: 169.254.1.1/30
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-0
       name: if-tunnel-a-to-b-if-0
     — ipRange: fdff:1:1:1::1/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-1
       name: if-tunnel-a-to-b-if-1
     — ipRange: fdff:1:1:2::1/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-a-to-b-if-1
       name: if-tunnel-a-to-b-if-1
     kind: compute#router
     name: router-a
     network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/network-a
     region: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/routers/router-a
    
  4. ROUTER_NAME_2 上为隧道 TUNNEL_NAME_GW2_IF0 创建接口和 BGP 对等端

    这两个接口将 GW_2interface 0 上的 TUNNEL_NAME_GW2_IF0 连接到 GW_1interface 0

    您必须手动配置此 Cloud Router 上的接口和 BGP 对等互连地址,因为已在另一个 Cloud Router ROUTER_NAME_1 上配置了相应的地址。

    在命令中,替换以下内容:

    • ROUTER_2_INTERFACE_NAME_0_ipv4ROUTER_2_INTERFACE_NAME_0<_ipv6>:Cloud Router 接口名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • IPV4_ADDRESS_3IPV6_ADDRESS_3:之前用于此网关和接口的 BGP IPv4 和 IPv6 地址。如果您在 ROUTER_NAME_1 上为 TUNNEL_NAME_GW1_IF0 创建接口和 BGP 对等端时自动分配了对等 IPv4 和 IPv6 地址,则必须将分配的地址指定为 IPV4_ADDRESS_3IPV6_ADDRESS_3。如需了解 Google Cloud 分配了哪些地址,请运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端的输出中,使用 peerIpAddress 字段中显示的值。 此示例使用 169.254.0.2ffdf:1:1:1::2
    • MASK_LENGTH:对于具有 IPv4 地址的接口,请指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。对于具有 IPv6 地址的接口,请将掩码长度指定为 126 或更短。
    • PEER_NAME_GW2_IF0_ipv4PEER_NAME_GW2_IF0_ipv6:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF0 相关的名称会很有帮助
    • PEER_IPV4_ADDRESS_3PEER_IPV6_ADDRESS_3:您之前在配置第一个网关和接口时使用的 BGP IPv4 或 IPv6 地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您为 TUNNEL_NAME_GW1_IF0 创建的 BGP 对等端的 ipAddress 字段中显示的值。此示例使用 169.254.0.1ffdf:1:1:1::1
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001

    TUNNEL_NAME_GW2_IF0 创建 Cloud Router 接口

    如需创建接口并手动配置其 IPv4 地址,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_2 \
        --interface-name=ROUTER_2_INTERFACE_NAME_0 \
        --ip-address=IPV4_ADDRESS_3 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW2_IF0 \
        --region=REGION
    

    如需创建接口并手动配置其 IPv6 地址,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_1 \
        --interface-name=ROUTER_2_INTERFACE_NAME_0 \
        --ip-address=IPV6_ADDRESS_3 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW2_IF0 \
        --region=REGION \
    

    TUNNEL_NAME_GW2_IF0 创建 BGP 对等端

    以下示例命令会创建 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2 \
        --peer-name=PEER_NAME_GW2_IF0_ipv4 \
        --interface=ROUTER_2_INTERFACE_NAME_0_ipv4 \
        --peer-ip-address=PEER_IPV4_ADDRESS_3 \
        --peer-asn=PEER_ASN_1 \
        --region=REGION
    

    以下示例命令会创建 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2 \
       --peer-name=PEER_NAME_GW2_IF0_ipv6 \
       --interface=ROUTER_2_INTERFACE_NAME_0_ipv6 \
       --peer-ip-address=PEER_IPV6_ADDRESS_3 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION
    

    通过创建两个接口和 BGP 对等端,您可以在同一隧道中运行两个并行 IPv4 和 IPv6 BGP 会话。

    您无法在此配置中使用 MP-BGP。

  5. ROUTER_NAME_2 上为隧道 TUNNEL_NAME_GW2_IF1 创建接口和 BGP 对等端

    这两个接口将 GW_2interface 0 上的 TUNNEL_NAME_GW2_IF0 连接到 GW_1interface 0

    您必须手动配置此 Cloud Router 上的接口和 BGP 对等互连地址,因为已在另一个 Cloud Router ROUTER_NAME_1 上配置了相应的地址。

    这两个接口将 GW_2interface 1 上的 TUNNEL_NAME_GW2_IF1 连接到 GW_1interface 1

    在以下命令中,替换以下选项:

    • ROUTER_2_INTERFACE_NAME_1_ipv4ROUTER_2_INTERFACE_NAME_1_ipv6:Cloud Router 接口的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • IPV4_ADDRESS_4IPV6_ADDRESS_4:之前用于此网关和接口的 BGP IPv4 和 IPv6 地址。如果您在 ROUTER_NAME_1 上为 TUNNEL_NAME_GW1_IF1 创建接口和 BGP 对等端时自动分配了对等 BGP IP 地址,则必须手动将分配的这些地址指定为 IPV4_ADDRESS_4IPV6_ADDRESS_4。如需了解 Google Cloud 分配了哪些地址,请运行 gcloud compute routers describe ROUTER_NAME_1。在 BGP 对等端的输出中,使用 peerIpAddress 字段中显示的值。此示例使用 169.254.1.2ffdf:1:1::1:1
    • MASK_LENGTH:对于具有 IPv4 地址的接口,请指定 30,因为 Cloud Router 必须使用同一 169.254.0.0/16 范围内的唯一 /30 CIDR。对于具有 IPv6 地址的接口,请将掩码长度指定为 126 或更短。
    • PEER_NAME_GW2_IF1_ipv4PEER_NAME_GW2_IF1_ipv6:描述 BGP 对等端的名称;使用与 TUNNEL_NAME_GW2_IF1 相关的名称会很有帮助
    • PEER_IPV4_ADDRESS_4PEER_IPV6_ADDRESS_4:您在配置第一个网关和接口时指定为 IPV4_ADDRESS_2IPV6_ADDRESS_2 的 IP 地址。运行 gcloud compute routers describe ROUTER_NAME_1,并使用您为 TUNNEL_NAME_GW2_IF1 创建的 BGP 对等端的 ipAddress 字段中显示的值。此示例使用 169.254.1.1fdff:1:1:2::2
    • PEER_ASN_1:用于 ROUTER_NAME_1 上所有接口的 ASN 编号,该编号已提前设置;此示例使用 ASN 编号 65001

    TUNNEL_NAME_GW2_IF1 创建 Cloud Router 接口

    如需创建接口并手动配置其 IPv4 地址,请运行以下命令:

    gcloud compute routers add-interface ROUTER_NAME_2 \
       --interface-name=ROUTER_2_INTERFACE_NAME_1 \
       --ip-address=IPV4_ADDRESS_4 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_GW2_IF1 \
       --region=REGION
    

    如需创建接口并手动配置其 IPv6 地址,请运行以下命令:

    gcloud beta compute routers add-interface ROUTER_NAME_2 \
        --interface-name=ROUTER_2_INTERFACE_NAME_1 \
        --ip-address=IPV6_ADDRESS_4 \
        --mask-length=MASK_LENGTH \
        --vpn-tunnel=TUNNEL_NAME_GW2_IF1 \
        --region=REGION
    

    TUNNEL_NAME_GW2_IF1 创建 BGP 对等端

    以下示例命令会创建 IPv4 BGP 对等端:

    gcloud compute routers add-bgp-peer ROUTER_NAME_2  \
       --peer-name=PEER_NAME_GW2_IF1_ipv4 \
       --interface=ROUTER_2_INTERFACE_NAME_1_ipv4 \
       --peer-ip-address=PEER_IPV4_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION
    

    以下示例命令会创建 IPv6 BGP 对等端:

    gcloud beta compute routers add-bgp-peer ROUTER_NAME_2 \
       --peer-name=PEER_NAME_GW2_IF1_ipv6 \
       --interface=ROUTER_2_INTERFACE_NAME_1_ipv6 \
       --peer-ip-address=PEER_IPV6_ADDRESS_4 \
       --peer-asn=PEER_ASN_1 \
       --region=REGION
    
  6. 验证 ROUTER_NAME_2 的设置

    gcloud compute routers describe ROUTER_NAME_2  \
       --region=REGION
    

    命令输出类似于以下示例:

     bgp:
       advertisemode: DEFAULT
       asn: 65002
       keepaliveInterval: 20
     bgpPeers:
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-b-to-a-if-0_ipv4
       ipAddress: 169.254.0.2
       name: bgp-peer-tunnel-b-to-a-if-0_ipv4
       peerAsn: 65002
       peerIpAddress: 169.254.0.1
     — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-b-to-a-if-1_ipv4
       ipAddress: 169.254.1.2
       name: bgp-peer-tunnel-b-to-a-if-1_ipv4
       peerAsn: 65001
       peerIpAddress: 169.254.1.1
    — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-b-to-a-if-0_ipv6
       ipAddress: fdff:1:1:1::2
       name: bgp-peer-tunnel-b-to-a-if-0_ipv6
       peerAsn: 65001
       peerIpAddress: fdff:1:1:1::1
    — bfd:
           minReceiveInterval: 1000
           minTransmitInterval: 1000
           mode: DISABLED
           multiplier: 5
           sessionInitializationMode: DISABLED
       enable: 'TRUE'
       interfaceName: if-tunnel-b-to-a-if-1_ipv6
       ipAddress: fdff:1:1:2::2
       name: bgp-peer-tunnel-b-to-a-if-1_ipv6
       peerAsn: 65001
       peerIpAddress: fdff:1:1:2::1
     creationTimestamp: '2021-10-19T14:31:52.639-07:00'
     id: '4047683710114914215'
     interfaces:
     — ipRange: 169.254.0.2/30
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-0
       name: if-tunnel-b-to-a-if-0
     — ipRange: 169.254.1.2/30
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-0
       name: if-tunnel-b-to-a-if-0
     — ipRange: fdff:1:1:1::2/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-1
       name: if-tunnel-b-to-a-if-1
     — ipRange: fdff:1:1:2::2/112
       linkedVpnTunnel: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/vpnTunnels/tunnel-b-to-a-if-1
       name: if-tunnel-b-to-a-if-1
     kind: compute#router
     name: router-b
     network: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/networks/network-b
     region: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1
     selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-central1/routers/router-b
    

API

  1. 要创建多个 Cloud Router 接口,请使用 routers.patch 方法routers.update 方法发出 PATCHUPDATE 请求。PATCH 仅更新您包含的参数。UPDATE 会更新 Cloud Router 的所有参数。

    您指定的 BGP 地址范围在 VPC 网络的所有区域中的所有 Cloud Router 路由器之间必须唯一。

    对每个高可用性 VPN 网关中定义的每个 VPN 隧道重复此步骤和命令。对于高可用性 VPN 网关到高可用性 VPN 部署,这意味着四个高可用性 VPN 隧道配置。

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "interfaces": [
       {
         "name": "if-tunnel-a-to-b-if-0_ipv4",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipRange": "169.254.0.1/30"
        },
        {
         "name": "if-tunnel-a-to-b-if-0_ipv6",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipRange": "fdff:1:1:1::1/112"
        }
      ]
    }
    

    以下示例会将一个具有 IPv4 地址的接口和一个具有 IPv6 地址的接口添加到同一 linkedVpnTunnel。该命令会自动为接口分配 IPv4 和 IPv6 地址:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "interfaces": [
       {
         "name": "if-tunnel-a-to-b-if-0_ipv4",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipVersion": "IPV4"
        },
        {
         "name": "if-tunnel-a-to-b-if-0_ipv6",
         "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
         "ipVersion": "IPV6"
        }
     ]
    }
    
  2. 如需向每个 VPN 隧道的 Cloud Router 添加 BGP 对等端,请使用 routers.patch 方法routers.update 方法发出 PATCHUPDATE 请求。为每个 VPN 隧道重复此命令,并根据需要更改所有选项。

    例如:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
     "bgpPeers": [
     {
       "interfaceName": "if-tunnel-a-to-b-if-0_ipv4",
       "ipAddress": "169.254.0.1",
       "name": "bgp-peer-tunnel-a-to-b-if-0_ipv4",
       "peerAsn": 65002,
       "peerIpAddress": "169.254.0.2",
       "advertiseMode": "DEFAULT"
      },
      {
       "interfaceName": "if-tunnel-a-to-b-if-0_ipv6",
       "ipAddress": fdff:1:1:1::1",
       "name": "bgp-peer-tunnel-a-to-b-if-0_ipv6",
       "peerAsn": 65002,
       "peerIpAddress": "fdff:1:1:1::2",
       "advertiseMode": "DEFAULT"
      }
    ]
    }
    

验证配置

控制台

如要验证配置,请转到摘要和提醒页面:

  1. 此页面的摘要部分列出了高可用性 VPN 网关和对等 VPN 网关配置文件的信息。对于每个 VPN 隧道,您都可以查看 VPN 隧道状态BGP 会话名称BGP 会话状态 以及 MED 值(通告路由的优先级)。
  2. 此页面的提醒部分列出了在 Cloud VPN 和对等 VPN 之间建立完全可正常运行的 VPN 连接所需完成的步骤。查看此页面上的信息后,点击确定

gcloud

如需验证 Cloud Router 路由器配置,请参阅创建 BGP 会话中的 gcloud 标签页上的验证步骤。

API

如需验证 Cloud Router 路由器配置,请使用 routers.getRouterStatus 方法发出 GET 请求,并使用空请求正文:

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

在单个隧道网关上创建其他隧道。

控制台

如需获得 SLA 承诺的 99.99% 正常运行时间,请在高可用性 VPN 到高可用性 VPN 网关配置的每个端的每个高可用性 VPN 接口上配置隧道。

如果您已在一个高可用性 VPN 网关到另一个高可用性 VPN 网关上配置了一个隧道,但希望获得服务等级协议 (SLA) 承诺的 99.99% 的正常运行时间,则必须再配置一个隧道。

如需配置第二个隧道,请按照添加从高可用性 VPN 网关到另一个高可用性 VPN 网关的隧道中的步骤操作。

设置通告路由的基准优先级(可选)

您创建的 BGP 会话允许每个 Cloud Router 路由器将路由通告到对等网络。通告使用未经修改的基准优先级

创建两个相互连接且经过全面配置的高可用性 VPN 网关中记载的配置用于“主动/主动路由配置”,其中两端的两个隧道的通告路由优先级匹配。省略通告路由优先级 (--advertised-route-priority) 会导致两个 BGP 对等端的通告路由优先级相同。

对于主动/被动路由配置,您可以通过在添加或更新 BGP 对等方时设置通告路由的优先级来控制 Cloud Router 路由器与对等 VPN 网关共享的 to Google Cloud 路由的通告路由优先级 (--advertised-route-priority)。如需创建主动/被动配置,请为一个 BGP 会话及其对应的 VPN 隧道设置一个比其他 BGP 会话和 VPN 隧道更高的通告路由优先级。

如需详细了解通告路由的基准优先级,请参阅通告的前缀和优先级

您还可以使用自定义通告来优化所通告的路由:

  • 添加 --advertisement-mode=CUSTOM 标志 (gcloud) 或 advertiseMode: custom 标志 (API)。
  • 使用 --set-advertisement-ranges 标志 (gcloud) 或 advertisedIpRanges 标志 (API) 指定 IP 地址范围。

完成配置

在使用新的 Cloud VPN 网关及其关联的 VPN 隧道之前,请完成以下步骤:

  1. 在 Google Cloud 中为您的 VPC 网络配置防火墙规则
  2. 检查您的 VPN 隧道的状态。注意:此步骤包括检查高可用性 VPN 网关的高可用性配置。

后续步骤