创建使用静态路由的传统 VPN

本页面介绍了如何使用静态路由创建传统 VPN 网关和一个隧道。此隧道可以基于政策也可以基于路由。

对于基于路由的 VPN,您只能指定远程流量选择器。如需指定本地流量选择器,请改为创建使用基于政策路由的 Cloud VPN 隧道。

传统 VPN 不支持 IPv6。

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

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

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

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

路由选项

当您使用 Google Cloud Console 创建基于政策的隧道时,传统 VPN 会执行以下任务:

  • 将该隧道的本地流量选择器设置为您指定的 IP 地址范围
  • 将该隧道的远程流量选择器设置为您在远程网络 IP 地址范围字段中指定的 IP 地址范围。
  • 对于远程网络 IP 地址范围中的每个范围,Google Cloud 会创建一个自定义静态路由,其目标(前缀)是范围的 CIDR,其下一个跃点是隧道。

创建基于政策的传统 VPN 隧道后,您在远程网络 IP 地址范围字段中输入的 IP 地址范围在 VPN 隧道详情页面上显示为通告的 IP 地址范围

当您使用控制台创建基于路由的隧道时,传统 VPN 会执行以下任务:

  • 将隧道的本地和远程流量选择器设置为任意 IP 地址 (0.0.0.0/0)。
  • 对于远程网络 IP 地址范围中的每个范围,Google Cloud 会创建一个自定义静态路由,其目标(前缀)是范围的 CIDR,其下一个跃点是隧道。

使用 Google Cloud CLI 创建基于政策的隧道或基于路由的隧道时,隧道的流量选择器以相同的方式定义。但是,由于自定义静态路由的创建是通过单独的命令完成的,因此您可以更好地控制这些路由。

您可以在流量选择器中指定的 CIDR 数取决于 IKE 版本。

如需了解重要的背景信息,请参阅以下内容:

准备工作

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

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

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  4. 安装初始化 Google Cloud CLI。
  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  6. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  7. 安装初始化 Google Cloud CLI。
  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) 网络和至少一个子网。

创建网关和隧道

VPN 设置向导是创建传统 VPN 网关的唯一控制台选项。该向导包含创建传统 VPN 网关、隧道、BGP 会话和外部 VPN 网关资源所需的所有配置步骤。但是,您可以稍后完成某些步骤,例如配置 BGP 会话。

控制台

配置网关

  1. 在 Google Cloud Console 中,转到 VPN 页面。

    转到 VPN

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

  3. 选择 VPN 设置向导

  4. 选择传统 VPN 选项按钮。

  5. 点击继续

  6. 创建 VPN 连接页面上,指定以下网关设置:

    • 名称:VPN 网关的名称。该名称以后无法更改。
    • 说明:(可选)添加说明。
    • 网络:指定要在其中创建 VPN 网关和隧道的现有 VPC 网络。
    • 区域:Cloud VPN 网关和隧道是区域对象。选择网关所在的 Google Cloud 区域。不同地区中的实例和其他资源可按照路由顺序使用隧道发送出站流量。为获得最佳性能,网关和隧道应位于相关 Google Cloud 资源所在的同一区域中。
    • IP 地址:创建或选择现有的区域外部 IP 地址

配置隧道

  1. 对于新隧道的隧道部分,指定以下设置:

    • 名称:VPN 隧道的名称。该名称以后无法更改。
    • 说明:输入说明(可选)。
    • 远程对等 IP 地址:指定对等 VPN 网关的外部 IP 地址。
    • IKE 版本:选择对等 VPN 网关支持的相应 IKE 版本。推荐选择 IKEv2(如果受对等设备支持)。
    • IKE 预共享键:提供用于身份验证的预共享键(共享密钥)。Cloud VPN 隧道的预共享键必须与在对等 VPN 网关上配置对应隧道时使用的预共享键一致。如需生成加密型强预共享键,请按照这些说明操作。

    对于基于政策的隧道

    1. 路由选项下,选择基于政策
    2. 远程网络 IP 地址范围下,提供对等网络使用的以空格分隔的 IP 地址范围列表。这是远程流量选择器,或从 Cloud VPN 的角度看的右侧

      创建基于政策的传统 VPN 隧道后,您在远程网络 IP 地址范围字段中输入的 IP 地址范围在 VPN 隧道详情页面上显示为通告的 IP 地址范围

    3. 本地 IP 地址范围下,选择以下方法之一:

      • 如需选择现有的本地 IP 范围,请使用本地子网菜单。
      • 如需输入 VPC 网络中使用的以空格分隔的 IP 范围列表,请使用本地 IP 范围字段。如需了解重要的注意事项,请参阅基于政策的隧道和流量选择器

    对于基于路由的隧道

    1. 路由选项下,选择基于路由
    2. 远程网络 IP 地址范围下,提供对等网络使用的以空格分隔的 IP 地址范围列表。这些范围用于创建下一个跃点为此 VPN 隧道的自定义静态路由。
  2. 如需在同一网关上创建更多隧道,请点击添加隧道并重复以上步骤。您可以稍后添加更多隧道

  3. 点击创建

gcloud

要创建 Cloud VPN 网关,请完成以下命令序列。在命令中,替换以下内容:

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

配置网关资源

  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 \
       --network-tier=PREMIUM \
       --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 \
       --network-tier=PREMIUM \
       --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 \
       --network-tier=PREMIUM \
       --ip-protocol=UDP \
       --ports=4500 \
       --address=GW_IP_NAME \
       --target-vpn-gateway=GW_NAME \
       --region=REGION \
       --project=PROJECT_ID
    

创建 Cloud VPN 隧道

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

    • TUNNEL_NAME:隧道的名称
    • ON_PREM_IP:对等 VPN 网关的外部 IP 地址
    • IKE_VERS1(对于 IKEv1)或 2(对于 IKEv2)
    • SHARED_SECRET:您的预共享键(共享密钥)。Cloud VPN 隧道的预共享键必须与在对等 VPN 网关上配置对应隧道时使用的预共享键一致。如需生成加密型强预共享键,请按照这些说明操作。

    对于基于政策的 VPN:

    • LOCAL_IP_RANGES:以英文逗号分隔的 Google Cloud IP 地址范围列表。例如,您可以为 VPC 网络中的每个子网提供 CIDR 块。从 Cloud VPN 的角度来看,这是左侧。
    • REMOTE_IP_RANGES:以英文逗号分隔的对等网络 IP 地址范围列表。对于 Cloud VPN 来说,此为“右侧”。

    如需配置基于政策的 VPN 隧道,请运行以下命令:

    gcloud compute vpn-tunnels create TUNNEL_NAME \
        --peer-address=ON_PREM_IP \
        --ike-version=IKE_VERS \
        --shared-secret=SHARED_SECRET \
        --local-traffic-selector=LOCAL_IP_RANGES \
        --remote-traffic-selector=REMOTE_IP_RANGES \
        --target-vpn-gateway=GW_NAME \
        --region=REGION \
        --project=PROJECT_ID
    

    对于基于路由的 VPN,本地和远程流量选择器都为 0.0.0.0/0(如路由选项和流量选择器中所定义)。

    如需配置基于路由的 VPN 隧道,请运行以下命令:

    gcloud compute vpn-tunnels create TUNNEL_NAME \
        --peer-address=ON_PREM_IP \
        --ike-version=IKE_VERS \
        --shared-secret=SHARED_SECRET \
        --local-traffic-selector=0.0.0.0/0 \
        --remote-traffic-selector=0.0.0.0/0 \
        --target-vpn-gateway=GW_NAME \
        --region=REGION \
        --project=PROJECT_ID
    
  2. 为您在上一步中的 --remote-traffic-selector 选项中指定的每个远程 IP 地址范围创建静态路由。为每个远程 IP 地址范围重复此命令。将 ROUTE_NAME 替换为路由的唯一名称,并将 REMOTE_IP_RANGE 替换为适当的远程 IP 地址范围。

    gcloud compute routes create ROUTE_NAME \
        --destination-range=REMOTE_IP_RANGE \
        --next-hop-vpn-tunnel=TUNNEL_NAME \
        --network=NETWORK \
        --next-hop-vpn-tunnel-region=REGION \
        --project=PROJECT_ID
    

完成配置

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

  1. 设置对等 VPN 网关并配置相应的隧道。如需了解相关说明,请参阅以下内容:
  2. 根据需要在 Google Cloud 和对等网络中配置防火墙规则
  3. 检查您的 VPN 隧道和转发规则的状态
  4. 转到项目路由表并过滤 Next hop type:VPN tunnel,查看 VPN 路由:

    转到“路由”

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

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

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

所需权限

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

限制来自特定对等 IP 地址的连接

如需通过 Cloud VPN 隧道仅允许特定对等 IP 地址,请执行以下步骤:

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

    命令输出应如下所示:

          DISPLAY NAME             ID
          example-organization     29252605212
        
  2. 创建一个定义政策的 JSON 文件,如以下示例所示:

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

限制来自任何对等 IP 地址的连接

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

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

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

后续步骤

  • 如需使用高可用性和高吞吐量场景或多个子网方案,请参阅高级配置
  • 如需帮助解决使用 Cloud VPN 时可能会遇到的常见问题,请参阅问题排查