创建连接到对等 VPN 网关的高可用性 VPN 网关

本页面介绍如何创建连接到对等 VPN 网关的高可用性 VPN 网关。

高可用性 VPN 网关使用高可用性 VPN API,可提供 99.99% 的 SLA 可用性承诺。此配置使用隧道对,即每个高可用性 VPN 网关接口上设有一个隧道。

需要为高可用性 VPN 配置以下两个网关组件:

  • Google Cloud 中的高可用性 VPN 网关
  • 您的对等 VPN 网关 - 高可用性 VPN 网关所连接的对等网络中的一个或多个物理 VPN 网关设备或软件应用。对等网关可以是本地 VPN 网关,也可以是由其他云服务提供商托管的网关。您需要在 Google Cloud 中为每个对等网关设备或服务创建外部 VPN 网关资源。

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

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

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

要求

一般要求和准则

  • 查看 Google Cloud 中动态路由的工作原理。
  • 确保您的对等 VPN 网关支持 BGP。

冗余类型

高可用性 VPN API 包含 REDUNDANCY_TYPE 选项,表示您为外部 VPN 网关资源配置的接口数。

当您配置外部 VPN 网关资源时,gcloud 命令会自动根据您在接口 ID 中提供的接口数推断出以下 REDUNDANCY_TYPE 值:

  • 一个外部 VPN 接口为 SINGLE_IP_INTERNALLY_REDUNDANT
  • 两个外部 VPN 接口为 TWO_IPS_REDUNDANCY
  • 四个外部 VPN 接口为 FOUR_IPS_REDUNDANCY

在配置外部 VPN 网关时,您必须为指明数目的外部 VPN 接口使用以下接口标识号:

  • 对于一个外部 VPN 接口,请使用值 0
  • 对于两个外部 VPN 接口,请使用值 01
  • 对于四个外部 VPN 接口,请使用值 0123

在配置连接到 Amazon Web Services (AWS) 的高可用性 VPN 外部 VPN 网关时,受支持的拓扑需要两个 AWS 虚拟专用网关 AB,每个网关具有两个外部 IP 地址。此拓扑会在 AWS 中总共生成 4 个外部 IP 地址:A1A2B1B2

  1. 将四个 AWS IP 地址配置为包含 FOUR_IPS_REDUNDANCY 的一个外部高可用性 VPN 网关,其中:
    • AWS IP 0=A1
    • AWS IP 1=A2
    • AWS IP 2=B1
    • AWS IP 3=B2
  2. 使用以下配置在高可用性 VPN 网关上创建四个隧道,以满足 99.99% 的服务等级协议 (SLA):
    • 高可用性 VPN 接口 0 连接到 AWS 接口 0
    • 高可用性 VPN 接口 0 连接到 AWS 接口 1
    • 高可用性 VPN 接口 1 连接到 AWS 接口 2
    • 高可用性 VPN 接口 1 连接到 AWS 接口 3

通过 Amazon Web Services (AWS) 设置高可用性 VPN 的高级配置步骤的概览:

  1. 创建高可用性 VPN 网关和 Cloud Router。此操作将在 GCP 端创建 2 个外部 IP 地址。
  2. 创建两个 AWS 虚拟专用网关。此操作将在 AWS 端创建 4 个外部地址。
  3. 创建两个 AWS 站点到站点 VPN 连接和客户网关,每个 AWS 虚拟专用网关各一个。为每个隧道指定一个不重叠的链路本地隧道 IP 范围,共计 4 个。例如 169.254.1.4/30。
  4. 下载通用设备类型的 AWS 配置文件。
  5. 在高可用性 VPN 网关上创建四个 VPN 隧道。
  6. 使用下载的 AWS 配置文件中的 BGP IP 地址在 Cloud Router 路由器上配置 BGP 会话。

创建 Cloud Router 路由器

配置新的高可用性 VPN 网关时,您可以创建新的 Cloud Router 路由器,也可以使用已用于现有 Cloud VPN 隧道或互连连接 (VLAN) 的 Cloud Router 路由器。但是,由于连接的特定 ASN 要求,您使用的 Cloud Router 路由器必须尚未管理与合作伙伴互连连接关联的互连连接 (VLAN) 的 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
  
  1. 您还可以查看已设置的项目 ID:
    gcloud config list --format='text(core.project)'
  

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

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

本文档中的示例还使用了 VPC 全局动态路由模式,以便 Cloud Router 路由器的所有实例都会应用其知悉的 to on-premises 路由来连接 VPC 网络的所有子网。在全局路由模式下,会与本地路由器共享连接到 VPC 网络中所有子网的路由。

创建连接到对等 VPN 的高可用性 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 网关下,选择 On-prem or Non-Google Cloud
  2. 对等 VPN 网关名称下,选择现有的对等网关,或点击新建对等 VPN 网关。如果选择现有网关,Cloud Console 会根据您在现有对等网关上配置的对等接口数来选择要配置的隧道数。如需创建新的对等网关,请完成以下步骤:
    1. 为对等 VPN 网关指定名称
    2. 对等 VPN 网关接口下,选择 onetwofour 个接口,具体取决于您的对等网关所拥有的接口类型。如需查看每种类型的示例,请参阅“拓扑”页面
    3. 在每个对等 VPN 接口的字段中,指定用于该接口的外部 IP 地址。如需了解详情,请参阅配置对等 VPN 网关
    4. 点击创建

创建 VPN 隧道

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

创建 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 接口的对等 VPN 网关时。
  • 如果您之前在高可用性 VPN 上为包含任意接口数的对等 VPN 网关设置了单个隧道,但现在想要为高可用性 VPN 网关实现 99.99% 的 SLA 正常运行时间承诺。

    1. 转到 Google Cloud Console 中的 VPN 页面。
      转到 VPN 页面
    2. 点击创建 VPN 隧道按钮。
    3. 从下拉菜单中选择需要第二个隧道的网关。
    4. 点击继续
    5. 选择一个 Cloud Router。如果您尚未配置 Cloud Router,请按照创建 VPN 隧道过程中创建 Cloud Router 路由器的步骤操作。
    6. 对于对等 VPN 网关,请选择本地或非 Google Cloud
    7. 对于对等 VPN 网关名称,请选择新隧道将使用的现有对等 VPN 网关资源。您可以点击屏幕顶部附近的 VPN 网关名称下的查看所有现有隧道链接,查看此 Cloud VPN 网关的现有对等 VPN 网关名称。
    8. 您可能会收到一条警告,提示具有相同对等 VPN 网关接口的隧道已与相同的本地 Cloud VPN 网关接口关联。如需解决此问题,请在关联的 Cloud VPN 网关接口下,选择其他高可用性 VPN 接口。
    9. 配置创建 VPN 隧道过程中列出的其余步骤,以完成隧道配置。

gcloud


创建高可用性 VPN 网关

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

  1. 创建高可用性 VPN 网关。创建网关后,系统会自动分配两个外部 IP 地址,每个 IP 地址对应一个网关接口。

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

    • network 替换为 Google Cloud 网络的名称。
    • region 替换为您需要在其中创建网关和隧道的 Google Cloud 地区
    • gw-name 替换为网关的名称。
      gcloud compute vpn-gateways create gw-name \
        --network network \
        --region region
    

    您创建的网关应类似于以下示例输出。系统已自动为每个网关接口分配了一个外部 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
    

创建 Cloud Router

  1. 完成以下命令序列,以创建 Cloud Router。在以下命令中,替换以下选项:

    • router-name 替换为与 Cloud VPN 网关同一地区的 Cloud Router 的名称。
    • google-asn 替换为尚未在对等网络中使用的任何专用 ASN(64512 至 65534、4200000000 至 4294967294)。Google ASN 将用于同一 Cloud Router 路由器上的所有 BGP 会话,且以后无法更改。
      gcloud compute routers create router-name \
        --region region \
        --network network \
        --asn google-asn
    

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

      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
    

创建外部 VPN 网关资源

创建外部 VPN 网关资源,该资源向 Google Cloud 提供关于您的一个或多个对等 VPN 网关的信息。根据对等 VPN 网关的高可用性建议,您可以为以下不同类型的本地 VPN 网关创建外部 VPN 网关资源:

  • 两个单独的对等 VPN 网关设备,这两个设备互相提供冗余性,并且各自都有自己的外部 IP 地址。
  • 使用两个单独接口的单个对等 VPN 网关,每个接口都有自己的外部 IP 地址。对于这种对等网关,您可以创建具有两个接口的单个外部 VPN 网关。
  • 具有单个外部 IP 地址的单个对等 VPN 网关。

选项 1:为两个单独的对等 VPN 网关设备创建外部 VPN 网关资源

  1. 对于此类对等网关,外部 VPN 网关的每个接口都有一个外部 IP 地址,每个地址都来自一个对等 VPN 网关设备。在以下 gcloud 命令中,替换以下选项:

    • peer-gw_name 替换为表示对等网关的名称。
    • peer-gw-ip-0 替换为对等网关的外部 IP 地址。
    • peer-gw-ip-1 替换为其他对等网关的外部 IP 地址。
      gcloud compute external-vpn-gateways create peer-gw-name \
        --interfaces 0=peer-gw-ip-0,1=peer-gw-ip-1 \
    

    创建的外部 VPN 网关资源应类似于以下示例,其中 peer-gw-ip-0peer-gw-ip-1 显示对等网关接口的实际外部地址:

      Created [https://www.googleapis.com/compute/v1/projects/project-id/global/externalVpnGateways/peer-gw].
      NAME      INTERFACE0      INTERFACE1
      peer-gw   peer-gw-ip-0    peer-gw-ip-1
    

选项 2:为具有两个单独接口的单个对等 VPN 网关创建外部 VPN 网关资源

  1. 对于此类对等网关,请创建具有两个接口的单个外部 VPN 网关。在以下 gcloud 命令中,替换以下选项:

    • peer-gw-name 替换为表示对等网关的名称。
    • peer-gw-ip-0 替换为来自对等网关的一个接口的外部 IP 地址。
    • peer-gw-ip-1 替换为对等网关中其他接口的外部 IP 地址。

      gcloud compute external-vpn-gateways create peer-gw-name \
       --interfaces 0=on-prem-gw-ip-0,1=on-prem-gw-ip-1 \
      

      创建的外部 VPN 网关资源应类似于以下示例,其中 peer-gw-ip-0peer-gw-ip-1 显示对等网关接口的实际外部地址:

      Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/externalVpnGateways/peer-gw].
      NAME      INTERFACE0      INTERFACE1
      peer-gw   peer-gw-ip-0  peer-gw-ip-1
      

选项 3:为具有单个外部 IP 地址的单个对等 VPN 网关创建外部 VPN 网关资源

  1. 对于此类对等网关,请创建具有一个接口的外部 VPN 网关。在以下 gcloud 命令中,替换以下选项:

    • peer-gw-name 替换为表示对等网关的名称。
    • peer-gw-ip-0 替换为来自对等网关的接口的外部 IP 地址。
      gcloud compute external-vpn-gateways create peer-gw-name \
        --interfaces 0=peer-gw-ip-0 \
    

    您创建的外部 VPN 网关资源应类似于以下示例,其中 peer-gw-ip-0 显示对等网关接口的实际外部地址:

      Created [https://www.googleapis.com/compute/v1/projects/project-id/global/externalVpnGateways/peer-gw].
      NAME      INTERFACE0
      peer-gw   peer-gw-ip-0
    

创建两个 VPN 隧道,分别用于高可用性 VPN 网关上的每个接口

创建 VPN 隧道时,请将 VPN 隧道的对等端指定为您之前创建的外部 VPN 网关。使用以下两个选项之一配置隧道,具体取决于外部 VPN 网关的冗余类型。

选项 1:如果外部 VPN 网关是两个单独的对等 VPN 网关设备或具有两个 IP 地址的单个设备

  1. 在这种情况下,一个 VPN 隧道需要连接到外部 VPN 网关的接口 0,另一个 VPN 隧道需要连接到外部 VPN 网关的接口 1。

    在以下用于创建每个隧道的命令中,替换以下选项:

    • tunnel-name-if0tunnel-name-if1 替换为隧道的名称。通过添加网关接口名称为隧道命名有助于以后识别隧道。
    • gw-name 替换为高可用性 VPN 网关的名称。
    • (可选)--vpn-gateway-region 是运行高可用性 VPN 网关的地区。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认计算/地区属性值。
    • peer-gw-name 替换为之前创建的外部对等网关的名称。
    • peer-ext-gw-if0peer-ext-gw-if1 替换为之前在外部对等网关上配置的接口编号。
    • 对于 IKEv1,将 ike-vers 替换为 1;对于 IKEv2,则替换为 2。如果可能,对于 IKE 版本,请使用 IKEv2。如果您的对等网关需要 IKEv1,请将 --ike-version 2 替换为 --ike-version 1
    • shared-secret 替换为您的共享密钥,该密钥必须与您在对等网关上创建的合作伙伴隧道的共享密钥相对应。如需查看建议,请参阅生成强预共享密钥
    • int-num-0 替换为您之前创建的高可用性 VPN 网关上第一个接口的编号 0
    • int-num-1 替换为您之前创建的高可用性 VPN 网关上第二个接口的编号 1

        gcloud compute vpn-tunnels create tunnel-name-if0 \
          --peer-external-gateway peer-gw-name \
          --peer-external-gateway-interface peer-ext-gw-if0  \
          --region region \
          --ike-version ike-vers \
          --shared-secret shared-secret \
          --router router-name \
          --vpn-gateway gw-name \
          --interface int-num-0
      
       gcloud compute vpn-tunnels create tunnel-name-if1 \
          --peer-external-gateway peer-gw-name \
          --peer-external-gateway-interface peer-ext-gw-if1 \
          --region region \
          --ike-version ike-vers \
          --shared-secret shared-secret \
          --router router-name \
          --vpn-gateway gw-name \
          --interface int-num-1
      

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

        Created [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/vpnTunnels/tunnel-a-to-on-prem-if-0].
        NAME                      REGION       GATEWAY        VPN_INTERFACE   PEER_GATEWAY   PEER_INTERFACE
        tunnel-a-to-on-prem-if-0  us-central1  ha-vpn-gw-a    0               peer-gw        0
        Created [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/vpnTunnels/tunnel-a-to-on-prem-if-1].
        NAME                      REGION       GATEWAY        VPN_INTERFACE   PEER_GATEWAY   PEER_INTERFACE
        tunnel-a-to-on-prem-if-1  us-central1  ha-vpn-gw-a    1               peer-gw        1
      

选项 2:如果外部 VPN 网关是具有单个外部 IP 地址的单个对等 VPN 网关

  1. 在这种情况下,两个 VPN 隧道都需要连接到外部 VPN 网关的接口 0。

    在以下用于创建每个隧道的命令中,替换以下选项:

    • tunnel-name-if0tunnel-name-if1 替换为隧道的名称。通过添加网关接口名称为隧道命名有助于以后识别隧道。
    • peer-gw-name 替换为之前创建的外部对等网关的名称。
    • peer-ext-gw-if0 替换为之前在外部对等网关上配置的接口编号。
    • (可选)--vpn-gateway-region 是运行高可用性 VPN 网关的地区。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认计算/地区属性值。
    • 对于 IKEv1,将 ike-vers 替换为 1;对于 IKEv2,则替换为 2。如果可能,对于 IKE 版本,请使用 IKEv2。如果您的对等网关需要 IKEv1,请将 --ike-version 2 替换为 --ike-version 1
    • shared-secret 替换为您的共享密钥,该密钥必须与您在对等网关上创建的合作伙伴隧道的共享密钥相对应。如需查看建议,请参阅生成强预共享密钥
    • int-num-0 替换为您之前创建的高可用性 VPN 网关上第一个接口的编号 0
    • int-num-1 替换为您之前创建的高可用性 VPN 网关上第二个接口的编号 1
      gcloud compute vpn-tunnels create tunnel-name-if0 \
        --peer-external-gateway peer-gw-name \
        --peer-external-gateway-interface peer-ext-gw-if0  \
        --region region \
        --ike-version ike-vers \
        --shared-secret shared-secret \
        --router router-name \
        --vpn-gateway gw-name \
        --interface int-num-0
    
      gcloud compute vpn-tunnels create tunnel-name_if1 \
        --peer-external-gateway peer-gw-name \
        --peer-external-gateway-interface [peer-ext-gw-if0] \
        --region region \
        --ike-version ike-vers \
        --shared-secret shared-secret \
        --router router-name \
        --vpn-gateway gw-name \
        --interface int-num-1
    

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

      Created [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/vpnTunnels/tunnel-a-to-on-prem-if-0].
      NAME                      REGION       GATEWAY        VPN_INTERFACE   PEER_GATEWAY   PEER_INTERFACE
      tunnel-a-to-on-prem-if-0  us-central1  ha-vpn-gw-a    0               peer-gw        0
      Created [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/vpnTunnels/tunnel-a-to-on-prem-if-1].
      NAME                      REGION       GATEWAY        VPN_INTERFACE   PEER_GATEWAY   PEER_INTERFACE
      tunnel-a-to-on-prem-if-1  us-central1  ha-vpn-gw-a    1               peer-gw        0
    

创建 Cloud Router 接口和 BGP 对等方

  1. 为您之前在高可用性 VPN 网关接口上配置的每个隧道创建一个 Cloud Router BGP 接口和 BGP 对等方。
    在以下命令中,替换以下选项:

    • router-interface-name-0router-interface-name-1 替换为 Cloud Router 路由器 BGP 接口的名称。使用与之前配置的隧道名称相关的名称会很有帮助。
    • 如果您使用手动配置方法,请将 ip-address-0ip-address-1 替换为您配置的高可用性 VPN 网关接口的 BGP IP 地址。每个隧道使用不同的网关接口。
    • 使用 30mask-length
    • tunnel-name-0tunnel-name-1 替换为与您配置的高可用性 VPN 网关接口关联的隧道。

    选择自动或手动配置方法来配置 BGP 接口和 BGP 对等方:

    自动

    若要让 Google Cloud 自动选择链路本地 BGP IP 地址,请执行以下步骤。

    对于第一个 VPN 隧道

    1. 将 BGP 接口添加到 Cloud Router。

      gcloud compute routers add-interface router-name \
          --interface-name router-interface-name-0 \
          --mask-length mask-length \
          --vpn-tunnel tunnel-name-0 \
          --region region
      

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

      Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-a].
      
    2. 将 BGP 对等方添加到第一个隧道的接口。将 peer-name 替换为对等 VPN 接口的名称,并将 peer-asn 替换为为对等 VPN 网关配置的 ASN。

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

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

      Creating peer [bgp-peer-tunnel-a-to-on-prem-if-0] in router [router-a]...done.
      

    对于第二个 VPN 隧道

    1. 将 BGP 接口添加到 Cloud Router。

      gcloud compute routers add-interface router-name \
          --interface-name router-interface-name-1 \
          --mask-length mask-length \
          --vpn-tunnel tunnel-name-1 \
          --region region
      
    2. 将 BGP 对等方添加到第二个隧道的接口。将 peer-name 替换为对等 VPN 接口的名称,并将 peer-asn 替换为为对等 VPN 网关配置的 ASN。

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

    手动

    若要手动分配与 Google Cloud BGP 接口和对等方关联的 BGP IP 地址,请按以下步骤操作:

    1. 对于每个 VPN 隧道,请确定 169.254.0.0/16 范围(总共 4 个地址)内 /30 块中的一对链路本地 BGP IP 地址。对于每个隧道,请将其中一个 BGP IP 地址分配给 Cloud Router,将另一个 BGP IP 地址分配给对等 VPN 网关。您还必须配置对等 VPN 设备,以使用对等 BGP IP 地址。在以下命令中,使用以下选项:
      • google-bgp-ip-0 表示用于 Cloud VPN 网关接口 0 上的隧道的 Cloud Router 路由器接口的 BGP IP。on-prem-bgp-ip-0 表示其对等体的 BGP IP。
      • google-bgp-ip-1 表示用于 Cloud VPN 网关接口 1 上的隧道的 Cloud Router 路由器接口的 BGP IP。on-prem-bgp-ip-1 表示其对等体的 BGP IP。

    对于第一个 VPN 隧道

    1. 将 BGP 接口添加到 Cloud Router。通过替换 router-interface-name-0 为接口提供名称。

      gcloud compute routers add-interface router-name \
          --interface-name router-interface-name-0 \
          --vpn-tunnel tunnel-name-0 \
          --ip-address google-bgp-ip-0 \
          --mask-length 30 \
          --region region \
      

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

      Updated [https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/routers/router-a].
      
    2. 向该接口添加一个对等 BGP。将 peer-name 替换为对等体的名称,并将 [PEER_ASN] 替换为为对等 VPN 网关配置的 ASN。

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

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

      Creating peer [bgp-peer-tunnel-a-to-on-prem-if-0] in router [router-a]...done.
      

    对于第二个 VPN 隧道

    1. 将 BGP 接口添加到 Cloud Router。通过替换 router-interface-name-1 为接口指定名称。

      gcloud compute routers add-interface router-name \
          --interface-name router-interface-name-1 \
          --vpn-tunnel tunnel-name-1 \
          --ip-address google-bgp-ip-1 \
          --mask-length 30 \
          --region region \
      
    2. 向该接口添加一个对等 BGP。将 peer-name 替换为对等体的名称,并将 peer-asn 替换为为对等 VPN 网关配置的 ASN。

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

验证 Cloud Router 路由器配置

  1. 列出 Cloud Router 路由器选择的 BGP IP 地址。如果您向现有 Cloud Router 路由器添加了新接口,则应使用最高索引编号列出新接口的 BGP IP 地址。对等 IP 地址是配置对等 VPN 网关时应使用的 BGP IP 地址。

     gcloud compute routers get-status router-name \
         --region region \
         --format='flattened(result.bgpPeerStatus[].name,
           result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'
    

    管理两个 Cloud VPN 隧道(索引 0)和(索引 1)的 Cloud Router 路由器的预期输出如下例所示,其中:

    • google-bgp-ip-0 表示用于 Cloud VPN 网关接口 0 上的隧道的 Cloud Router 路由器接口的 BGP IP,on-prem-bgp-ip-0 表示其对等方的 BGP IP。
    • google-bgp-ip-1 表示用于 Cloud VPN 网关接口 1 上的隧道的 Cloud Router 路由器接口的 BGP IP,on-prem-bgp-ip-1 表示其对等方的 BGP IP。
    result.bgpPeerStatus[0].ipAddress:     169.254.0.1 [GOOGLE_BGP_IP_0]
    result.bgpPeerStatus[0].name:          bgp-peer-tunnel-a-to-on-prem-if-0
    result.bgpPeerStatus[0].peerIpAddress: 169.254.0.2 [ON_PREM_BGP_IP_0]
    result.bgpPeerStatus[1].ipAddress:     169.254.1.1 [GOOGLE_BGP_IP_1]
    result.bgpPeerStatus[1].name:          bgp-peer-tunnel-a-to-on-prem-if-1
    result.bgpPeerStatus[1].peerIpAddress: 169.254.1.2 [ON_PREM_BGP_IP_1]
    

    您还可以使用以下命令获取 Cloud Router 路由器配置的完整列表:

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

    完整列表应如下所示:

    bgp:
      advertiseMode: DEFAULT
      asn: 65001
    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
    - interfaceName: if-tunnel-a-to-on-prem-if-1
      ipAddress: 169.254.1.1
      name: bgp-peer-tunnel-a-to-on-prem-if-1
      peerAsn: 65004
      peerIpAddress: 169.254.1.2
    creationTimestamp: '2018-10-18T11:58:41.704-07:00'
    id: '4726715617198303502'
    interfaces:
    - ipRange: 169.254.0.1/30
      linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/project-id/regions/us-central1/vpnTunnels/tunnel-a-to-on-prem-if-0
      name: if-tunnel-a-to-on-prem-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-on-prem-if-1
      name: if-tunnel-a-to-on-prem-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
    
  2. 若要完成网关配置,请继续参考完成配置

API

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

第一步:如需创建高可用性 VPN 网关,请使用 vpnGateways.insert 方法发出 POST 请求:

 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"
 }

第二步:如需创建 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"
 }

如果现有的 Cloud Router 路由器尚未管理与“合作伙伴互连”关联的互连连接的 BGP 会话,则可以使用该路由器。否则,请创建另一个 Cloud Router。

第三步:如需创建外部 VPN 网关资源,请使用 externalVpnGateways.insert 方法发出 POST 请求。

  • 对于具有一个接口的外部(对等)VPN 网关,请使用下面的示例,但只能指定一个接口 ID 和一个 ipAddress,其中 redundancyTypeSINGLE_IP_INTERNALLY_REDUNDANT
  • 对于具有两个接口的外部 VPN 网关,或者两个外部 VPN 网关(各自具有一个接口),请使用下面的 TWO_IPS_REDUNDANCY 示例。
  • 对于一个或多个具有四个外部 VPN 接口的外部 VPN 网关;例如,Amazon Web Services (AWS),请使用下面的示例,但指定 4 个接口 ID 实例和 ipAddress,且 redundancyTypeFOUR_IPS_REDUNDANCY

 POST https://www.googleapis.com/compute/v1/projects/project-id/global/externalVpnGateways
 {
   "name": "my-peer-gateway",
   "interfaces": [
     {
       "id": 0,
       "ipAddress": "192.0.2.1"
     },
     {
       "id": 1,
       "ipAddress": "192.0.2.2"
     }
   ],
   "redundancyType": "TWO_IPS_REDUNDANCY"
 }

第四步:如需创建两个 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,
   "peerExternalGateway": "https://www.googleapis.com/compute/v1/projects/project-id/global/external-vpn-gateways/my-peer-gateway",
   "peerExternalGatewayInterface": 0,
   "peerIp": "192.0.2.1",
   "router": "https://www.googleapis.com/compute/v1/projects/project-id/regions/region/routers/router-a",
   "sharedSecret": "shared_secret",
   "vpnGateway": "https://www.googleapis.com/compute/v1/projects/project-id/regions/region/vpn-gateways/ha-vpn-gw-a",
   "vpnGatewayInterface": 0
 }

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

  • name
  • peerExternalGatewayInterface
  • peerIp
  • sharedSecretsharedSecretHash(如果需要)
vpnGatewayInterface 更改为其他高可用性 VPN 网关接口的值。在此示例中,您需要将此值更改为 1

第五步:如需创建 Cloud Router BGP 接口,请使用 routers.patch 方法或 routers.update 方法发出 PATCH 或 UPDATE 请求。PATCH 仅更新您添加的参数。UPDATE 会更新 Cloud Router 的所有参数。

为第一个高可用性 VPN 网关上的每个 VPN 隧道创建一个 BGP 接口。对于第二个 BGP 接口,请使用其他 namelinkedVpnTunnel 名称和来自第一个隧道的 ipRange 所在的 /30 子网的 ipRange。对于第二个高可用性 VPN 网关上的每个 VPN 隧道,请重复此步骤和命令。

 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 隧道,请重复此命令,但更改除 namepeerAsn 以外的所有选项。

 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 网关的 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 文件。