IBM Cloud Docs
创建 VPN 服务器

创建 VPN 服务器

创建 VPN 服务器以允许来自因特网的客户机连接到 VPC 网络,同时维护安全连接。

您可以使用控制台、CLI 或 API 创建 VPN 服务器。

准备工作

在供应 VPN 服务器之前,请按以下顺序完成以下先决条件:

  1. 查看 VPN 服务器的规划注意事项

  2. 决定使用哪种 VPN 客户端验证模式:基于证书、用户 ID 和密码,或两者兼而有之。 有关更多信息,请参阅 设置客户机到站点认证

  3. 创建 Secrets Manager 服务实例管理证书

    建议您 创建专用证书,并牢记 这些注意事项

  4. 为 VPN 服务器和 IBM Cloud Secrets Manager 创建 IAM 服务到服务授权

  5. 在所选 VPC 中 创建 VPC 和至少一个子网

    为了实现高可用性,请在两个不同的专区中创建 VPC 和两个子网。 VPN 服务器位于两个子网中。

在控制台中创建 VPN 服务器

在控制台中创建客户端到站点 VPN 服务器:

  1. 完成“开始之前”部分中的所有先决条件。

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

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

  4. 单击页面右上角的 创建

  5. 在“VPN 类型”部分中,单击 客户机到站点服务器

    VPN 类型部分
    VPN 类型部分

    “位置”部分显示 VPC 所在的区域以及将供应 VPN 服务器的位置。

  6. 在详细信息部分,请指定以下信息:

    • VPN 服务器名称-输入 VPN 服务器的名称,例如 my-vpn-server

    • 资源组- 为 VPN 服务器选择一个资源组。

    • 标记-(可选) 添加标记以组织,跟踪使用成本或管理对资源的访问权。

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

    • 虚拟私有云-选择 VPN 服务器的 VPC。

    • 客户机 IPv4 地址池-输入 CIDR 范围。 从该地址池为客户端分配其会话的 IP 地址。

      VPN 详细信息
      "VPN 详细信息" 部分

  7. 在子网部分,指定以下信息:

    • 选择 VPN 服务器模式:

      • 高可用性模式 - 在不同区域的两个子网中部署 VPN 服务器。 最适合用于客户端 VPN 访问至关重要的多区域部署和解决方案。
      • 独立模式 - 在单一子网和区域内部署 VPN 服务器。 最适合用于不需要多区域灾备的单一区域部署。
    • 指定 VPC 的子网 (独立方式) 或子网 (HA 方式)。

      VPN 子网部分
      VPN 子网部分

  8. 在“身份验证”部分,指定以下信息:

    • VPN 服务器认证-从 Secrets Manager中选择服务器 SSL 证书。 填写所有必填字段。

      VPN 服务器认证部分
      VPN 服务器认证部分

    • 客户机认证方式-选择此选项以通过使用客户机证书,用户标识和/或验证码来配置用户认证。

      • 客户端证书 - 您可以选择客户端证书并配置用户 ID 和密码,以获得最佳安全性。 用户 ID 和密码提供了一个额外的安全层,需要额外的登录凭证才能访问账户。

        (可选) 您可以上载 PEM 格式的证书撤销列表 (CRL)。 上传 CRL 后,PEM 文件会显示为 VPN 服务器的名称。

      • 用户标识和验证码-为 VPN 客户端用户配置已添加的认证。 此认证方法提供了额外的安全层,可与 IBM Cloud IAM 集成以完成客户机认证。 验证完成后,系统会将代码传递给 openVPN 客户端进行验证。

      VPN 客户端认证部分
      VPN 客户端认证部分

  9. 在“安全组”部分中,至少选择一个安全组。

    要在计划部署 VPN 服务器的子网和通过 VPN 通道通信的其他 VPC 子网上配置一个或多个安全组及其规则,或有选择地配置访问控制列表 (ACL),请参阅 配置与 VPN 服务器一起使用的 ACL

    VPN 安全组部分
    VPN 安全组部分

    您可以在从 VPN 服务器的详细信息页面 ("安全组" 选项卡) 进行供应后附加安全组。

  10. 附加配置部分,指定以下信息:

    • DNS 服务器 IP 地址-(可选) 指定一个或两个 DNS 服务器 IP 地址以进行域名解析。

    • 空闲超时会话(秒)- 如果 VPN 服务器在此时间间隔失效前没有流量,则会自动断开连接。 该值范围为 028800 秒。 缺省值为 600 秒。

    • 传输协议-选择下列其中一个协议,然后输入有效的 VPN 端口 (1 - 65535)。

      • UDP 是一个无连接协议,可执行错误检查,但会丢弃错误的包。 比 TCP 更快。
      • TCP 是面向连接的协议,具有错误检查和错误恢复功能。 比 UDP 更可靠。
    • 隧道方式-指定下列其中一项:

      • 全隧道 - 所有流量都通过 VPN 接口流向 VPN 隧道。

      • 分离隧道 - 专用流量通过 VPN 接口流向 VPN 隧道,公共流量通过现有 LAN 接口流向 VPN 隧道。

        VPN 附加配置部分
        VPN 附加配置部分

从 CLI 创建 VPN 服务器

开始之前,请 设置 CLI 环境

要从 CLI 创建 VPN 服务器,请输入以下命令:

ibmcloud is vpn-server-create --subnets SUBNETS --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] [--security-group SECURITY_GROUP1 --security-group SECURITY_GROUP2 ...] [--name NAME] [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--output JSON] [-q, --quiet]

命令选项

    • -子网:以逗号分隔的子网 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: 客户机认证方法的逗号分隔列表。 下列其中一项: certificateusernamecertificate,usernameusername,certificate
    • -client-ca:用于 VPN 客户端证书颁发机构 (CA) 的证书实例的 CRN。
  • -- client-crl:CRL | @CRL-file。 证书吊销列表内容,以 PEM 格式编码。
    • -client-dns:以逗号分隔的 DNS 服务器地址,将提供给连接到此 VPN 服务器的 VPN 客户端。 最多可设置两个 DNS 服务器。
    • -client-idle-timeout(客户闲置超时):在 VPN 服务器断开连接之前,VPN 客户端闲置的秒数。 指定 0 以防止服务器断开空闲客户端的连接(默认值:600 )。
    • -enable-split-tunnel(启用分路隧道 ):表示此 VPN 服务器上是否启用了分离隧道。 其中一个: falsetrue (缺省值: false)。
    • -端口:此 VPN 服务器使用的端口号(默认值:443 )。
    • -协议:此 VPN 服务器要使用的传输协议。 udptcp 之一 (缺省值: udp)。
    • -安全组:安全组 ID。
    • -name:vpn 服务器的新名称。
    • -资源组 ID:资源组 ID。 该选项与 --resource-group-name 互斥。
    • -resource-group-name:资源组名称。 该选项与 --resource-group-id 互斥。
  • --output:指定输出格式,仅支持 JSON。 JSON 之一。
  • -q, --quiet: 禁止冗长输出。

命令示例

  • ibmcloud is vpn-server-create --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.165.7.0/20 --client-auth-methods certificate --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc
  • ibmcloud is vpn-server-create --name myvpnserver --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0,0736-4b871e22-e819-4f87-bb17-e457a88246a2 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.166.7.0/20 --client-auth-methods username
  • ibmcloud is vpn-server-create --name myvpnserver2 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.167.7.0/20 --client-auth-methods username --client-dns 9.9.9.9,8.8.8.8 --protocol tcp --port 8888 --enable-split-tunnel true --client-idle-timeout 1200
  • ibmcloud is vpn-server-create --name myvpnserver3 --subnets 0717-a7191f77-7c87-4ad4-bb11-a37f9e9fc0f0 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc --client-ip-pool 190.168.7.0/20 --client-auth-methods username --security-group r006-e32f671c-463d-4f93-88e3-2dd0413476b4 --security-group r006-3af7a9db-d9bc-43d4-bced-93e0a33fee25
  • ibmcloud is vpn-server-create --subnets 0736-4b871e22-e819-4f87-bb17-e457a88246a2 --client-ip-pool 192.170.0.0/22 --client-dns 172.34.1.100 --cert crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-auth-methods certificate,username --client-ca crn:v1:bluemix:public:cloudcerts:us-south:a/0046b57b897f419080c4ed3e011b86d4:5f1a72bc-b4c2-413f-bd22-011cfa4be5db:certificate:c81627a1bf6f766379cc4b98fd21ccd6 --client-crl @./openvpn/crl.pem --name vpnswithcrl --security-group r006-5744b689-e5c4-461d-9f9b-ce5e7e8dbed6

使用 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 服务器:

       curl -X POST "$vpc_api_endpoint/v1/vpn_servers?version=$api_version&generation=2" \
         -H "Authorization: $iam_token" \
         -d '{
            "certificate": {
                "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc"
             },
            "client_ip_pool": "192.168.50.0/22",
            "name": "my-new-vpn-server",
            "subnets": [
                {
                      "id": "0716-046c3fd3-1cc5-40f6-b0ad-bbc305308f6d"
                },
                {
                      "id": "0717-30ff71ff-3e90-42a9-aa93-96a062081f18"
                }
             ],
            "client_authentication": [
                {
                      "method": "certificate",
                      "client_ca": {
                         "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/aa5a471f75bc456fac416bf02c4ba6de:1862b0b4-c1f8-4eef-a6b5-e9c00c9f593d:certificate:6c801ef768c139d986b4c6f91175e8cc"
                      }
                },
                {
                      "method": "username",
                      "identity_provider": {
                         "provider_type": "iam"
                      }
                }
             ]
            "resource_group": {
              "id": "'$ResourceGroupId'"
            }
          }'
    

后续步骤

  1. 要验证是否已成功创建 VPN 服务器,请等待几分钟,然后转至 客户机到站点服务器 表,以确保 VPN 服务器状态为 Stable,运行状况状态为 Healthy
  2. 创建 VPN 路由
  3. 设置 VPN 客户机环境并连接到 VPN 服务器