IBM Cloud Docs
升级到 HA VPN 服务器

升级到 HA VPN 服务器

创建 VPN 服务器后,可以更改 VPN 服务器类型。 例如,可以将独立 VPN 服务器 (试验部署) 升级到高可用性 (HA) VPN 服务器 (生产部署)。 您还可以拆离子网以将 HA VPN 服务器降级到独立部署,或者在供应 VPN 服务器后更改 VPN 子网。

在控制台升级到 HA VPN 服务器

要更改 VPN 服务器类型,请执行以下步骤:

  1. 从浏览器打开 IBM Cloud 控制台并登录账户。

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

  3. 从“VPC 的 VPN”页面中,单击 客户机到站点服务器 选项卡。 然后,单击要修改的 VPN 服务器名称。

  4. 在子网部分,执行以下操作之一:

    • 要升级到 HA VPN 服务器,请单击 添加 + 以在另一个专区中添加第二个子网。
    • 要更改为独立的 VPN 服务器,请单击移除图标移除图标移除 两个现有子网中的一个。
    • 要使用其他子网,请单击子网的“编辑”图标 "编辑" 图标

    请参阅以下示例:

    子网
    "子网" 部分

  5. 查看成本摘要,然后单击 保存 以保存更改。

从 CLI 升级到 HA VPN 服务器

开始之前,请 设置 CLI 环境

要从 CLI 升级到 HA VPN 服务器,请输入以下命令:

ibmcloud is vpn-server-update VPN_SERVER_ID [--vpc VPC] [--subnet SUBNET]
[--client-ip-pool CLIENT_IP_POOL] [--cert CERT]
[--client-auth-methods certificate | username | certificate,username | username,certificate]
[--client-ca CLIENT_CA] [--client-crl CLIENT_CRL] [--client-dns CLIENT_DNS]
[--client-idle-timeout CLIENT_IDLE_TIMEOUT] [--enable-split-tunnel false | true]
[--port PORT] [--protocol udp | tcp] [--name NEW_NAME] [--output JSON] [-q, --quiet]

其中:

  • VPN_SERVER_ID- VPN 服务器的 ID 或名称。
    • -vpc- VPC 的 ID 或名称。 只有在该 VPC 内按名称指定唯一资源时才需要使用该选项。
    • -子网- 以逗号分隔的 ID 或子网名称,用于配置此 VPN 服务器。 在不同专区中使用两个子网以实现高可用性。 最多可以设置两个子网。
    • -client-ip-pool- VPN 客户端 IPv4 地址池,以 CIDR 格式表示。 请求不得与 VPC 中的任何现有地址前缀或以下任何保留地址范围重叠:127.0.0.0/8 ( IPv4 环回地址)、161.26.0.0/16 ( IBM 服务)、166.8.0.0/14 (云服务端点)、169.254.0.0/16 ( IPv4 链路本地地址)、224.0.0.0/4 ( IPv4 多播地址)。 客户端 IP 地址池 CIDR 的前缀长度必须介于 /9 (8,388,608 个地址)和 /22 (1024 个地址)之间。 建议使用包含启用最大并发连接数所需的两倍数量的 IP 地址的 CIDR 块。
  • -- cert- 此 VPN 服务器的证书实例 CRN。
  • --client-auth-methods-以逗号分隔的客户机认证方法。 下列其中一项:
    • certificate
    • username
    • certificate,username
    • username,certificate
    • -client-ca- VPN 客户端证书颁发机构(CA)要使用的证书实例的 CRN。
  • -- client-crl-CRL | @CRL-file。 证书吊销列表内容,以 PEM 格式编码。
  • --以逗号分隔的 DNS 服务器地址列表,提供给连接到此 VPN 服务器的 VPN 客户端。 最多可设置两个 DNS 服务器。
  • --client-idle-timeout- VPN 客户端在 VPN 服务器断开连接之前可以空闲的秒数。 指定 0 以防止服务器断开空闲客户端的连接。
    • -enable-split-tunnel- 表示是否在此 VPN 服务器上启用了分离隧道。 其中一个: falsetrue (缺省值: false)。
    • -port- VPN 服务器使用的端口号。
    • -protocol- VPN 服务器使用的传输协议。 udptcp 之一。
    • -name- VPN 服务器的新名称。
    • -output- 指定输出格式,仅支持 JSON。 JSON 之一。
  • -q, --quiet- 禁止冗长输出。

命令示例

  • 通过从其他区域添加第二个子网,将独立 VPN 服务器更新为 HA VPN 服务器:

    ibmcloud is vpn-server-update r006-aa88726e-8b34-4f97-992d-027df9c4bb36 --subnet 0716-6ec3e875-abfa-40f4-a7c5-7473f4b2a2e1,0717-61b2f53f-1e95-42a7-94ab-55de8f8cbdd5

    用逗号分隔两个子网标识或名称。

  • 更改 VPN 服务器的子网,或从两个子网 (HA VPN 服务器) 降级到一个子网 (独立 VPN 服务器)。 指定的子网 (例如,0716-6ec3e875-abfa-40f4-a7c5-7473f4b2a2e1) 将替换任何现有子网。

    ibmcloud is vpn-server-update r006-aa88726e-8b34-4f97-992d-027df9c4bb36 --subnet 0716-6ec3e875-abfa-40f4-a7c5-7473f4b2a2e1

使用 API 升级到 HA VPN 服务器

要使用 API 升级到 HA VPN 服务器,请执行以下步骤:

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

  2. 查找要升级的 VPN 服务器:

    curl 命令后添加 | json_pp| jq,以获得可读的 JSON 字符串。jq 是根据 MIT 许可 授权的第三方工具。创建实例时,jq 可能不会预装在所有可用的 VPC 映像中。 json_pp 命令是一个 JSON 预处理器,通常默认安装在大多数 Linux 发行版上。

    curl -X GET "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \
         -H "Authorization:$iam_token"
    

    将 VPN 服务器的 ID 保存在变量中,以便以后使用:

    VpnServer="r006-cb67562d-626c-488d-8c56-35879e238274"
    
  3. 查找要连接到 VPN 服务器的子网:

    curl -X GET "$vpc_api_endpoint/v1/subnets?version=$api_version&generation=2" \
       -H "Authorization:$iam_token"
    

    将子网络的 ID 保存在变量中,以便以后使用:

    SubnetId1="0716-08b770a6-e5e8-4e59-ad0c-9f517914f5a6"
    SubnetId2="0717-aa067949-e947-435f-bdcd-1ec84815513d"
    

    SubnetId1SubnetId2 必须与 VPN 服务器位于同一 VPC 中,但位于不同的区域中。

  4. 获取 VPN 服务器的 ETag:

    curl -X GET -i "$vpc_api_endpoint/v1/vpn_servers/$VpnServer?version=$api_version&generation=2" \
         -H "Authorization:$iam_token"
    

    将 VPN 服务器的 ETag (包括在响应头中) 保存在变量中,以便以后可以使用它,例如:

    ETag="0366003158c0be829d0727e80325406145eaa682955c1703642eaab2c655d609"
    
  5. 启动所有变量后,通过添加第二个子网将 VPN 服务器升级到 HA:

       curl -X PATCH "$vpc_api_endpoint/v1/vpn_servers/$VpnServer?version=$api_version&generation=2" \
         -H "Authorization: $iam_token" \
         -H "If-Match: $ETag" \
         -d '{
            "subnets": [
               {
                "id": "'$SubnetId1'"
                },
                {
                "id": "'$SubnetId2'"
                }
                ]
          }'