创建 VPN 网关

您可以为 VPC 创建 IBM Cloud VPN,将 VPC 安全地连接到另一个专用网络,如内部网络或另一个 VPC。

在开始之前,请查看 VPN 网关的规划注意事项VPN 网关的已知限制、问题和约束

在控制台中创建 VPN 网关

要在控制台中创建 VPN 网关,请按照以下步骤操作:

  1. 在浏览器中打开 IBM Cloud 控制台,并登录您的账户。

  2. 选择导航菜单 导航菜单图标,然后单击基础设施 VPC 图标 > 网络 > VPN

  3. 确保选择 站点到站点网关> VPN 网关 选项卡。

  4. 在“VPC 的 VPN”页面上,单击 创建,然后选择 站点到站点 网关磁贴。

  5. 指定以下信息:

    • 区域- 选择要配置 VPN 网关的区域。

    • VPN 网关名称-输入 VPN 网关的名称,例如 my-vpn-gateway

    • 资源组- 为 VPN 网关选择一个资源组。

    • 标记-(可选) 添加标记以标识此 VPN 网关。

    • 访问管理标记-(可选) 向资源添加访问管理标记以帮助组织访问控制关系。 访问管理标记唯一受支持的格式为 key:value。 有关更多信息,请参阅 使用标记控制对资源的访问

    • 虚拟私有云-选择 VPN 网关的 VPC。

    • 子网- 选择您要创建 VPN 网关的子网。 请参阅 规划注意事项 以获取重要的子网信息。

    • 方式-选择基于策略的 VPN 或基于路由的 VPN。 有关 VPN 类型的更多信息,请参阅 VPN 功能

    • ASN- VPN 网关的数字标识符。 此值用于识别 BGP 对等互联的本地网络,并在与本地设备设置 BGP 会话时使用。

    • Advertised CIDRs(可选)- 向远程 VPN 对等体公布 IPv4 网络范围的 CIDR 范围值。

      动态路由需要 ASN 值。 如果不指定 ASN,VPN 网关将以 64520 的默认 ASN 创建。 将 VPN 网关连接到中转网关后,就不能更改本地 ASN 值了。

  6. VPC 的 VPN 连接 部分中,切换开关以在此网关与 VPN 外部的网络之间建立连接。 在配置网关后,您还可以添加一个 VPN 连接。 在连接详细信息部分,指定以下信息:

    • VPN 连接名称- 输入连接名称,例如 my-connection

    • 连接类型- 选择静态或动态连接类型。

    • 对等网关地址-通过 VPC 外部网络的 VPN 网关的公共 IP 地址或 FQDN 指定对等设备。

    • 对等 ASN(仅基于动态路由)- 如果选择动态作为连接类型,则必须指定对等 ASN。 此值用于标识与 VPN 交换路由的远程对等网络。

      某些 ASN 值受到限制,不能用作对等 ASN,包括 0, 13884, 36351, 64512, 64513, 65100, 65200–‍65234, 65402‍–‍65433, 655004201065000‍–‍4201065999。 这些值要么是保留值,要么是专用 ASN 范围的一部分,可能会导致路由冲突。

    • 建立方式-选择 双向仅对等

      • 双向模式允许从VPN网关的任一侧发起IKE协议协商(或密钥更新过程)。
      • 仅对等 方式允许对等方对此 VPN 网关连接启动 IKE 协议协商。 建立连接后,对等方还负责启动密钥更新过程。

      如果同级设备位于 NAT 设备后面并且没有公共 IP 地址,请确保仅指定 同级

    • 预共享密钥- 指定 VPC 外部网络的 VPN 网关的身份验证密钥。 预共享密钥是十六进制数字的字符串,或者是可打印的 ASCII 字符的口令。 要与大多数对等网关类型兼容,此字符串必须遵循以下规则:

      • 可以是数字,小写或大写字符或以下特殊字符的组合: - + & ! @ # $ % ^ * ( ) . , :
      • 字符串的长度必须为 6-128 个字符。
      • 不能以 0x0s 开头。
    • 分配流量(仅限基于路由的 VPN)- 当 VPC 路由的下一跳是 VPN 连接时,启用此选项可在 VPN 网关的活动隧道之间自动分配流量。 当两个 VPN 隧道连接到远程对等网络时,该选项有助于最大限度地提高吞吐量。 如果不启用该选项,VPN 网关会选择公共 IP 较小的隧道作为主路径,只有在主隧道瘫痪时才切换到辅助隧道。 更多信息,请参阅 用例 4:为基于路由的 VPN 分配流量

    • 本地子网(仅限基于策略的 VPN) ——指定 VPC 中一个或多个您希望通过 VPN 隧道连接的子网。

    • 对等子网(仅限基于策略的 VPN) ——指定对等网络中一个或多个您希望通过 VPN 隧道连接的子网。

      不允许本地子网和对等子网之间的子网范围重叠。

  7. 隧道详细信息部分(仅基于动态路由),指定使用 BGP 进行动态路由所需的隧道和对等接口 IP。

    • 隧道接口 IP- 指定分配给 VPN 隧道 VPN 网关侧的 IP 地址。

    • 对等接口 IP- 指定分配给 VPN 隧道远程网络侧的 IP 地址。 该地址是您的内部设备或对等 VPN 网关。

      隧道和对等接口 IP 必须连续,并属于同一个 /30 子网。 该子网提供四个 IP 地址,但第一个(网络地址)和最后一个(广播地址)被保留。 例如,在子网 192.168.0.0/30 中,可用 IP 为 192.168.0.1192.168.0.2。 如果将 192.168.0.1 分配给隧道 1 接口,则必须将 192.168.0.2 分配给对等 1 接口。 同样,对于隧道 2,使用不同的 /30 子网,如 192.168.0.4/30。 在这种情况下,将 192.168.0.5 分配给隧道 2 接口,将 192.168.0.6 分配给对等网络 2 接口。 此外,用于建立 IPsec 连接的隧道 IP 不能与为 Transit Gateway 连接选择的 CIDR 范围重叠。

  8. 死亡对等检测 部分中,配置 VPN 网关如何发送消息以检查对等网关是否处于活动状态。 指定以下信息:

    • 操作-对等网关停止响应时要执行的失效对等检测操作。 例如,如果希望网关立即重新协商连接,请选择重新启动
    • 间隔(秒) ——检查对等网关是否处于活动状态的频率。 默认情况下,每2秒发送一次消息。
    • 超时(秒) ——等待对等网关响应的时间长度。 默认情况下,如果在 10 秒内未收到响应,则该对等网关将不再被视为处于活动状态。
  9. 策略 部分中,指定用于连接的阶段 1 和阶段 2 协商的因特网密钥交换 (IKE) 和 Internet Protocol 安全性 (IPsec) 选项。

    • 如果希望网关尝试自动建立连接,请选择 “自动”
    • 选择或创建自定义策略,如果
      • 您需要执行特定的安全要求。
      • 另一个网络上的 VPN 网关不支持在设置过程中自动协商的安全建议。

    您为该连接指定的 IKE 和 IPsec 安全选项必须与 VPC 外部网络的对等网关上设置的选项完全一致。

  10. 在“高级选项”部分中,可以定制本地和同级 IKE 标识,而不是使用缺省 IKE 标识。 最多可以指定一个同级 IKE 标识。

    对于基于策略的 VPN 网关,最多可以配置一个本地 IKE 身份。 对于基于路由的 VPN 网关,如果要配置本地 IKE 身份,必须提供两个。 您可以为成员提供值,也可以将输入框留空。

    • 本地 IKE 标识-选择本地 IKE 标识的类型,然后输入其值。 例如,您可以输入单个4个八位字节的 IPv4 地址(9.168.3.4 )、FQDN(my-vpn.example.com )、主机名(my-host )或 base64-encoded 密钥ID(MTIzNA== )。

      • 静态路由方式由处于主动/主动方式的两个成员组成,其中第一身份适用于第一成员,第二身份适用于第二成员。 如果未指定本地 IKE 标识,那么类型为 IPv4 地址,值为成员的 VPN 连接隧道的公共 IP 地址。

      • 策略方式由处于活动/备用方式的两个成员组成。 本地 IKE 身份适用于活动成员。 如果未指定值,则本地 IKE 标识即为 VPN 网关的公网 IP 地址。

    • 对等 IKE 标识-选择对等 IKE 标识的类型,然后输入其值。 例如,您可以输入 IPv4 地址(9.168.3.4 )、完全合格域名(FQDN)(my-vpn.example.com )、主机名(my-host )或 base64-encoded 密钥ID(MTIzNA== )。

      对等方 IKE 身份适用于活动成员。 如果未指定值,请使用对等网关的 IPv4 地址或 FQDN。

从 CLI 创建 VPN 网关

开始之前,请 设置 CLI 环境

要从 CLI 创建 VPN 网关,请输入以下命令:

ibmcloud is vpn-gateway-create VPN_GATEWAY_NAME SUBNET
    [--mode policy | route]
    [--advertised-cidrs IPv4_NETWORK_RANGE]
    [--local-asn ASN_NUMBER]
    [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME]
    [--output JSON] [-q, --quiet]

其中:

VPN_GATEWAY_NAME
VPN网关的名称。
SUBNET
这是子网的标识。
--mode
VPN 网关的方式。 其中一个: policyroute
--advertised-cidrs
IPv4 网络范围,向远程 VPN 对等设备公布地址。
--local-asn
标识您用于 BGP 对等互联的本地网络。
--resource-group-id
资源组的标识。 此选项与 --resource-group-name 互斥。
--resource-group-name
资源组的名称。 此选项与 --resource-group-id 互斥。
--output
以 JSON 格式输出。
-q, --quiet
用于禁止详细输出的选项。

命令示例

  • 创建具有特定子网标识的基于路由的 VPN 网关:

    ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route
    
  • 使用“缺省”资源组创建基于策略的 VPN 网关:

    ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode policy --resource-group-name Default
    
  • 通过将特定资源组标识与 JSON 格式的输出配合使用,创建基于路由的 VPN 网关:

    ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route --resource-group-id fee82deba12e4c0fb69c3b09d1f12345 --output JSON
    
  • 创建基于路由的 VPN 网关,使用已公布的 CIDR 和本地 ASN 进行动态连接:

    ibmcloud is vpn-gateway-create my-vpc-gateway fee82deba12e4c0fb69c3b09d1f12345 --mode route --advertised-cidrs 192.168.3.0/24 --local-asn 64520
    
  • 列出所有 VPN 网关:

    ibmcloud is vpn-gateways
    ic vpn-gateways
    
  • 获取指定 VPN 网关的详细信息:

    ic vpn-gateway my-vpc-gateway
    
  • 用本地 ASN 更新 VPN 网关:

    ic vpn-gateway-update my-vpc-gateway --name my-vpc-gateway --local-asn 64521
    
  • 列出 VPN 网关的广告 CIDR:

    ibmcloud is vpn-gateway-advertised-cidrs my-vpc-gateway
    
  • 检查指定的已发布 CIDR 是否存在于 VPN 网关上:

    ibmcloud is vpn-gateway-advertised-cidr  my-vpc-gateway --cidr 10.45.0.0/26
    
  • 将已公告的 CIDR 添加到 VPN 网关:

    ibmcloud is vpn-gateway-advertised-cidr-add my-vpc-gateway --cidr 10.45.0.0/26
    
  • 从 VPN 网关中删除已发布的 CIDR:

    ibmcloud is vpn-gateway-advertised-cidr-delete my-vpc-gateway 10.45.0.0/26
    
  • 列出 VPN 网关的所有服务连接:

    ibmcloud is vpn-gateway-service-connections my-vpc-gateway
    
  • 获取指定 VPN 网关的服务连接详情:

    ibmcloud is vpn-gateway-service-connection my-vpc-gateway --service-connection-id 72fd9e00-3117-4b2e-984d-9361a9a97801
    

使用 API 创建 VPN 网关

要使用 API 创建 VPN 网关,请按照以下步骤操作:

  1. 使用正确的变量设置 API 环境

  2. 存储要在 API 命令中使用的其他变量。 例如,

    • ResourceGroupId-使用 get resource groups 命令查找资源组标识,然后填充变量:
    export ResourceGroupId=<your_resourcegroup_id>
    
    • SubnetId-使用 get subnet 命令查找子网标识,然后填充变量:
    export SubnetId=<your_subnet_id>
    
  3. 启动所有变量时,创建 VPN 网关:

    • 要创建基于策略的 VPN 网关,请使用以下命令:
       curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \
         -H "Authorization: Bearer $iam_token" \
         -d '{
            "name": "my-new-vpn-gateway",
            "mode": "policy",
            "subnet": {
             "id": "'$SubnetId'"
             },
            "resource_group": {
              "id": "'$ResourceGroupId'"
            }
          }'
    
    • 要为基于静态路由的 VPN 连接创建 VPN 网关,请使用以下命令:
       curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \
         -H "Authorization: Bearer $iam_token" \
         -d '{
            "name": "my-new-vpn-gateway",
            "mode": "route",
            "subnet": {
             "id": "'$SubnetId'"
             },
            "resource_group": {
              "id": "'$ResourceGroupId'"
            }
          }'
    
    • 要为基于路由的动态 VPN 连接创建 VPN 网关,请使用以下命令:
       curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \
         -H "Authorization: Bearer $iam_token" \
         -H "Content-Type: application/json" \
         -H "Accept: application/json" \
         -H "X-Correlation-ID: 9852c2ff-c20a-4082-98da-cd689bcd5a11" \
         -d '{
             "name": "my-new-vpn-gateway",
             "subnet": {
             "id": "'"$SubnetId"'"
             },
             "mode": "route",
             "local_asn": 64520,
             "advertised_cidrs": [
             "192.168.0.0/24"
             ],
             "resource_group": {
             "id": "'"$ResourceGroupId"'"
             }
         }'
    
    • 要列出 VPN 网关的所有广告 CIDR,请使用以下命令:
       curl -X GET "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \
         -H "Authorization: Bearer $iam_token"
    
    • 要从 VPN 网关删除已公布的 CIDR,请使用以下命令:
       curl -X DELETE "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \
         -H "Authorization: Bearer $iam_token" \
    
    • 要在 VPN 网关上设置已公布的 CIDR,请使用以下命令:
       curl -X PUT "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2/$vpn_gateway_id/advertised_cidrs/$cidr?__QUERY__" \
         -H "Authorization: Bearer $iam_token"
    

要查看站点到站点 VPN 网关的整套 API,请参阅 VPC API 参考

使用 Terraform 创建 VPN 网关

以下示例使用 Terraform 创建 VPN 网关:

   resource "ibm_is_vpn_gateway" "is_vpn_gateway" {
   name = "my-vpn-gateway"
   subnet = ibm_is_subnet.is_subnet.id
   mode = "route"
   }

有关更多信息,请参阅 Terraform 注册表

后续步骤

创建 VPN 网关后,可以执行以下操作: