创建 Google Cloud 到 Google Cloud 高可用性 VPN 网关

本页面介绍如何使用高可用性 VPN 网关配置将两个 Virtual Private Cloud 网络连接在一起。只要两个现有 VPC 网络中的主要和次要子网 IP 地址范围不重叠,您就可以将它们连接在一起。

如需查看此拓扑图,请参阅“拓扑”页面

如需详细了解如何选择 VPN 类型,请参阅选择网络连接产品

如需了解在设置 Cloud VPN 之前需要考虑的最佳做法,请参阅 Cloud VPN 的最佳做法

要求

一般要求和准则

创建此配置时,请务必满足以下要求,才能确保获得服务等级协议 (SLA) 承诺的 99.99% 可用性:

  • 在每个 VPC 网络中设置一个高可用性 VPN 网关。
  • 在同一个 Google Cloud 地区中设置两个高可用性 VPN 网关。
  • 在每个网关的每个接口上配置隧道。
  • 匹配网关接口,如下所述。

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

创建 Cloud Router 路由器

配置新的高可用性 VPN 网关时,您可以创建新的 Cloud Router 路由器,也可以使用已用于现有 Cloud VPN 隧道或互连连接 (VLAN) 的 Cloud Router 路由器。但是,由于连接的特定 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 帐号。

    如果您还没有 Google 帐号,请注册一个新帐号

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

  4. 安装并初始化 Cloud SDK
  1. 如果您使用 gcloud 命令,请使用以下命令设置您的项目 ID。此页面上的 gcloud 说明假设您在发出命令前已设置了项目 ID。
  gcloud config set project project-id

您还可以查看已设置的项目 ID:

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

创建自定义的 Virtual Private Cloud 网络和子网

创建高可用性 VPN 网关和隧道对之前,您必须在高可用性 VPN 网关所在地区创建一个 Virtual Private Cloud 网络和至少一个子网。

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

  • Cloud Router 路由器的所有实例会将它们获知的“指向本地”路由应用到 VPC 网络的所有子网。
  • 指向 VPC 网络中所有子网的路由会与本地路由器共享。

本文档将在两个不同的 VPC 网络中分别创建一个高可用性 VPN 网关,以供您参考:

network-1 包含以下子网:

  • 使用 IP 范围 range-1region-1 中名为 subnet-name-1 的子网
  • 使用 IP 范围 range-2region-2 中名为 subnet-name-2 的子网

network-2 包含以下子网:

  • 使用 IP 范围 range-3region-1 中名为 subnet-name-3 的子网
  • 使用 IP 范围 range-4region-3 中名为 subnet-name-4 的子网。

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

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

控制台

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

创建 Cloud VPN 网关

  1. 转到 Google Cloud Console 中的 VPN 页面。
    转到 VPN 页面
    1. 如果您是首次创建网关,请选择创建 VPN 连接按钮。
    2. 选择 VPN 设置向导
  2. 选择高可用性 VPN 网关的单选按钮。
  3. 点击继续
  4. 指定 VPN 网关名称
  5. VPC 网络下,选择现有网络或默认网络。
  6. 选择地区
  7. 点击创建并继续
  8. 控制台屏幕会刷新,刷新后会显示您的网关信息。系统会自动为每个网关接口分配两个外部 IP 地址。请记下您网关配置的详细信息,以供后续配置步骤使用。

创建对等 VPN 网关资源

对等 VPN 网关资源表示 Google Cloud 中的非 Google Cloud 网关。

  1. 创建 VPN 屏幕上的对等 VPN 网关下,选择 Google Cloud
  2. 项目下,选择将包含新网关的 Google Cloud 项目。
  3. VPN 网关名称下,选择您要同时配置的其他高可用性 VPN。
  4. 继续创建 VPN 隧道

创建 VPN 隧道

  • 如果您选择创建一个 VPN 隧道,您可以在创建 VPN 屏幕的其余部分配置单个隧道。但是,您必须稍后创建第二个隧道,才能让另一个高可用性 VPN 网关获得服务等级协议 (SLA) 承诺的 99.99% 的可用性。
  • 如果您选择创建一对 VPN 隧道(推荐),则必须配置在创建 VPN 屏幕底部显示的两个隧道对话框。
  1. 高可用性下,您可以选择连接到另一个高可用性 VPN 网关的一对隧道,也可以选择一个隧道。稍后,您可以按照此完整过程的末尾所述添加第二个隧道。
  2. Cloud Router 下,创建一个指定如下所述选项的 Cloud Router 路由器(如果尚未创建)。如果现有的 Cloud Router 路由器尚未管理与“合作伙伴互连”关联的互连连接的 BGP 会话,则可以使用该路由器。
    1. 如需创建 Cloud Router 路由器,请为新路由器指定名称说明(可选)和 Google ASN。您可以使用未在网络中其他位置使用的任何专用 ASN(645126553442000000004294967294)。Google ASN 将用于同一个 Cloud Router 路由器上的所有 BGP 会话,且以后无法更改。
    2. 点击创建以创建路由器。
  3. 在同一屏幕或屏幕底部的每个隧道的对话框中完成以下步骤。
  4. 如果您要配置一个隧道,请在关联的 Cloud VPN 网关接口下,针对此网关选择高可用性 VPN 接口/IP 地址组合,以将其与其他高可用性 VPN 网关上的网关接口关联。对于双隧道配置,此选项和关联的对等 VPN 网关接口选项均不可用,因为已为您配置了正确的接口组合。
    1. 指定隧道的名称
    2. 指定可选的说明
    3. 指定 IKE 版本。如果您的对等路由器支持默认设置 IKE v2,建议使用。
    4. 使用共享密钥指定 IKE 预共享密钥,该密钥必须与您在对等网关上创建的合作伙伴隧道的共享密钥相对应。如果您尚未在对等 VPN 网关上配置共享密钥并希望生成共享密钥,请点击生成并复制按钮。请确保将预共享密钥记录在安全位置,因为在创建 VPN 隧道后将无法检索该密钥。
    5. 点击完成
    6. 针对创建 VPN 屏幕上的所有其余隧道对话框重复隧道创建步骤。
  5. 配置完所有隧道后,点击创建并继续

创建 BGP 会话

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

以下示例在 Cloud Router 路由器实例上创建 BGP 会话,该路由器使用未经修改的基准优先级将路由通告到路由器各自的对等网络。

将此配置用于主动/主动配置,其中两端的两个隧道的优先级应匹配。省略通告基准优先级会导致两个 BGP 对等端的通告优先级相同。
对于主动/被动配置,您可以通过设置通告路由的优先级来控制 Cloud Router 路由器与对等 VPN 网关共享的“指向 Google Cloud”路由的通告基准优先级。
如需创建主动/被动配置,请为一个 BGP 会话及其对应的 VPN 隧道设置一个比其他 BGP 会话和 VPN 隧道更高的通告路由优先级。

如需详细了解通告基准优先级,请参阅路由指标

您还可以通过添加 --advertisement-mode=CUSTOM 标志并使用 --set-advertisement-ranges 指定 IP 地址范围来优化使用自定义通告所通告的路由。

如需创建 BGP 会话,请执行以下操作:

  1. 如果您不想立即配置 BGP 会话,请点击稍后配置 BGP 会话按钮,即可转到摘要和提醒屏幕。
  2. 如果您要立即配置 BGP 会话,请点击第一个 VPN 隧道的配置按钮。
  3. 创建 BGP 会话屏幕上,执行以下步骤:
    1. 指定 BGP 会话的名称
    2. 指定为对等 VPN 网关配置的对等 ASN
    3. (可选)指定通告路由的优先级
    4. 指定 Cloud Router BGP IP 地址和 BGP 对等 IP 地址。这些地址中的每一个都必须使用位于同一 /30 子网的 169.254.0.0/16 CIDR 块中的链路本地地址。请确保这些地址不是该子网的网络或广播地址。
    5. (可选)点击通告路由下拉菜单并创建自定义路由。
    6. 点击保存并继续
  4. 针对网关上配置的其余隧道重复上述步骤,并针对每个隧道使用不同的 Cloud Router BGP IP 地址和 BGP 对等 IP 地址。
  5. 配置完所有 BGP 会话后,请点击保存 BGP 配置

摘要和提醒

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

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

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

  1. 转到 Google Cloud Console 中的 VPN 页面。
    转到 VPN 页面
    1. 找到要向其添加隧道的高可用性 VPN。
    2. 点击添加 VPN 隧道按钮。
    3. 对等 VPN 网关下,选择 Google Cloud。
    4. 项目下,选择将包含新网关的 Google Cloud 项目。
    5. 对于 VPN 网关名称,请选择新隧道所连接的其他高可用性 VPN 网关。
    6. 选择向现有 VPN 隧道再添加一个 VPN 隧道以实现高可用性
    7. 选择现有 VPN 隧道下,确保已选中现有隧道。您可以点击同一屏幕顶部附近的链接,查看所有现有隧道。
    8. 指定隧道名称
    9. 指定另一个网关上的隧道所使用的同一个 IKE 版本。
    10. 使用共享密钥指定 IKE 预共享密钥,该密钥必须与您在对等网关上创建的合作伙伴隧道的共享密钥相对应。如果您尚未在对等 VPN 网关上配置共享密钥并希望生成共享密钥,请点击生成并复制按钮。请确保将预共享密钥记录在安全位置,因为在创建 VPN 隧道后将无法检索该密钥。
    11. 点击创建并继续
    12. 按照上述步骤配置和保存 BGP 会话。您也可以稍后配置 BGP。
    13. 请查看摘要提醒屏幕获取配置信息,然后点击确定

gcloud

创建高可用性 VPN 网关

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

  1. region-1 的每个网络中创建一个高可用性 VPN 网关。每个网关创建后,系统会自动分配两个外部 IP 地址,每个 IP 地址对应一个网关接口。记下这些 IP 地址,以便稍后在配置步骤中使用。

    在以下命令中,替换如下所述的选项:

    • gw-name-1gw-name-2 替换为每个网关的名称。
    • 将所有其他选项替换为您之前使用的值。

    创建第一个网关

      gcloud compute vpn-gateways create gw-name-1 \
        --network network-1 \
        --region region-1
    

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

      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-1
    
      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-central1/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-central1
    

创建每个 Cloud Router 路由器

以下说明假定您尚未创建用于管理高可用性 VPN 隧道的 BGP 会话的 Cloud Router 路由器。

除非现有 Cloud Router 路由器已经为与合作伙伴互连关联的互连连接管理 BGP 会话,否则您可以在每个 VPC 网络中使用这些路由器。

  1. 完成以下命令序列,以在每个网络中创建 Cloud Router 路由器。在以下命令中,替换如下所述的选项:

    • asn-1asn-2 替换为您尚未使用的任何专用 ASN(64512 - 65534、4200000000 - 4294967294)。对于 router-name-1 的两个接口,此示例使用 ASN 65001,对于 router-name-2 的两个接口,此示例使用 ASN 65002。
    • 将所有其他选项替换为您之前使用的值。

    创建第一个路由器

      gcloud compute routers create router-name-1 \
        --region region-1 \
        --network network-1 \
        --asn 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-1 \
        --network network-2 \
        --asn 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
    

创建 VPN 隧道

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

    • 您在 gw-name-1 的接口 0 中创建的隧道必须连接到与 network-2 中的 gw-name-2 的接口 0 关联的外部 IP 地址,并且
    • gw-name-1 的接口 1 的隧道必须连接到与 gw-name-2 的接口 1 关联的外部 IP 地址。
    • network-1 中的 gw-name-1 上创建 VPN 隧道时,必须指定 network-2gw-name-2 的信息。Google 会自动将 gw-name-1 的接口 0 中的隧道连接到 gw-name-2 的接口 0,并将 gw-name-1 的接口 1 中的隧道连接到 gw-name-2 的接口 1。

    gw-name-1 上创建两个隧道

    1. network-1gw-name-1 的两个接口上各创建一个 VPN 隧道。在以下命令中,替换如下所述的选项:

      • tunnel-name-gw1-if0tunnel-name-gw1-if1 替换为 gw-name-1 中每个隧道的名称。通过添加网关接口名称为隧道命名有助于以后识别隧道。
      • 使用 gw-name-2 作为 --peer-gcp-gateway 的值。
      • region 替换为 gw-name-1 所在的地区。
      • (可选)--vpn-gateway-region 是运行高可用性 VPN 网关的地区。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认计算/地区属性值。
      • 对于 IKEv2,将 ike-vers 替换为 2。由于两个隧道都连接到另一个高可用性 VPN 网关,因此建议使用 IKEv2。
      • shared-secret 替换为您的共享密钥,该密钥必须与您在接口 0 和接口 1 上通过 gw-name-2 创建的相应隧道使用的共享密钥相同。如需查看建议,请参阅生成强预共享密钥
      • gw-name-1 上的第一个接口的 int-num-0 替换为编号 0
      • gw-name-1 上的第二个接口的 int-num-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-1 \
          --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-1 \
          --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     INTERFACE  PEER_GCP_GATEWAY
        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     INTERFACE  PEER_GCP_GATEWAY
        tunnel-a-to-b-if-1 us-central1  ha-vpn-gw-a     1          ha-vpn-gw-b
      

    gw-name-2 上创建两个隧道

    1. network-2gw-name-2 的两个接口上各创建一个 VPN 隧道。
      • 您在 gw-name-2 的接口 0 中创建的隧道必须连接到与 network-1 中的 gw-name-1 的接口 0 关联的外部 IP 地址,并且
      • gw-name-2 的接口 1 的隧道必须连接到与 gw-name-1 的接口 1 关联的外部 IP 地址。
      • region 替换为 gw-name-2 所在的地区。
      • (可选)--vpn-gateway-region 是运行 VPN 网关的地区。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认计算/地区属性值。

        在以下命令中,替换如下所述的选项:
      • tunnel-name-gw2-if0tunnel-name-gw2-if1 替换为 gw-name-2 中每个隧道的名称。通过添加网关接口名称为隧道命名有助于以后识别隧道。
      • 使用 gw-name-1 作为 --peer-gcp-gateway 的值。
      • --pepe-gcp-gateway-region 的值必须与 VPN 隧道位于同一地区。如果未指定,则系统会自动设置该值。在此示例中,地区为 region-1
      • 对于 IKEv2,将 ike-vers 替换为 2。由于这些隧道均连接到在上一步骤中创建的两个隧道,因此它们必须使用相同的 IKE 版本(建议使用 IKEv2)。
      • shared-secret 替换为您的共享密钥,该密钥必须与您在 gw-name-1 的每个接口上创建的合作伙伴隧道的共享密钥相对应。如需查看建议,请参阅生成强预共享密钥
      • gw-name-2 替换为您在网关配置步骤中配置的第二个网关的名称。
      • gw-name-2 上的第一个接口的 int-num-0 替换为编号 0
      • gw-name-2 上的第二个接口的 int-num-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-2 int-num-0 上创建第一个隧道

      gcloud compute vpn-tunnels create tunnel-name-gw2-if0 \
       --peer-gcp-gateway gw-name-1 \
       --region region-1 \
       --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-1 \
        --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     INTERFACE  PEER_GCP_GATEWAY
      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     INTERFACE  PEER_GCP_GATEWAY
      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

创建 Cloud Router 路由器接口和 BGP 对等端

下表简要介绍了您在本部分中配置的 Cloud Router 路由器接口和 BGP 对等端,并介绍了您为每个接口指定的 IP 范围和对等 IP 之间的关系。例如,router-1 的第一个接口的对等 IP 为 169.254.0.2。此 IP 来自 router-2 第一个接口(即 169.254.0.2/30)的 IP 地址范围。

路由器 BGP 接口名称 IP 范围 对等 IP 对等 ASN
router-1 if-tunnel-a-to-b-if-0 169.254.0.1/30 169.254.0.2 65002
router-2 if-tunnel-b-to-a-if-0 169.254.0.2/30 169.254.0.1 65001
router-1 if-tunnel-a-to-b-if-1 169.254.1.1/30 169.254.1.2 65002
router-2 if-tunnel-b-to-a-if-1 169.254.1.2/30 169.254.1.1 65001

如需了解详情,请参阅本部分中的说明,其中包括配置后的示例输出。

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

以下示例在 Cloud Router 路由器实例上创建 BGP 会话,该路由器使用未经修改的基准优先级将路由通告到路由器各自的对等网络。将此配置用于主动/主动配置,其中两端的两个隧道的优先级应匹配。如本示例所示,省略 --advertised-base-priority 会导致两个 BGP 对等端的通告优先级相同。

对于主动/被动配置,您可以在添加更新 BGP 对等端时使用 --advertised-route-priority 标志控制 Cloud Router 路由器与您的对等 VPN 网关共享的“指向 Google Cloud”路由的通告基准优先级。

如需创建主动/被动配置,请为与一个 VPN 隧道对应的 BGP 会话设置一个比其他 VPN 隧道的 BGP 会话更高的通告路由优先级。

如需详细了解通告基准优先级,请参阅路由指标

您还可以通过添加 --advertisement-mode=CUSTOM 标志并使用 --set-advertisement-ranges 指定 IP 地址范围来优化使用自定义通告所通告的路由。

如需创建 Cloud Router 路由器接口和 BGP 对等端,请执行以下操作:

  1. 在隧道 tunnel-name-gw1-if0router-name-1 上创建 BGP 接口和 BGP 对等端。该 BGP 接口使用两个 BGP IP 地址将 gw-1 的接口 0 上的 tunnel-name-gw1-if0 连接到 gw-2 的接口 0。在以下命令中,替换如下所述的选项:

    • router-1-interface-name-0 替换为 Cloud Router 路由器 BGP 接口的名称。使用与 tunnel-name-gw1-if0 相关的名称会很有帮助。
    • ip-address 替换为尚未使用的 169.254.0.0/16 块中的 BGP IP 地址。本示例使用 169.254.0.1
    • 使用 30mask-length
    • peer-name 替换为描述 BGP 对等端的名称。使用与 tunnel-name-gw1-if0 相关的名称会很有帮助。
    • peer-ip-address 替换为尚未使用的 169.254.0.0/16 块中的 BGP IP 地址。本示例使用 169.254.0.2
    • peer-asn 替换为用于另一个 Cloud Router 路由器 router-name-2 上所有接口的 ASN 编号。此示例使用 ASN 编号 65002

      1. 如需为 tunnel-name-gw1-if0 创建 BGP 接口,请输入以下命令:

        gcloud compute routers add-interface router-name-1 \
           --interface-name router-1-interface-name-0 \
           --ip-address ip-address \
           --mask-length mask-length \
           --vpn-tunnel tunnel-name-gw1-if0 \
           --region region-1
        
      2. 如需为 tunnel-name-gw1-if0 创建 BGP 对等端,请输入以下命令:

        gcloud compute routers add-bgp-peer router-name-1 \
           --peer-name peer-name \
           --interface router-1-interface-name-0 \
           --peer-ip-address peer-ip-address \
           --peer-asn peer-asn \
           --region region-1
        

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

         Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-a].
        
  2. 在隧道 tunnel-name-gw1-if1router-name-1 上创建 BGP 接口和 BGP 对等端。该 BGP 接口使用两个 BGP IP 地址将 gw-1 的接口 1 上的 tunnel-name-gw1-if1 连接到 gw-2 的接口 1。在以下命令中,替换如下所述的选项:

    • router-1-interface-name-1 替换为 Cloud Router 路由器 BGP 接口名称。使用与 tunnel-name-gw1-if1 相关的名称会很有帮助。
    • ip-address 替换为尚未使用的 169.254.0.0/16 块中的 BGP IP 地址。本示例使用 169.254.1.1
    • 使用 30mask-length
    • peer-name 替换为描述 BGP 对等端的名称。使用与 tunnel-name-gw1-if1 相关的名称会很有帮助。
    • peer-ip-address 替换为尚未使用的 169.254.0.0/16 块中的 BGP IP 地址。本示例使用 169.254.1.2
    • peer-asn 替换为用于另一个 Cloud Router 路由器 router-name-2 上所有接口的 ASN 编号。此示例使用 ASN 编号 65002

      1. 如需为 tunnel-name-gw1-if1 创建 BGP 接口,请输入以下命令:

        gcloud compute routers add-interface router-name-1 \
           --interface-name router-1-interface-name-1 \
           --ip-address ip-address \
           --mask-length mask-length \
           --vpn-tunnel tunnel-name-gw1-if1 \
           --region region-1
        
      2. 如需为 tunnel-name-gw1-if1 创建 BGP 对等端,请输入以下命令:

        gcloud compute routers add-bgp-peer router-name-1  \
           --peer-name peer-name \
           --interface router1-interface-name-1 \
           --peer-ip-address peer-ip-address \
           --peer-asn peer-asn \
           --region region-1
        

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

         Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-a ].
        
  3. 输入以下命令,验证 router-1 的设置

    gcloud compute routers describe router-1  \
        --region region-1
    

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

     bgp:
       advertisemode: DEFAULT
       asn: 65001
     bgpPeers:
     — interfaceName: if-tunnel-a-to-b-if-0
       ipAddress: 169.254.0.1
       name: bgp-peer-tunnel-a-to-b-if-0
       peerAsn: 65002
       peerIpAddress: 169.254.0.2
     bgpPeers:
     — interfaceName: if-tunnel-a-to-b-if-1
       ipAddress: 169.254.1.1
       name: bgp-peer-tunnel-a-to-b-if-1
       peerAsn: 65002
       peerIpAddress: 169.254.1.2
     creationTimestamp: '2015-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 接口和 BGP 对等端。该 BGP 接口使用两个 BGP IP 地址将 gw-2 的接口 0 上的 tunnel-name-gw2-if0 连接到 gw-1 的接口 0。在以下命令中,替换如下所述的选项:

    • router-2-interface-name-0 替换为 Cloud Router 路由器 BGP 接口名称。使用与 tunnel-name-gw2-if0 相关的名称会很有帮助。
    • ip-address 替换为之前用于此网关和接口的 BGP IP 地址。此示例使用 169.254.0.2。
    • 使用 30mask-length
    • peer-name 替换为描述 BGP 对等端的名称。使用与 tunnel-name-gw2-if0 相关的名称会很有帮助。
    • peer-ip-address 替换为之前用于对等网关和接口的 IP 地址。此示例使用 169.254.0.1
    • peer-asn 替换为之前设置的用于 router-name-1 上所有接口的 ASN 编号。此示例使用 ASN 编号 65001
    1. 如需为 tunnel-name-gw2-if0 创建 BGP 接口,请输入以下命令:

      gcloud compute routers add-interface router-name-2 \
         --interface-name router-2-interface-name-0 \
         --ip-address ip-address \
         --mask-length mask-length \
         --vpn-tunnel tunnel-name-gw2-if0 \
         --region region-1
      

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

    2. 如需为 tunnel-name-gw2-if0 创建 BGP 对等端,请输入以下命令:

       gcloud compute routers add-bgp-peer router-name-2 \
         --peer-name peer-name \
         --interface router-2-interface-name-0 \
         --peer-ip-address peer-ip-address \
         --peer-asn peer-asn \
         --region region-1
      

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

       Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-b ].
      
  5. 在隧道 tunnel-name-gw2-if1router-name-2 上创建 BGP 接口和 BGP 对等端。该 BGP 接口使用两个 BGP IP 地址将 gw-2 的接口 1 上的 tunnel-name-gw2-if1 连接到 gw-1 的接口 1。在以下命令中,替换如下所述的选项:

    • router-2-interface-name-1 替换为 Cloud Router 路由器 BGP 接口名称。使用与 tunnel-name-gw2-if1 相关的名称会很有帮助。
    • ip-address 替换为之前用于此网关和接口的 BGP IP 地址。此示例使用 169.254.1.2
    • 使用 30mask-length
    • peer-name 替换为描述 BGP 对等端的名称。使用与 tunnel-name-gw2-if1 相关的名称会很有帮助。
    • peer-ip-address 替换为尚未使用的 169.254.0.0/16 块中的 BGP IP 地址。本示例使用 169.254.1.1
    • peer-asn 替换为之前设置的用于 router-name-1 上所有接口的 ASN 编号。此示例使用 ASN 编号 65001
    1. 如需为 tunnel-name-gw2-if1 创建 BGP 接口,请输入以下命令:

      gcloud compute routers add-interface router-name-2 \
         --interface-name router-2-interface-name-1 \
         --ip-address ip-address \
         --mask-length mask-length \
         --vpn-tunnel tunnel-name-gw2-if1 \
         --region region-1
      

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

      Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-b ].
      
    2. 如需为 tunnel-name-gw2-if1 创建 BGP 对等端,请输入以下命令:

      gcloud compute routers add-bgp-peer router-name-2  \
         --peer-name peer-name \
         --interface router-2-interface-name-1 \
         --peer-ip-address peer-ip-address \
         --peer-asn peer-asn \
         --region region-1
      

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

       Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-b ].
      
  6. 输入以下命令,验证 router-2 的设置

    gcloud compute routers describe router-2  \
       --region region-1
    

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

     bgp:
       advertiseMode: DEFAULT
       asn: 65002
     bgpPeers:
     — interfaceName: if-tunnel-b-to-a-if-0
       ipAddress: 169.254.0.2
       name: bgp-peer-tunnel-b-to-a-if-0
       peerAsn: 65001
       peerIpAddress: 169.254.0.1
     bgpPeers:
     — interfaceName: if-tunnel-b-to-a-if-1
       ipAddress: 169.254.1.2
       name: bgp-peer-tunnel-b-to-a-if-1
       peerAsn: 65001
       peerIpAddress: 169.254.1.1
     creationTimestamp: '2015-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

第一步:如需创建高可用性 VPN 网关,请向 vpnGateways.insert 方法发出 POST 请求。重复此命令以创建另一个高可用性 VPN 网关,并针对另一个网关使用 namenetworkregion

 POST https://www.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"
 }

第二步

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

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

 POST https://www.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 隧道,请向 vpnTunnels.insert 方法发出 POST 请求。

输入以下命令,以创建第一个隧道:

 POST https://www.googleapis.com/compute/v1/projects/project-id/regions/region/vpnTunnels
 {
   "name": "ha-vpn-gw-a-tunnel-0",
   "ikeVersion": 2,
   "peerIp": "192.0.2.1",
   "router": "https://www.googleapis.com/compute/v1/projects/project-id/regions/region/routers/router-a",
   "sharedSecret": "974;va'oi3-1",
   "vpnGateway": "https://www.googleapis.com/compute/v1/projects/project-id/regions/region/vpn-gateways/ha-vpn-gw-a",
   "vpnGatewayInterface": 0
 }

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

  • name
  • peerIp
  • sharedSecretsharedSecretHash(如果需要)

对于第二个隧道,请将 vpnGatewayInterface 参数更改为另一个高可用性 VPN 网关接口的值。在此示例中,您需要将此值更改为 1

重复整个步骤,为连接到第一个高可用性 VPN 网关的第二个高可用性 VPN 网关创建两个隧道,但使用 gcloud 命令示例作为参考来更改参数。

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

以下示例在 Cloud Router 路由器实例上创建 BGP 会话,该路由器使用未经修改的基准优先级将路由通告到路由器各自的对等网络。将此配置用于主动/主动配置,其中两端的两个隧道的优先级应匹配。如本示例所示,省略参数 advertised-route-priority 会导致两个 BGP 对等端的通告优先级相同。

对于主动/被动配置,您可以控制 Cloud Router 路由器与您的对等 VPN 网关共享的“指向 Google Cloud”路由的通告基准优先级。如需配置此优先级,请在添加或更新 BGP 对等端时使用 advertised-route-priority 参数。

如需创建主动/被动配置,请为与一个 VPN 隧道对应的 BGP 会话设置一个比其他 VPN 隧道的 BGP 会话更高的通告路由优先级。

如需详细了解通告基准优先级,请参阅路由指标

您还可以通过添加 advertiseMode 参数并将其值设置为 custom,同时使用 advertisedIpRanges 参数指定 IP 地址范围来优化使用自定义通告所通告的路由。

第四步:如需创建 Cloud Router BGP 接口,请向 routers.patch 方法或 routers.update 方法发出 PATCH 或 UPDATE 请求。PATCH 仅更新您添加的参数。UPDATE 会更新 Cloud Router 路由器的所有参数。为高可用性 VPN 网关上的每个 VPN 隧道创建一个 BGP 接口。

 PATCH https://www.googleapis.com/compute/v1/projects/project-id/regions/region/routers/{resourceId}
 {
   "interfaces": [
     {
       "name": "if-tunnel-a-to-on-prem-if-0",
       "linkedVpnTunnel": "ha-vpn-gw-a-tunnel-0",
       "ipRange": "169.254.0.1/30"
     }
   ]
 }

第五步:如需向每个 VPN 隧道的 Cloud Router 路由器添加 BGP 对等端,请向 routers.insert 方法发出 POST 请求。对于另一个 VPN 隧道,请重复此命令,但更改除 name 和“peerAsn”以外的所有选项。

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

 POST https://www.googleapis.com/compute/v1/projects/project-id/regions/region/routers
 {
   "name": "router-a",
   "network": "network-a",
   "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"
     }
   ]
  }
 

第六步:使用空请求正文,通过 routers.getRouterStatus 方法验证 Cloud Router 路由器配置:

 POST https://www.googleapis.com/compute/v1/projects/project-id/regions/region/routers

完成配置

您必须先完成以下步骤,然后才能使用新的 Cloud VPN 网关及其关联的 VPN 隧道:

  1. 设置对等 VPN 网关并配置其中相应的一个或多个隧道。请参阅以下页面:
  2. 根据需要在 Google Cloud 和对等网络中配置防火墙规则。如需查看建议,请参阅“防火墙规则”页面
  3. 检查您的 VPN 隧道的状态,并检查高可用性 VPN 网关的配置是否具备高可用性。
应用 VPN 组织政策

应用组织政策限制条件以限制对等 VPN 网关的 IP 地址

您可以创建 Google Cloud 组织政策限制条件,用于定义通过传统 VPN 或高可用性 VPN 隧道允许或拒绝对等 VPN 网关的 IP 地址集。此限制条件包含这些对等 IP 地址的允许列表或拒绝列表,这只会影响在您应用限制条件后创建的 Cloud VPN 隧道。如需了解详情,请参阅 Cloud VPN 概览

所需权限

若要在组织级或项目级设置对等 IP 限制条件,您必须先获得组织的 Organization Policy Administrator (orgpolicy.policyAdmin) 角色

如何设置限制条件

如需创建组织政策并将其与组织、文件夹或项目关联,请使用后续部分中列出的示例,并按照使用限制条件中的步骤操作。

通过 Cloud VPN 隧道限制来自特定对等 IP 地址的连接

如需仅允许特定的对等 IP 地址,请执行以下步骤:

  1. 输入以下命令,查找您的组织 ID:
    gcloud organizations list

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

          DISPLAY NAME             ID
          example-organization     29252605212
        
  2. 创建用于定义政策的 JSON 文件。您必须以 JSON 文件的形式提供政策,如以下示例所示:

         {
           "constraint": "constraints/compute.restrictVpnPeersIPs",
           "listPolicy": {
             "allowedValues": [
               "100.1.1.1",
             ],
           }
         }
       
  3. 使用 gcloud Resource Manager set-policy 命令设置组织政策,传递 JSON 文件并使用您在上一步中找到的 organization-id

通过 Cloud VPN 隧道限制来自任何对等 IP 的连接

如需禁止创建任何新的 Cloud VPN 隧道,请按照此示例限制条件中的步骤操作。

  1. 在您要为其设置政策的资源层次结构中查找组织 ID 或节点 ID。
  2. 创建一个 JSON 文件,如以下示例所示。

        {
          "constraint": "constraints/compute.restrictVpnPeersIPs",
          "listPolicy": {
            "allValues": "DENY"
          }
        }
    
  3. 输入用于限制特定对等 IP 地址的同一命令,以传入 JSON 文件。