创建使用动态路由的传统 VPN 网关

本页面介绍如何使用动态路由创建传统 VPN 网关和一个使用边界网关协议 (BGP) 的隧道。

借助动态路由,您无需指定本地或远程流量选择器,而是使用 Cloud Router 路由器。路由信息会动态交换。

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

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

  • 如需详细了解 Cloud VPN,请参阅 Cloud VPN 概览

  • 如需了解本页面中所用术语的定义,请参阅关键术语

要求

一般准则

在 Compute Engine 虚拟机上安装第三方 VPN 软件

创建使用动态路由的传统 VPN 隧道时,必须将为对等 VPN 网关接口指定的 IP 地址分配给 Compute Engine 虚拟机。

因此,您必须先在 Compute Engine 虚拟机上安装第三方 VPN 软件,然后才能创建任何传统 VPN 隧道。配置传统 VPN 隧道时,请将 Compute Engine 虚拟机的外部 IP 地址指定为对等 VPN 网关接口。

此外,对等 VPN 网关接口的 IP 地址必须从 Google 拥有的区域级外部 IPv4 地址池分配。该 IP 地址不能属于自备 IP 地址 (BYOIP) 范围。

创建 Cloud Router 路由器

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

准备工作

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

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    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 网络和子网

创建传统 VPN 网关和隧道之前,请在传统 VPN 网关所在区域创建一个 Virtual Private Cloud (VPC) 网络和至少一个子网。

创建网关和隧道

控制台

配置网关

  1. 进入 Google Cloud 控制台中的 VPN 页面。
    转到 VPN 页面
    1. 如果您是首次创建网关,请选择创建 VPN 连接按钮。
    2. 选择 VPN 设置向导
  2. 选择传统 VPN 的单选按钮。
  3. 点击继续
  4. 创建 VPN 连接页面上,指定以下网关设置:
    • 名称 - VPN 网关的名称。该名称以后无法更改。
    • 说明 -(可选)添加说明。
    • 网络 - 指定要在其中创建 VPN 网关和隧道的现有 VPC 网络。
    • 区域 - Cloud VPN 网关和隧道是区域对象。选择网关所在的 Google Cloud 区域。不同区域中的实例和其他资源可按照路由顺序使用隧道发送出站流量。为获得最佳性能,网关和隧道应位于相关 Google Cloud 资源所在的同一区域中。
    • IP 地址 - 创建或选择现有的区域外部 IP 地址

配置隧道

  1. 隧道部分中为新隧道项指定以下内容:

    • 名称 - VPN 隧道的名称。该名称以后无法更改。
    • 说明 - 输入说明(可选)。
    • 远程对等 IP 地址 - 指定对等 VPN 网关的外部 IP 地址。
    • IKE 版本 - 选择对等 VPN 网关支持的相应 IKE 版本。推荐选择 IKEv2(如果受对等设备支持)。

    • 共享密钥 - 提供用于身份验证的预共享密钥。Cloud VPN 隧道的共享密钥必须与在对等 VPN 网关上配置对应隧道时使用的共享密钥一致。您可以按照这些说明生成加密型强共享密钥。

    • 路由选项 - 选择动态 (BGP)。 您只能使用动态路由连接到在 Google Cloud 虚拟机实例中运行的第三方 VPN 网关软件。

    • Cloud Router - 如果您尚未创建,请指定如下所述的选项创建一个新的 Cloud Router 路由器。如果 Cloud Router 路由器尚未管理与“合作伙伴互连”关联的互连连接的 BGP 会话,则可以使用现有的 Cloud Router 路由器。如果您选择现有 Cloud Router 路由器,您仍将创建新的 BGP 会话,但 Google ASN 是相同的。如需创建新的 Cloud Router,请指定以下详细信息:

      • 名称 - Cloud Router 路由器的名称。该名称以后无法更改。
      • 说明 - 输入说明(可选)。
      • Google ASN - 选择专用 ASN645126553442000000004294967294)。此 Google ASN 会用于由 Cloud Router 路由器管理的所有 BGP 会话。此 ASN 以后无法更改。
      • 点击保存并继续
    • BGP 会话 - 点击铅笔图标,然后指定以下详细信息。完成后,点击保存并继续

      • 名称 - BGP 会话的名称。该名称以后不能更改。
      • 对等 ASN - 您的对等 VPN 网关使用的公共 ASN 或专用 ASN645126553442000000004294967294)。
      • 通告的路由优先级 -(可选)Cloud Router 路由器在通告“到 Google Cloud”的路由时使用的基本优先级。如需了解详情,请参阅通告的前缀和优先级。您的对等 VPN 网关会将这些值作为 MED 值导入。
      • Cloud Router BGP IPBGP 对等 IP - 两个 BGP 接口 IP 地址必须是属于 169.254.0.0/16 块的通用 /30 CIDR 的链路本地 IP 地址。每个 BGP IP 定义用于交换路由信息的相应链路本地 IP。例如,169.254.1.1169.254.1.2 属于通用 /30 块。
  2. 如需在同一网关上创建更多隧道,请点击添加隧道并重复以上步骤。您可以稍后添加更多隧道

  3. 点击创建

gcloud

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

  • PROJECT_ID 替换为项目的 ID。
  • NETWORK 替换为 Google Cloud 网络的名称。
  • REGION 替换为您需要在其中创建网关和隧道的 Google Cloud 区域
  • (可选)--target-vpn-gateway-region 是运行传统 VPN 网关的区域。其值应与 --region 相同。如果未指定,则系统会自动设置此选项。该选项会替换此命令调用中的默认计算/区域属性值。
  • GW_NAME 替换为网关的名称。
  • GW_IP_NAME 替换为网关所用外部 IP 的名称

完成以下命令序列以创建 Google Cloud 网关:

  1. 为 Cloud VPN 网关创建资源:

    1. 创建“目标 VPN 网关”对象。

      gcloud compute target-vpn-gateways create GW_NAME \
          --network NETWORK \
          --region REGION \
          --project PROJECT_ID
      
    2. 保留一个区域外部(静态)IP 地址:

      gcloud compute addresses create GW_IP_NAME \
          --region REGION \
          --project PROJECT_ID
      
    3. 请记下此 IP 地址(以便在配置对等 VPN 网关时使用):

      gcloud compute addresses describe GW_IP_NAME \
          --region REGION \
          --project PROJECT_ID \
          --format='flattened(address)'
      
    4. 创建三个转发规则。这些规则指示 Google Cloud 将 ESP (IPsec)、UDP 500 和 UDP 4500 流量发送到网关。

       gcloud compute forwarding-rules create fr-GW_NAME-esp \
           --load-balancing-scheme=EXTERNAL \
           --ip-protocol ESP \
           --address GW_IP_NAME \
           --target-vpn-gateway GW_NAME \
           --region REGION \
           --project PROJECT_ID
      
      gcloud compute forwarding-rules create fr-GW_NAME-udp500 \
          --load-balancing-scheme=EXTERNAL \
          --ip-protocol UDP \
          --ports 500 \
          --address GW_IP_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
      gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \
          --load-balancing-scheme=EXTERNAL \
          --ip-protocol UDP \
          --ports 4500 \
          --address GW_IP_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
  2. 如果您尚未创建 Cloud Router 路由器,请使用以下命令进行创建。替换如下所示的选项。如果 Cloud Router 路由器尚未管理与“合作伙伴互连”关联的互连连接的 BGP 会话,则可以使用现有的 Cloud Router 路由器。

    • ROUTER_NAME 替换为 Cloud Router 路由器的名称。
    • GOOGLE_ASN 替换为专用 ASN645126553442000000004294967294)。Google ASN 将用于同一个 Cloud Router 路由器上的所有 BGP 会话,且以后无法更改。
      gcloud compute routers create ROUTER_NAME \
      --asn GOOGLE_ASN \
      --network NETWORK \
      --region REGION \
      --project PROJECT_ID
    
  3. 使用以下详细信息创建 Cloud VPN 隧道:

    • TUNNEL_NAME 替换为隧道的名称。
    • ON_PREM_IP 替换为对等 VPN 网关的外部 IP 地址。
    • 对于 IKEv1,将 IKE_VERS 替换为 1;对于 IKEv2,则替换为 2
    • SHARED_SECRET 替换为您的共享密钥。Cloud VPN 隧道的共享密钥必须与在对等 VPN 网关上配置对应隧道时使用的共享密钥一致。您可以按照这些说明生成加密型强共享密钥。
    • ROUTER_NAME 替换为您要用于管理 Cloud VPN 隧道路由的 Cloud Router 路由器的名称。在创建隧道之前,Cloud Router 路由器必须已经存在。

      gcloud compute vpn-tunnels create TUNNEL_NAME \
          --peer-address ON_PREM_IP \
          --ike-version IKE_VERS \
          --shared-secret SHARED_SECRET \
          --router ROUTER_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
  4. 通过创建接口和 BGP 对等体,为 Cloud Router 路由器配置 BGP 会话。选择以下方法之一:

    • 让 Google Cloud 自动选择链路本地 BGP IP 地址

      1. 将新接口添加到 Cloud Router 路由器。通过替换 INTERFACE_NAME 为接口提供名称。

        gcloud compute routers add-interface ROUTER_NAME \
            --interface-name INTERFACE_NAME \
            --vpn-tunnel TUNNEL_NAME \
            --region REGION \
            --project PROJECT_ID
        
      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 INTERFACE_NAME \
            --region REGION \
            --project PROJECT_ID
        

        如果要为对等方定义自定义已知路由,请添加 --set-custom-learned-route-ranges 标志。您还可以选择使用 --custom-learned-route-priority 标志为路由设置介于 065535(含)之间的优先级值。每个 BGP 会话可以有一个优先级值,该值会应用于您为该会话配置的所有自定义已知路由。如需详细了解此功能,请参阅自定义已知路由

        gcloud compute routers add-bgp-peer ROUTER_NAME \
            --peer-name=PEER_NAME_0 \
            --peer-asn=PEER_ASN \
            --interface=ROUTER_INTERFACE_NAME_0 \
            --region=REGION \
            --set-custom-learned-route-ranges=IP_ADDRESS_RANGES \
            --custom-learned-route-priority=PRIORITY
        
      3. 列出 Cloud Router 路由器选择的 BGP IP 地址。如果您向现有 Cloud Router 路由器添加了新接口,则应使用最高索引编号列出新接口的 BGP IP 地址。对等 IP 地址是配置对等 VPN 网关时应使用的 BGP IP。

        gcloud compute routers get-status ROUTER_NAME \
             --region REGION \
             --project PROJECT_ID \
             --format='flattened(result.bgpPeerStatus[].ipAddress, \
             result.bgpPeerStatus[].peerIpAddress)'
        

        管理单个 Cloud VPN 隧道(索引 0)的 Cloud Router 路由器的预期输出如下所示,其中 GOOGLE_BGP_IP 表示 Cloud Router 路由器接口的 BGP IP,ON_PREM_BGP_IP 表示其对等体的 BGP IP。

        result.bgpPeerStatus[0].ipAddress:     GOOGLE_BGP_IP
        result.bgpPeerStatus[0].peerIpAddress: ON_PREM_BGP_IP
        
    • 手动分配与 Google Cloud BGP 接口和对等体关联的 BGP IP 地址

      1. 确定 169.254.0.0/16 范围内 /30 块中的一对链路本地 BGP IP 地址。通过替换 GOOGLE_BGP_IP,在下一命令中将其中一个 BGP IP 地址分配给 Cloud Router 路由器。另一个 BGP IP 地址用于您的对等 VPN 网关。您必须将设备配置为使用该地址,并在下面的最后一个命令中替换 ON_PREM_BGP_IP

      2. 将新接口添加到 Cloud Router 路由器。通过替换 INTERFACE_NAME 为接口指定名称。

        gcloud compute routers add-interface ROUTER_NAME \
            --interface-name INTERFACE_NAME \
            --vpn-tunnel TUNNEL_NAME \
            --ip-address GOOGLE_BGP_IP \
            --mask-length 30 \
            --region REGION \
            --project PROJECT_ID
        
      3. 将对等 BGP 添加到接口。将 PEER_NAME 替换为对等体的名称,并将 PEER_ASN 替换为为对等 VPN 网关配置的 ASN。

        gcloud compute routers add-bgp-peer ROUTER_NAME \
            --peer-name PEER_NAME \
            --peer-asn PEER_ASN \
            --interface INTERFACE_NAME \
            --peer-ip-address ON_PREM_BGP_IP \
            --region REGION \
            --project PROJECT_ID
        

        如果要为对等方定义自定义已知路由,请添加 --set-custom-learned-route-ranges 标志。您还可以选择使用 --custom-learned-route-priority 标志为路由设置介于 065535(含)之间的优先级值。每个 BGP 会话可以有一个优先级值,该值会应用于您为该会话配置的所有自定义已知路由。如需详细了解此功能,请参阅自定义已知路由

        gcloud compute routers add-bgp-peer ROUTER_NAME \
            --peer-name=PEER_NAME_0 \
            --peer-asn=PEER_ASN \
            --interface=ROUTER_INTERFACE_NAME_0 \
            --region=REGION \
            --set-custom-learned-route-ranges=IP_ADDRESS_RANGES \
            --custom-learned-route-priority=PRIORITY
        

完成配置

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

  1. 使用 Google Cloud 虚拟机实例上的第三方 VPN 软件完成对等 VPN 网关配置。在其中配置相应的隧道。您只能将动态路由与传统 VPN 搭配使用,以连接到在 Google Cloud 中运行的第三方 VPN 软件。
  2. 根据需要在 Google Cloud 和对等网络中配置防火墙规则
  3. 检查您的 VPN 隧道和转发规则的状态

后续步骤