
# 创建VPN服务端 - CreateVPNServer
#### 功能介绍
创建VPN服务端。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-vpn/vpn_api_0008.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-vpn/vpn_api_0044.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
| 授权项                            | 访问级别  | 资源类型（\*为必须）   | 条件键                       | 别名 | 依赖的授权项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|:---|:---|
| vpn:p2cVpnGateway:createServer | write | p2cVpnGateway | g:ResourceTag/\<tag-key\> | -  | - scm:cert:export  - scm:cert:list  - iam:identityProviders:getIdentityProvider  - iam:identityProviders:listProtocols  - iam:identityProviders:listIdentityProviders   |
   
#### URI
POST /v5/{project_id}/p2c-vpn-gateways/{p2c_vgw_id}/vpn-servers
表1参数说明 
| 名称         | 类型     | 是否必选 | 描述                                                                                  |
|:---|:---|:---|:---|
| project_id | String | 是    | 项目ID，可以通过[获取项目ID](https://support.huaweicloud.com/api-vpn/vpn_api_0051.html)获取项目ID。 |
| p2c_vgw_id | String | 是    | P2C VPN网关实例ID。                                                                      |
   
表2请求Header参数列表 
| 名称             | 类型     | 是否必选 | 描述                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| X-Client-Token | String | 否    | - 功能说明：幂等性标识。  - 格式：36位UUID。   |
   
#### 请求消息
- 请求参数
  表3请求参数 
  | 名称         | 类型                                                                                                                             | 是否必选 | 描述         |
  |:---|:---|:---|:---|
  | vpn_server | [CreateServerRequest] object | 是    | 创建服务端请求对象。 |
     
   表4CreateServerRequest 
  | 名称                     | 类型                                                                                                                                     | 必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  |:---|:---|:---|:---|
  | tunnel_protocol        | String                                                                                                                                 | 否  | - 功能说明：隧道协议类型。  - 取值范围： SSL：SSL协议。   - 默认值：SSL。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | client_cidr            | String                                                                                                                                 | 是  | - 功能说明：客户端网段。客户端建立连接时，会从该网段分配一个虚拟IP地址。  - 格式："点分十进制/掩码"格式，例如192.168.1.0/24。  - 约束： - 客户端网段不能和网关所在VPC默认路由表中的路由存在冲突。  - 客户端网段不能和本服务端中本端网段列表的网段存在冲突。  - 客户端网段地址池的IP地址数量需大于网关最大连接数的四倍。  - 客户端网段不能使用以下特殊网段：0.0.0.0/8, 127.0.0.0/8, 224.0.0.0/4, 240.0.0.0/4, 169.254.0.0/16。     |
  | local_subnets          | Array of strings                                                                                                                       | 是  | - 功能说明：本端网段列表。本端网段是需要访问的云上的目的网段，该网段需要通过VPN与用户侧网络进行互通。  - 格式："点分十进制/掩码"格式，例如10.10.1.0/24。  - 约束： - 至少有一个本端网段，默认最多支持填写20个网段。  - 本端网段不能使用以下特殊网段：0.0.0.0/8, 127.0.0.0/8, 224.0.0.0/4, 240.0.0.0/4。                                                                                                                                                                                                                                                            |
  | client_auth_type       | String                                                                                                                                 | 否  | - 功能说明：客户端认证类型。  - 取值范围： - CERT：证书认证。  - LOCAL_PASSWORD：口令认证（本地）。  - IAM：IAM认证。  - FEDERATED：联邦认证。    - 默认值：LOCAL_PASSWORD。                                                                                                                                           |
  | server_certificate     | [server_certificate] object         | 否  | 服务端证书，隧道协议类型是SSL时必填。推荐使用强密码算法的证书，如RSA3072/4096。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | client_ca_certificates | Array of [client_ca_certificate] objects | 否  | - 功能说明：客户端CA证书列表，用于对客户端证书进行认证。  - 约束： - 隧道协议类型是SSL，且客户端认证类型为证书认证时必填。  - 客户端认证类型为证书认证时，至少上传1本客户端CA证书，最多支持上传10本客户端CA证书。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | ssl_options            | [ssl_options] object                                                               | 否  | SSL隧道协议的可选配置项。隧道协议类型是SSL时，必填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | dns_servers            | Array of strings                                                                                                                       | 否  | - 功能说明：DNS服务端列表，最多两个DNS  - 格式："点分十进制"格式，例如172.16.1.1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | idp_name               | String                                                                                                                                 | 否  | - 功能说明：身份提供商名称。  - 约束： - 客户端认证类型为联邦认证时，必填。 客户端认证类型不为联邦认证时，不能填入。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
     
   表5server_certificate 
  | 名称     | 类型     | 必选 | 描述                                                                                                                                                                                                                                                                                                                                                       |
  |:---|:---|:---|:---|
  | id     | String | 否  | 功能说明：证书ID，为CCM(云证书与管理服务)中已上传证书的证书ID。证书来源为CCM时，必填。                                                                                                                                                                                                                                                                                                        |
  | source | String | 否  | 功能说明：证书来源。 取值范围： - CCM：已有证书。  - SERVICE_SIGN：服务自签名证书。   |
     
   表6client_ca_certificate 
  | 名称      | 类型     | 必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  |:---|:---|:---|:---|
  | name    | String | 否  | - 证书名称，不填时自动生成。  - 取值范围：1-64个字符、支持数字、英文字母、中文(\\u4e00 - \\u9fa5)、_(下划线)、-(中划线)。                                                                                                                                                                                                                                                                                                                                                                                    |
  | content | String | 是  | - 功能说明：证书内容，推荐使用强密码算法的证书，如RSA3072/4096。  - 格式： -----BEGIN CERTIFICATE----- \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* -----END CERTIFICATE-----    |
     
   表7ssl_options 
  | 名称                   | 类型      | 必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  |:---|:---|:---|:---|
  | protocol             | String  | 否  | - 功能说明：协议。  - 取值范围：TCP。  - 默认值：TCP。                                                                                                                                                                                                                                                                                 |
  | port                 | Integer | 否  | - 功能说明：端口号。  - 取值范围： - 443  - 1194    - 默认值：443。                             |
  | encryption_algorithm | String  | 否  | - 功能说明：加密算法。  - 取值范围： - AES-128-GCM  - AES-256-GCM    - 默认值：AES-128-GCM。   |
  | is_compressed        | Boolean | 否  | - 功能说明：是否压缩。  - 取值范围： - true  - false    - 默认值：false。                   |
     
  
- 请求样例
  1.使用证书认证方式创建VPN服务端。
  ```
  POST https://{Endpoint}/v5/{project_id}/p2c-vpn-gateways/{p2c_vgw_id}/vpn-servers
  {
    "vpn_server": {
      "tunnel_protocol": "SSL",
      "client_cidr": "172.16.0.1/24",
      "local_subnets": [
        "10.16.0.0/24",
        "10.16.1.0/24"
      ],
      "client_auth_type": "CERT",
      "server_certificate": {
        "id": "scs*********3922",
        "source": "CCM"
      },
      "client_ca_certificates": [
        {
          "name": "client_ca_8sux3d",
          "content": "-----BEGIN CERTIFICATE-----*******-----END CERTIFICATE-----"
        }
      ],
      "ssl_options": {
        "protocol": "TCP",
        "port": 443,
        "encryption_algorithm": "AES-128-GCM",
        "is_compressed": false
      }
    }
  }
  ```
  2.使用口令认证方式创建VPN服务端。
  ```
  {
    "vpn_server": {
      "tunnel_protocol": "SSL",
      "client_cidr": "172.16.0.1/24",
      "local_subnets": [
        "10.16.0.0/24",
        "10.16.1.0/24"
      ],
      "client_auth_type": "LOCAL_PASSWORD",
      "server_certificate": {
        "id": "scs1716171403922",
        "source": "CCM"
      },
      "ssl_options": {
        "protocol": "TCP",
        "port": 443,
        "encryption_algorithm": "AES-128-GCM",
        "is_compressed": false
      }
    }
  }
  ```
  
 
3.使用服务自签名证书方式创建VPN服务端。
```
{
  "vpn_server": {
    "tunnel_protocol": "SSL",
    "client_cidr": "172.16.0.1/24",
    "local_subnets": [
      "10.16.0.0/24",
      "10.16.1.0/24"
    ],
    "client_auth_type": "LOCAL_PASSWORD",
    "server_certificate": {
      "source": "SERVICE_SIGN"
    },
    "ssl_options": {
      "protocol": "TCP",
      "port": 443,
      "encryption_algorithm": "AES-128-GCM",
      "is_compressed": false
    }
  }
}
```
#### 响应消息
- 响应参数 返回状态码为 201: successful operation。
  表8响应Body参数列表 
  | 名称         | 类型                                                                    | 描述      |
  |:---|:---|:---|
  | vpn_server | [vpn_server] object | VPN服务端。 |
  | request_id | String                                                                | 请求ID。   |
     
   表9vpn_server 
  | 名称 | 类型     | 描述                                                                                                                                                                                                                                                                            |
  |:---|:---|:---|
  | id | String | - 功能说明：VPN服务端 ID。  - 格式：36位UUID。   |
     
  
- 响应样例
  ```
  {
    "vpn_server": {
      "id": "2407a20d-0bf7-4530-ba9a-7ffa0cedfa3b"
    },
    "request_id": "b19ba5a0be8f7b7f664b14596f8f35db"
  }
  ```
  
 
#### 状态码
请参见[状态码](https://support.huaweicloud.com/api-vpn/vpn_api_0052.html)。
