云服务器内容精选

  • 背景信息 根据对端网关IP地址个数不同,推荐的组网如表1所示。 表1 组网关系 对端网关IP个数 推荐组网 说明 1 VPN网关推荐使用双活模式,该场景占用1个VPN连接组配额。 2 VPN网关推荐使用主备模式,该场景占用2个VPN连接组配额。 如果用户数据中心仅有一个对端网关,且对端网关只能配置一个IP地址,VPN网关推荐使用双活模式,主EIP、主EIP2各创建一条VPN连接,对接同一个对端网关的同一个IP地址。该场景下仅占用一个VPN连接组配额。 如果用户数据中心存在两个对端网关,或一个对端网关可以配置两个IP地址,VPN网关推荐使用主备模式,主EIP、备EIP各创建一条VPN连接,对接到对端网关的不同IP地址。该场景下占用两个VPN连接组配额。
  • 背景信息 表1 背景信息 监控指标名称 VPN支持情况 是否默认开启 VPN连接状态 企业版VPN、经典版VPN均支持。 是 链路往返平均时延 链路往返最大时延 链路丢包率 接收包速率 发送包速率 接收速率 发送速率 SA接收包速率 SA发送包速率 SA接收速率 SA发送速率 仅企业版VPN支持。 否 单击VPN连接名称,在“基本信息”页签添加健康检查项。 隧道往返平均时延 隧道往返最大时延 隧道丢包率 仅企业版VPN支持。 是 仅VPN连接使用静态路由模式,且开启NQA检测机制场景时支持私网相关监控指标。
  • 约束与限制 在VPN网关状态处于“创建中”、“更新中”、“删除中”三种状态时,不能进行VPN网关删除操作。 如果VPN网关下存在VPN连接,则无法直接删除VPN网关。您需要先删除VPN网关下的所有VPN连接,然后再删除VPN网关。 如何删除VPN连接,请参见删除VPN连接。 如果VPN网关绑定的EIP计费模式为包年/包月,删除VPN网关时会同步解绑EIP。解绑后弹性公网IP继续保留,若不再使用可在网关删除后释放。 如果VPN网关绑定的EIP计费模式为按需,删除VPN网关时会同步释放EIP。 如果需要保留按需EIP,则您需要先将该EIP解绑,然后再删除VPN网关。如何解绑EIP,请参见解绑弹性公网IP。 如果VPN网关绑定了加入共享带宽的EIP,删除VPN网关时会同步释放EIP,保留共享带宽。
  • Mac客户端(Tunnelblick) 此处以安装Tunnelblick(3.8.8d)为例,不同软件版本的安装界面可能存在差异,请以实际为准。 前往官方网站下载Tunnelblick。 您可以根据实际需要下载适用的版本,推荐使用正式版本。下载软件时推荐下载DMG格式的软件。 根据界面提示,安装Tunnelblick。 图2 安装Tunelblick 启动Tunnelblick客户端,将已添加客户端证书及私钥的配置文件上传至Tunnelblick客户端,建立VPN连接。 图3 上传客户端配置文件 出现类似下图所示界面,代表连接成功。 图4 连接成功
  • iOS客户端 此处以安装OpenVPN Connect(3.4.0)为例,不同软件版本的安装界面可能存在差异,请以实际为准。 在App Store搜索“OpenVPN Connect”,下载并安装。 下载客户端配置,在“client_config.ovpn”文件中添加客户端证书及私钥,然后通过OpenVPN Connect打开,按照界面提示添加客户端配置。 图11 导入配置文件 出现类似下图所示界面,代表连接成功。 图11 连接成功
  • Mac客户端(OpenVPN Connect) 此处以安装OpenVPN Connect(3.4.4.4629)为例,不同软件版本的安装界面可能存在差异,请以实际为准。 在OpenVPN官方网站下载OpenVPN Connect,根据硬件规格选择对应安装程序。 图5 选择安装包 根据界面提示,完成软件安装。 图6 安装OpenVPN Connect 启动OpenVPN Connect客户端,导入已添加客户端证书及私钥的配置文件,填写配置信息后建立VPN连接。 图7 导入配置文件 出现类似下图所示界面,代表连接成功。 图8 连接成功
  • Windows客户端(OpenVPN Connect) 此处以安装OpenVPN Connect 3.4.2(3160)为例,不同软件版本的安装界面可能存在差异,请以实际为准。 在OpenVPN官方网站下载OpenVPN Connect,根据界面提示进行安装。 启动OpenVPN Connect客户端,支持以下两种方式添加配置信息,建立VPN连接。 方式1:使用配置文件(已添加客户端证书及私钥)建立VPN连接 导入已添加客户端证书及私钥的配置文件,建立VPN连接。 方式2:使用原始配置文件(未添加客户端证书及私钥)+USB-Key的组合,建立VPN连接 初始化USB-Key。 此处以使用龙脉mToken GM3000管理员工具(v2.2.19.619)制作USB-Key为例。USB-Key初始化成功后如下图所示,此时需要拔插一下USB设备。 将客户端证书导入USB-Key。 使用USB-Key建立VPN连接。 在OpenVPN Connect中导入USB-Key中未添加客户端CA证书及私钥的配置文件,单击“CONNECT”。 建连过程中,USB-Key需要保持插入状态。 建连成功后,拔出USB-Key,连接不会中断,需要手动断连;USB-Key拔出后,重新建连将失败。 出现类似下图所示界面,代表连接成功。 图1 连接成功
  • Linux客户端 此处以在Ubuntu 22.04(jammy) openvpn_2.5.8-0ubuntu0.22.04.1_amd64操作系统上安装OpenVPN为例,不同Linux系统的安装命令可能存在差异,请以实际为准。(2.5版本不支持dco,需要在配置文件中注释“disable-dco”。) 打开命令行窗口。 执行以下命令安装OpenVPN客户端。 yum install -y openvpn 将已添加客户端证书及私钥的客户端配置文件内容复制至/etc/openvpn/conf/目录。 进入/etc/openvpn/conf/目录,执行以下命令建立VPN连接。 openvpn --config /etc/openvpn/conf/config.ovpn --daemon
  • 响应消息 响应参数 返回状态码为 200: successful operation。 表2 响应Body参数列表 名称 类型 描述 availability_zones AvailabilityZones object 可用区列表。 request_id String 请求ID。 表3 AvailabilityZones 名称 类型 描述 basic VpnGatewayAvailabilityZones object Basic网关规格。 professional1 VpnGatewayAvailabilityZones object Professional1网关规格。 Professional1-NonFixedIP VpnGatewayAvailabilityZones object Professional1-NonFixedIP网关规格。 professional2 VpnGatewayAvailabilityZones object Professional2网关规格。 Professional2-NonFixedIP VpnGatewayAvailabilityZones object Professional2-NonFixedIP网关规格。 gm VpnGatewayAvailabilityZones object GM网关规格。 以上网关规格的实际可选范围请参考VPN控制台创建VPN网关页面的Specification选项。 表4 VpnGatewayAvailabilityZones 名称 类型 描述 vpc Array of String 关联VPC类型的可用区列表。 er Array of String 关联ER类型的可用区列表。 响应样例 { "availability_zones": { "basic": { "vpc": ["cn-south-1f"], "er": [] }, "professional1": { "vpc": ["cn-south-1f", "cn-south-1e", "cn-south-1c"], "er": ["cn-south-1f"] }, "professional2": { "vpc": ["cn-south-1f", "cn-south-1e", "cn-south-1c"], "er": ["cn-south-1f"] }, "Professional1-NonFixedIP": { "vpc": [], "er": [] }, "Professional2-NonFixedIP": { "vpc": [], "er": [] }, "gm": { "vpc": ["cn-south-1f", "cn-south-1e", "cn-south-1c"], "er": ["cn-south-1f"] } }, "request_id": "b60309ab-812c-4269-9de4-fb9a65e6db16" }
  • 响应消息 响应参数 返回状态码为 200: successful operation。 表8 响应Body参数列表 名称 类型 描述 vpn_connection ResponseVpnConnection object vpn_connection对象。 request_id String 请求ID。 表9 ResponseVpnConnection 名称 类型 描述 id String 功能说明:VPN连接ID。 格式:36位UUID。 name String 功能说明:VPN连接名称,不填时会自动生成。 取值范围:1-64个字符,支持数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)。 vgw_id String 功能说明:VPN网关ID。 格式:36位UUID。 vgw_ip String 功能说明: VPN网关EIP的ID或接入私网IP。 格式:36位UUID或点分十进制IPv4地址(如192.168.45.7)。 style String 功能说明:连接模式。 取值范围: POLICY: 策略模式。 STATIC: 静态路由模式。 BGP: bgp路由模式。 POLICY-TEMPLATE: 策略模板模式。 cgw_id String 功能说明:对端网关ID。 格式:36位UUID。 peer_subnets Array of String 对端子网。当VPN网关的关联模式为ER并且style字段为BGP或POLICY时不返回。 tunnel_local_address String 路由模式下配置在VPN网关上的tunnel接口地址。仅当style为STATIC或BGP时有效。 tunnel_peer_address String 路由模式下配置在用户侧设备上的tunnel接口地址。仅当style为STATIC或BGP时有效。 enable_nqa Boolean 功能说明:开启NQA检测。仅当style为STATIC时返回。 取值范围:true,false。 policy_rules Array of PolicyRule objects 策略模式的策略规则组。仅当style为POLICY时返回实际的策略规则组。 ikepolicy IkePolicy object ike策略对象。 ipsecpolicy IpsecPolicy object ipsec策略对象。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 enterprise_project_id String 功能说明:企业项目ID。 格式:36位UUID。与vgw_id所标识VPN网关的企业项目ID一致。 connection_monitor_id String 功能说明:VPN连接监控ID。仅当VPN连接下创建有连接监控时返回。 格式:36位UUID。 ha_role String 功能说明:主备模式VPN网关下的连接时,'master'表示主连接,'slave'表示备连接。双活模式下的连接ha_role都是'master'。 默认值:master。 tags Array of VpnResourceTag objects 标签列表。 表10 PolicyRule 名称 类型 描述 rule_index Integer 功能说明:规则ID。 取值范围:0-50。 source String 源地址网段。 destination Array of String 目的地址网段。单个网段格式示例:192.168.52.0/24。每个PolicyRule最多返回50个。 表11 IkePolicy 名称 类型 描述 ike_version String 功能说明:IKE版本号。 取值范围:v1, v2。 phase1_negotiation_mode String 功能说明:协商模式。仅当IKE版本为v1时返回。 取值范围: main:主模式,协商过程安全性高。 aggressive:野蛮模式,协商快速且协商成功率高。 authentication_algorithm String 功能说明:认证算法。 取值范围:sha2-512,sha2-384,sha2-256,sha1,md5,sm3。 encryption_algorithm String 功能说明:加密算法。 取值范围:aes-256-gcm-16,aes-128-gcm-16,aes-256,aes-192,aes-128,3des,sm4。 dh_group String 功能说明:第一阶段密钥交换使用的DH组,当VPN网关flavor为GM时不返回。 取值范围:group1,group2,group5,group14,group15,group16,group19,group20,group21。 authentication_method String 功能说明:ike协商时的认证方法。 取值范围: pre-share:预共享密钥。 digital-envelope-v2:国密数字信封。 lifetime_seconds Integer 功能说明:表示SA的生存周期,当该生存周期超时后IKE SA将自动更新。 取值范围:60-604800,单位:秒。 local_id_type String 功能说明:本端ID类型,当VPN网关flavor为GM时不返回。 取值范围: ip。 fqdn。 local_id String 本端ID。当local_id_type为ip时返回VPN连接所使用的网关IP;当local_id_type为fqdn时返回创建或更新VPN连接时指定的本端ID。 当VPN网关flavor为GM时不返回。 peer_id_type String 功能说明:对端ID类型,当VPN网关flavor为GM时不返回。 取值范围: ip。 any。 fqdn。 peer_id String 对端ID。当peer_id_type为ip时返回对端网关的IP;当peer_id_type为fqdn时返回创建或更新VPN连接时指定的对端ID;当peer_id_type为any时不返回。 当VPN网关flavor为GM时不返回。 dpd Dpd object 对等体存活检测对象。 表12 Dpd 名称 类型 描述 timeout Integer 功能说明:对等体存活检测报文重传间隔。 取值范围:2-60,单位:秒。 interval Integer 功能说明:对等体存活检测空闲时间。 取值范围:10-3600,单位:秒。 msg String 功能说明:对等体存活检测报文格式。 取值范围: seq-hash-notify:指定DPD报文中的载荷顺序是hash-notify。 seq-notify-hash:指定DPD报文中的载荷顺序是notify-hash。 表13 IpsecPolicy 名称 类型 描述 authentication_algorithm String 功能说明:认证算法。 取值范围:sha2-512,sha2-384,sha2-256,sha1,md5,sm3。 encryption_algorithm String 功能说明:加密算法。 取值范围:aes-256-gcm-16,aes-128-gcm-16,aes-256,aes-192,aes-128,3des,sm4。 pfs String 功能说明:PFS使用的DH密钥组 取值范围:group1,group2,group5,group14,group15,group16,group19,group20,group21,disable。 transform_protocol String 功能说明:传输协议。 取值范围: esp:封装安全协议。 lifetime_seconds Integer 功能说明:表示配置IPSec连接建立的隧道以时间为基准的生存周期。 取值范围:30-604800,单位:秒。 encapsulation_mode String 功能说明:报文封装模式。 取值范围: tunnel:隧道模式。 表14 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 响应样例 更新VPN连接的响应。 { "vpn_connection": { "id": "98c5af8a-demo-a8df-va86-ae2280a6f4c3", "name": "vpn-1655", "vgw_id": "b32d91a4-demo-a8df-va86-e907174eb11d", "vgw_ip": "0c464dad-demo-a8df-va86-c22bb0eb0bde", "style": "POLICY", "cgw_id": "5247ae10-demo-a8df-va86-dd36659a7f5d", "peer_subnets": ["192.168.1.0/24"], "tunnel_local_address": "169.254.56.225/30", "tunnel_peer_address": "169.254.56.226/30", "policy_rules": [{ "rule_index": 1, "source": "10.0.0.0/24", "destination": [ "192.168.1.0/24" ] }], "ikepolicy": { "ike_version": "v2", "authentication_algorithm": "sha2-256", "encryption_algorithm": "aes-128", "dh_group": "group15", "authentication_method": "pre-share", "lifetime_seconds": 86400, "local_id_type": "ip", "local_id": "10.***.***.134", "peer_id_type": "ip", "peer_id": "88.***.***.164", "dpd": { "timeout": 15, "interval": 30, "msg": "seq-hash-notify" } }, "ipsecpolicy": { "authentication_algorithm": "sha2-256", "encryption_algorithm": "aes-128", "pfs": "group15", "transform_protocol": "esp", "lifetime_seconds": 3600, "encapsulation_mode": "tunnel" }, "created_at": "2022-11-26T13:41:34.626Z", "updated_at": "2022-11-26T13:41:34.626Z", "enterprise_project_id": "0", "ha_role": "master" }, "request_id": "f91082d4-6d49-479c-ad1d-4e552a9f5cae" } 冻结场景下更新失败。 { "error_code": "VPN.0001", "error_msg": "invalid request: ILLEGAL not allowed update vpnConnection", "request_id": "8c833634-4560-7897-7740-a7462f5bcbd4" }
  • 数据准备 表1 创建VPN网关请求关键参数 参数 说明 取值样例 vpc_id VPN网关所连接的VPC的ID。 cb4a631d-demo-a8df-va86-ca3fa348c36c local_subnets 本端子网。 192.168.0.0/24,192.168.1.0/24 connect_subnet VPN网关所使用的VPC中的子网ID。 f5741286-demo-a8df-va86-2c82bd9ee114 eip1.id VPN网关使用的第一个EIP的ID。 cff40e5e-demo-a8df-va86-7366077bf097 eip2.id VPN网关使用的第二个EIP的ID。 d290f1ee-demo-a8df-va86-d701748f0851
  • 操作步骤 创建关联VPC的VPN网关。 发送“POST https://{endpoint}/v5/{project_id}/vpn-gateways”,project_id为项目ID。 在Request Header中增加“X-Auth-Token”。 在Request Body中传入参数如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { "vpn_gateway": { "vpc_id": "cb4a631d-demo-a8df-va86-ca3fa348c36c", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "connect_subnet": "f5741286-demo-a8df-va86-2c82bd9ee114", "eip1": { "id": "cff40e5e-demo-a8df-va86-7366077bf097" }, "eip2": { "id": "d290f1ee-demo-a8df-va86-d701748f0851" } } } 查看请求响应结果。 请求成功时,响应参数如下,id就是VPN网关的ID。 { "vpn_gateway": { "id": "620d99b8-demo-a8df-va86-200b868f2d7d", "name": "vpngw-3caf", "network_type": "public", "attachment_type": "vpc", "vpc_id": "cb4a631d-demo-a8df-va86-ca3fa348c36c", "local_subnets": ["192.168.0.0/24", "192.168.1.0/24"], "connect_subnet": "f5741286-demo-a8df-va86-2c82bd9ee114", "bgp_asn": 64512, "access_vpc_id": "cb4a631d-demo-a8df-va86-ca3fa348c36c", "access_subnet_id": "f5741286-demo-a8df-va86-2c82bd9ee114", "flavor": "Professional1", "used_connection_number": 0, "used_connection_group": 0, "enterprise_project_id": "0" }, "request_id": "4a739f5c-edb7-4122-b31f-b77fb1b94857" } 查询VPN网关详情。 发送“GET https://{endpoint}/v5/{project_id}/vpn-gateways/{vgw_id}”,project_id为项目ID。 在Request Header中增加“X-Auth-Token”。 查看请求响应结果。 请求成功时,响应参数如下,id就是VPN网关的ID。 { "vpn_gateway": { "id": "620d99b8-demo-a8df-va86-200b868f2d7d", "name": "vpngw-3caf", "network_type": "public", "status": "ACTIVE", "attachment_type": "vpc", "vpc_id": "cb4a631d-demo-a8df-va86-ca3fa348c36c", "local_subnets": [ "192.168.0.0/24", "192.168.1.0/24" ], "connect_subnet": "f5741286-demo-a8df-va86-2c82bd9ee114", "access_vpc_id": "cb4a631d-demo-a8df-va86-ca3fa348c36c", "access_subnet_id": "f5741286-demo-a8df-va86-2c82bd9ee114", "bgp_asn": 64512, "flavor": "Professional1", "availability_zone_ids": [ "cn-south-1f", "cn-south-1e" ], "used_connection_number": 0, "used_connection_group": 0, "enterprise_project_id": "0", "eip1": { "id": "cff40e5e-demo-a8df-va86-7366077bf097", "ip_version": 4, "type": "5_bgp", "ip_address": "88.***.***.8", "charge_mode": "bandwidth", "bandwidth_id": "593a1a79-demo-a8df-va86-64ec45fb23f6", "bandwidth_size": 300, "bandwidth_name": "vpngw-bandwidth-1391" }, "eip2": { "id": "d290f1ee-demo-a8df-va86-d701748f0851", "ip_version": 4, "type": "5_bgp", "ip_address": "88.***.***.6", "charge_mode": "bandwidth", "bandwidth_id": "0abb9d55-demo-a8df-va86-b7500ac2a338", "bandwidth_size": 300, "bandwidth_name": "vpngw-bandwidth-1392" }, "created_at": "2022-09-15T08:56:09.386Z", "updated_at": "2022-09-15T11:13:13.677Z" }, "request_id": "d099a7dc-ea71-45a6-a75b-dccbfe17d438" }
  • 前提条件 已创建VPC,具体请参见创建VPC。 您需要规划VPN网关所在的区域信息,并根据区域确定调用API的Endpoint。 当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。Token认证,具体操作请参考认证鉴权章节。 通过 IAM 服务获取到的Token有效期为24小时,需要使用同一个Token鉴权时,可以先将Token缓存,避免频繁调用。
  • 响应消息 响应参数 返回状态码为 200: 更新成功。 表5 响应Body参数列表 名称 类型 描述 customer_gateway ResponseCustomerGateway object customer_gateway对象。 request_id String 请求id。 表6 ResponseCustomerGateway 名称 类型 描述 id String 功能说明:对端网关的ID。 格式:36位UUID。 name String 功能说明:对端网关名称,不填时会自动生成。 取值范围:1-64个字符,包括数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)。 id_type String 功能说明:对端网关标识类型。 取值范围: ip。 fqdn。 id_value String 对端网关标识值。 bgp_asn Long 对端网关的BGP自治域编号。仅当id_type为ip时返回。 created_at String 创建时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 updated_at String 最后一次更新时间。 UTC时间格式:yyyy-MM-ddTHH:mm:ss.SSSZ。 ca_certificate CaCertificate object 对端网关CA证书信息。仅当对端网关绑定CA证书时返回。 tags Array of VpnResourceTag objects 标签列表。 表7 CaCertificate 名称 类型 描述 id String 证书ID。 serial_number String 证书序列号。 signature_algorithm String 签名算法。 issuer String 证书颁发者。 subject String 证书使用者。 expire_time String 证书过期时间。 is_updatable boolean 是否能更新证书内容。 表8 VpnResourceTag 名称 类型 描述 key String 功能说明:标签的键。 取值范围:1-128个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 value String 功能说明:标签的值。 取值范围:0-255个字符,支持数字、英文字母、中文、西班牙语、葡语、空格,以及以下字符:_.:=+-@。 响应样例 { "customer_gateway": { "id": "03c0aa3d-demo-a8df-va86-9d82473765d4", "name": "cgw-f846", "id_type": "ip", "id_value": "10.***.***.21", "bgp_asn": 65533, "ca_certificate": { "serial_number": "14257156674311863338", "signature_algorithm": "SM3WITHSM2", "issuer": "C=CN,O=a0002,CN=XXX", "subject": "C=CN,O=a0002,CN=XXX", "expire_time": "2024-05-22T07:34:22Z", "is_updatable": true }, "created_at": "2021-12-21T16:49:28.108+08:00", "updated_at": "2021-12-21T16:49:28.108+08:00" }, "request_id": "96718f4a-f57a-4e1f-8d05-7d5e903c8d90" }
  • 请求消息 请求参数 表2 请求参数 名称 类型 是否必选 描述 customer_gateway UpdateCgwRequestBodyContent object 是 customer_gateway对象。 表3 UpdateCgwRequestBodyContent 名称 类型 是否必选 描述 name String 否 功能说明:网关名称。 取值范围:1-64个字符,支持数字、英文字母、中文(\u4e00 - \u9fa5)、_(下划线)、-(中划线)、.(点)。 ca_certificate CaCertificateRequest object 否 功能说明:对端网关CA证书。 表4 CaCertificateRequest 名称 类型 是否必选 描述 id String 否 功能说明:证书ID。 格式:36位UUID。 content String 否 功能说明:对端网关CA证书内容。 取值范围:1-8192个字符。 请求样例 PUT https://{Endpoint}/v5/{project_id}/customer-gateways/{customer_gateway_id} { "customer_gateway": { "name": "cgw-f846", "ca_certificate": { "content":"******" } } }