Creates an IPsec-VPN connection.
Operation description
-
If the VPN gateway supports the dual-tunnel mode, you can specify the following parameters in addition to the required parameters when you call
CreateVpnConnection
:ClientToken, Name, EffectImmediately, AutoConfigRoute, Tags array, TunnelOptionsSpecification array, and EnableTunnelsBgp.
For more information about the regions and zones that support the dual-tunnel mode, see IPsec-VPN connections support the dual-tunnel mode.
-
If the VPN gateway supports only the dual-tunnel mode, you can specify the following parameters in addition to the required parameters when you call
CreateVpnConnection
:ClientToken, CustomerGatewayId, Name, EffectImmediately, IkeConfig, IpsecConfig, HealthCheckConfig, AutoConfigRoute, EnableDpd, EnableNatTraversal, BgpConfig, RemoteCaCertificate, and Tags array.
-
CreateVpnConnection is an asynchronous operation. After a request is sent, the system returns a request ID and runs the task in the background. You can call DescribeVpnGateway to query the status of the task.
- If the VPN gateway is in the updating state, the IPsec-VPN connection is being created.
- If the VPN gateway is in the active state, the IPsec-VPN connection is created.
-
You cannot call CreateVpnConnection to create multiple IPsec-VPN connections associated with a VPN gateway at the same time.
Debugging
Authorization information
The following table shows the authorization information corresponding to the API. The authorization information can be used in the Action
policy element to grant a RAM user or RAM role the permissions to call this API operation. Description:
- Operation: the value that you can use in the Action element to specify the operation on a resource.
- Access level: the access level of each operation. The levels are read, write, and list.
- Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
- The required resource types are displayed in bold characters.
- If the permissions cannot be granted at the resource level,
All Resources
is used in the Resource type column of the operation.
- Condition Key: the condition key that is defined by the cloud service.
- Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
Operation | Access level | Resource type | Condition key | Associated operation |
---|---|---|---|---|
vpc:CreateVpnConnection | create | *CustomerGateway acs:vpc:{#regionId}:{#accountId}:customergateway/{#CustomerGatewayId} *VpnConnection acs:vpc:{#regionId}:{#accountId}:vpnconnection/* *VpnGateway acs:vpc:{#regionId}:{#accountId}:vpngateway/{#VpnGatewayId} |
| none |
Request parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
RegionId | string | Yes | The ID of the region where the IPsec-VPN connection is created. You can call the DescribeRegions operation to query the most recent region list. | cn-shanghai |
ClientToken | string | No | The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters. Note
If you do not specify this parameter, the system automatically uses the request ID as the client token. The request ID may be different for each request.
| 02fb3da4-130e-11e9-8e44-001**** |
CustomerGatewayId | string | No | When you create an IPsec-VPN connection in single-tunnel mode, this parameter is required. The ID of the customer gateway. | cgw-p0w2jemrcj5u61un8**** |
VpnGatewayId | string | Yes | The ID of the VPN gateway. | vpn-bp1q8bgx4xnkm**** |
Name | string | No | The name of the IPsec-VPN connection. The name must be 1 to 100 characters in length and cannot start with | IPsec |
LocalSubnet | string | Yes | The CIDR block of the virtual private cloud (VPC) that needs to communicate with the on-premises database. The CIDR block is used in Phase 2 negotiations. Separate multiple CIDR blocks with commas (,). Example: 192.168.1.0/24,192.168.2.0/24. The following routing modes are supported:
| 10.10.1.0/24,10.10.2.0/24 |
RemoteSubnet | string | Yes | The CIDR block of the on-premises database that needs to communicate with the VPC. The CIDR block is used in Phase 2 negotiations. Separate multiple CIDR blocks with commas (,). Example: 192.168.3.0/24,192.168.4.0/24. The following routing modes are supported:
| 10.10.3.0/24,10.10.4.0/24 |
EffectImmediately | boolean | No | Specifies whether to immediately start IPsec negotiations. Valid values:
| false |
IkeConfig | string | No | This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode. The configurations of Phase 1 negotiations:
| {"Psk":"1234****","IkeVersion":"ikev1","IkeMode":"main","IkeEncAlg":"aes","IkeAuthAlg":"sha1","IkePfs":"group2","IkeLifetime":86400,"LocalId":"47.XX.XX.1","RemoteId":"47.XX.XX.2"} |
IpsecConfig | string | No | This parameter is available if you create an IPsec-VPN connection in single-tunnel mode. The configurations of Phase 2 negotiations:
| {"IpsecEncAlg":"aes","IpsecAuthAlg":"sha1","IpsecPfs":"group2","IpsecLifetime":86400} |
HealthCheckConfig | string | No | This parameter is available if you create an IPsec-VPN connection in single-tunnel mode. The health check configuration:
| {"enable":"true","dip":"192.168.10.1","sip":"10.10.1.1","interval":"3","retry":"3"} |
AutoConfigRoute | boolean | No | Specifies whether to automatically configure routes. Valid values:
| true |
EnableDpd | boolean | No | This parameter is available if you create an IPsec-VPN connection in single-tunnel mode. Specifies whether to enable the dead peer detection (DPD) feature. Valid values:
| true |
EnableNatTraversal | boolean | No | This parameter is available if you create an IPsec-VPN connection in single-tunnel mode. Specifies whether to enable NAT traversal. Valid values:
| true |
BgpConfig | string | No | This parameter is supported when you create an IPsec-VPN connection in single-tunnel mode. BGP configuration:
Note
| {"EnableBgp":"true","LocalAsn":"45104","TunnelCidr":"169.254.11.0/30","LocalBgpIp":"169.254.11.1"} |
RemoteCaCertificate | string | No | This parameter is available if you create an IPsec-VPN connection in single-tunnel mode. The certificate authority (CA) certificate. If the VPN gateway is of the ShangMi (SM) type, you need to configure a CA certificate for the peer gateway device.
| -----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE----- |
Tags | array<object> | No | The tag value. The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call. | |
object | No | The tag value. | ||
Key | string | No | The tag key. The tag key cannot be an empty string. It can be at most 64 characters in length, and cannot contain You can specify at most 20 tag keys in each call. | TagKey |
Value | string | No | The tag value. The tag value can be an empty string and cannot exceed 128 characters in length. It cannot start with Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call. | TagValue |
TunnelOptionsSpecification | array<object> | No | The tunnel configurations.
| |
object | No | The tunnel configurations. | ||
CustomerGatewayId | string | No | The ID of the customer gateway that is associated with the tunnel. Note
| cgw-p0wy363lucf1uyae8**** |
EnableDpd | boolean | No | Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
| true |
EnableNatTraversal | boolean | No | Specifies whether to enable NAT traversal for the tunnel. Valid values:
| true |
RemoteCaCertificate | string | No | If the VPN gateway uses an SM certificate, you need to configure the CA certificate used by the IPsec peer.
| -----BEGIN CERTIFICATE----- MIIB7zCCAZW**** -----END CERTIFICATE----- |
Role | string | No | The role of the tunnel. Valid values: Valid values:
| master |
TunnelBgpConfig | object | No | The Border Gateway Protocol (BGP) configurations of the tunnel. | |
LocalAsn | long | No | The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: 1 to 4294967295. Default value: 45104. Note
| 65530 |
LocalBgpIp | string | No | The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block. | 169.254.10.1 |
TunnelCidr | string | No | The BGP CIDR block of the tunnel. The CIDR block must fall within the 169.254.0.0/16 range. The subnet mask of the CIDR block must be 30 bits in length. Note
The BGP CIDR block of each tunnel must be unique on a VPN gateway.
| 169.254.10.0/30 |
TunnelIkeConfig | object | No | The configurations of Phase 1 negotiations. | |
IkeAuthAlg | string | No | The authentication algorithm that is used in Phase 1 negotiations. Valid values: md5, sha1, sha256, sha384, and sha512. Default value: md5. | md5 |
IkeEncAlg | string | No | The encryption algorithm that is used in Phase 1 negotiations. Valid values: aes, aes192, aes256, des, and 3des. Default value: aes. | aes |
IkeLifetime | long | No | The SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: 0 to 86400. Default value: 86400. | 86400 |
IkeMode | string | No | The negotiation mode of IKE. Valid values: main and aggressive. Default value: main.
| main |
IkePfs | string | No | The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: group2. | group2 |
IkeVersion | string | No | The version of the IKE protocol. Valid values: ikev1 and ikev2. Default value: ikev1. Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks. | ikev1 |
LocalId | string | No | The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the tunnel. LocalId supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to aggressive. | 47.21.XX.XX |
Psk | string | No | The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.
Note
The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.
| 123456**** |
RemoteId | string | No | The identifier of the tunnel peer, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the customer gateway that is associated with the tunnel. RemoteId supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to aggressive. | 47.42.XX.XX |
TunnelIpsecConfig | object | No | The configurations of Phase 2 negotiations. | |
IpsecAuthAlg | string | No | The authentication algorithm that is used in Phase 2 negotiations. Valid values: md5, sha1, sha256, sha384, and sha512. Default value: md5. | md5 |
IpsecEncAlg | string | No | The encryption algorithm that is used in Phase 2 negotiations. Valid values: aes, aes192, aes256, des, and 3des. Default value: aes. | aes |
IpsecLifetime | long | No | The SA lifetime as a result of Phase 2 negotiations. Unit: seconds. Valid values: 0 to 86400. Default value: 86400. | 86400 |
IpsecPfs | string | No | The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: group2. Valid values: disabled, group1, group2, group5, and group14. | group2 |
EnableTunnelsBgp | boolean | No | This parameter is available if you create an IPsec-VPN connection in dual-tunnel mode. Specifies whether to enable the BGP feature for the tunnel. Valid values: true and false. Default value: false. | true |
Response parameters
Examples
Sample success responses
JSON
format
{
"RequestId": "082AD562-B8DB-4BB2-861F-DA1FCA01FD76",
"VpnConnectionId": "vco-bp15oes1py4i6****",
"Name": "test",
"CreateTime": 1544666102000
}
Error codes
HTTP status code | Error code | Error message | Description |
---|---|---|---|
400 | Resource.QuotaFull | The quota of resource is full | The resource quota is exhausted. |
400 | InvalidVpnConnection.AlreadyExists | Vpn connection already exists. | Vpn connection already exists. |
400 | VpnGateway.Configuring | The specified service is configuring. | The service is being configured. Try again later. |
400 | VpnGateway.FinancialLocked | The specified service is financial locked. | The service is suspended due to overdue payments. Top up your account first. |
400 | VpnGateway.IpsecVpnDisabled | The vpn gateway does not enable IPSec VPN. | The IPsec-VPN feature is not enabled for the VPN gateway. |
400 | VpnRouteEntry.AlreadyExists | The specified route entry is already exist. | The route already exists. |
400 | VpnRouteEntry.Conflict | The specified route entry has conflict. | Route conflicts exist. |
400 | NotSupportVpnConnectionParameter.IpsecPfs | The specified vpn connection ipsec Ipsec Pfs is not support. | The PFS parameter set for the IPsec-VPN connection is not supported. |
400 | NotSupportVpnConnectionParameter.IpsecAuthAlg | The specified vpn connection ipsec Auth Alg is not support. | The authentication algorithm specified for the IPsec-VPN connection is not supported. |
400 | VpnRouteEntry.ConflictSSL | The specified route entry has conflict with SSL client. | The route conflicts with the SSL client. |
400 | VpnRouteEntry.BackupRoute | Validate backup route entry failed. | Active/standby routes failed authentication. |
400 | VpnRouteEntry.InvalidWeight | Invalid route entry weight value. | The weight specified for the route is invalid. |
400 | InvalidParameter.VpnConnectionName | The specified vpn connection name is invalid. | The VPN connection name does not meet the requirements. |
400 | OperationUnsupported.SetDPD | Current version of the VPN does not support setting DPD. | The VPN gateway version does not support DPD. |
400 | OperationUnsupported.SetNatTraversal | Current version of the VPN does not support setting NAT traversal. | The VPN gateway version does not support NAT traversal. |
400 | QuotaExceeded.PolicyBasedRoute | The maximum number of policy-based routes is exceeded. Existing routes: %s. Routes to be created: %s. Maximum routes: %s. | The quota of policy-based routes is reached. Existing routes: %s. Routes to be created: %s. Quota: %s. |
400 | MissingParameter.TunnelCidr | The parameter TunnelCidr is mandatory when BGP is enabled. | You must specify the tunnel CIDR block when you enable BGP. |
400 | OperationUnsupported.EnableBgp | Current version of the VPN does not support enable BGP. | The current version of the VPN gateway does not support BGP. |
400 | MissingParam.CustomerGatewayAsn | Asn of customer gateway is mandatory when BGP is enabled. | The ASN of the customer gateway cannot be empty when you enable BGP. |
400 | IllegalParam.LocalAsn | The specified LocalAsn is invalid. | The local ASN is invalid. |
400 | IllegalParam.BgpConfig | The specified BgpConfig is invalid. | The BGP configuration is invalid. |
400 | IllegalParam.EnableBgp | VPN connection must enable BGP when VPN gateway has enabled BGP. | The error message returned because the VPN connection must use BGP if BGP is enabled for the VPN gateway. |
400 | IllegalParam.TunnelCidr | The specified TunnelCidr is invalid. | The TunnelCidr parameter is set to an invalid value. |
400 | InvalidLocalBgpIp.Malformed | The specified LocalBgpIp is malformed. | The local BGP IP address is in an abnormal state. |
400 | IllegalParam.LocalBgpIp | The specified LocalBgpIp is invalid. | The local BGP IP address is invalid. |
400 | IllegalParam.LocalSubnet | The specified "LocalSubnet" (%s) is invalid. | The specified "LocalSubnet" (%s) is invalid. |
400 | IllegalParam.RemoteSubnet | The specified "RemoteSubnet" (%s) is invalid. | The specified "RemoteSubnet" (%s) is invalid. |
400 | OperationFailed.MissCertificate | The VPN gateway has not associated any certificates. | The error message returned because the VPN gateway is not associated with a certificate. |
400 | MissingParam.RemoteId | The remote ID is mandatory when creating national standard VPN connection. | The error message returned because the peer ID is not specified. You must specify the peer ID when you create a VPN connection encrypted by SM. |
400 | OperationFailed.CenLevelNotSupport | When the VPC to which the VPN gateway belongs is attached to a FULL-mode CEN, the VPN gateway cannot enable BGP. | When the VPC to which the VPN gateway belongs is attached to a FULL-mode CEN, the VPN gateway cannot enable BGP. |
400 | CustomerGateway.ConflictRouteEntry | The specified customer gateway has conflict with route entry. | The customer gateway conflicts with the current routes. |
400 | VpnTask.CONFLICT | Vpn task has conflict. | The VPN operation conflicts. Try again later. |
400 | Forbidden.TagKey.Duplicated | The specified tag key already exists. | The tag resources are duplicate. |
400 | SizeLimitExceeded.TagNum | The maximum number of tags is exceeded. | The number of tags has reached the upper limit. |
400 | InvalidParameter.TagValue | The specified parameter TagValue is invalid. | The error message returned because the specified tag value is invalid. |
400 | InvalidParameter.TagKey | The specified parameter TagKey is invalid. | The error message returned because the specified tag key is invalid. |
400 | Duplicated.TagKey | The specified parameter TagKey is duplicated. | The error message returned because the specified tag key already exists. |
400 | InternalError | The request processing has failed due to some unknown error, exception or failure. | An internal error occurred. |
400 | InvalidTunnelCidr.Malformed | The specified TunnelCidr is malformed. | The specified tunnel CIDR block is invalid. |
400 | VpnConnectionParamInvalid.SameVpnAndCgwDifferentIkeConfigs | IPSec connections associated with the same user gateway and VPN gateway should have the same pre-shared key and IKE configuration. | The pre-shared key and IKE parameters must be the same for IPsec-VPN connections that are associated with the same VPN gateway and customer gateway. |
400 | VpnConnectionParamInvalid.SameVpnAndCgwTrafficSelectorOverlap | Traffic selectors of IPSec connections associated with the same user gateway and VPN gateway should not overlap. | The protected data flows of IPsec-VPN connections that are associated with the same VPN gateway and customer gateway cannot overlap. |
400 | CustomerGateway.ConflictVpnIp | The customer gateway associated with the IPSec connection should not have the same IP address as the VPN gateway. | The customer gateway and VPN gateway of an IPsec-VPN connection cannot use the same IP address. |
400 | VpnGateway.IPsecServerAndVpnConnectionConflict | The IPSec connection and IPSec server cannot be configured on the same VPN gateway at the same time. | You cannot configure an IPsec server and an IPsec-VPN connection at the same time for one VPN gateway. |
400 | InvalidSslVpnServerCertId.NotFound | The parameter is incorrect. The corresponding SSL VPN server certificate cannot be found. | The parameter is incorrect. The corresponding SSL VPN server certificate cannot be found. |
400 | MissingParameter.TunnelOptionsSpecification | The required parameters are missing when creating a tunnel for dual-tunnel VPN. | The required parameters are missing when creating a tunnel for dual-tunnel VPN. |
400 | CreateDbrRoutesQuotaFull.QuotaFull | The number of created destination routes exceeds the quota limit. | The number of created destination routes exceeds the quota limit. |
400 | CreatePbrRoutesQuotaFull.QuotaFull | The number of policy routes exceeds the quota limit. | The number of policy routes exceeds the quota limit. |
400 | CreateVpnConnectionsQuotaFull.QuotaFull | The number of VPN connections exceeds the quota limit. | The number of VPN connections exceeds the quota limit. |
400 | Resource.QuotaFull | The resources you are operating have reached the upper limit of the quota. Please increase the quota or use other solutions to avoid it according to the VPN operation document. | The resources you are operating have reached the upper limit of the quota. Please refer to the VPN operation document to increase the quota or use other schemes to avoid it. |
403 | Forbbiden.SubUser | User not authorized to operate on the specified resource as your account is created by another user. | You are unauthorized to perform this operation on the specified resource. Acquire the required permissions and try again. |
403 | Forbidden | User not authorized to operate on the specified resource. | You do not have the permissions to manage the specified resource. Apply for the permissions and try again. |
404 | InvalidCustomerGatewayInstanceId.NotFound | The specified customer gateway instance id does not exist. | The specified customer gateway does not exist. Check whether the ID of the customer gateway is correct. |
404 | InvalidVpnGatewayInstanceId.NotFound | The specified vpn gateway instance id does not exist. | The specified VPN gateway does not exist. Check whether the specified VPN gateway is valid. |
For a list of error codes, visit the Service error codes.
Change history
Change time | Summary of changes | Operation |
---|---|---|
2024-01-04 | The Error code has changed | View Change Details |
2023-10-19 | API Description Update. The API operation is not deprecated.. The Error code has changed | View Change Details |
2023-08-21 | The Error code has changed | View Change Details |
2023-08-02 | The Error code has changed | View Change Details |
2023-06-30 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2023-05-04 | The Error code has changed | View Change Details |