VPN

私有网络 VPC

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 相关概念
    • 产品特性
    • 使用限制
    • 产品优势
    • 产品介绍
    • 应用场景
  • 典型实践
    • Windows使用HAVIP配置主备多机
    • VPC自定义路由表实现流量安全互访
    • 配置自定义服务并使用服务网卡为其他VPC提供服务
    • 对等连接典型实践
    • 使用Terraform管理弹性网卡典型实践
    • 二层网关与专线接入ET组合构建IDC与云上VPC大二层网络
    • 网络层安全说明
    • 安全组配置实践(进阶篇)
    • HAVIP结合Keepalived实现主备多机高可用
    • 使用Keepalived在VPC实现高可用架构
    • 使用Terraform管理IPsec VPN网关典型实践
    • 安全组配置实践(入门篇)
  • 操作指南
    • 多用户访问控制
    • 子网
    • 网络拓扑
    • 使用IPv6
    • 标签管理
    • 路由表
    • VPC
    • 网卡
      • 高可用虚拟IP
      • 弹性网卡
      • 服务网卡
    • 网络诊断
      • 路径分析
      • 网关限速
      • 网络探测
      • 端口验通
      • 流量镜像
      • 流日志
    • 监控与运维
      • NAT网关实例诊断
    • 访问控制
      • ACL
      • 参数模版
      • 安全组
    • 网络连接
      • 二层网关
      • 专线网关
      • 对等连接
      • IPv6网关
      • VPN网关
        • SSL VPN网关
        • GRE VPN网关
        • IPsec VPN网关
      • NAT网关
        • 私网NAT网关
        • 公网NAT网关
  • 服务等级协议SLA
    • 服务网卡服务等级协议SLA
    • VPN网关服务等级协议SLA
    • IPv6网关服务等级协议SLA
    • 对等连接服务等级协议SLA
    • NAT网关服务等级协议SLA
  • API参考
    • 通用说明
    • 接口概览
    • API概述
    • 附录
    • 公共头和错误返回
    • 服务域名
    • API功能发布记录
    • ACL相关接口
      • 添加ACL规则
      • 更新ACL规则
      • 删除ACL规则
      • 查询ACL规则
      • 查询ACL
    • IPv6网关相关接口
      • IPv6网关带宽升降级
      • 创建IPv6网关
      • 更新IPv6网关限速策略
      • 删除Ipv6网关
      • 更新IPv6网关释放保护开关
      • 查询IPv6网关限速策略列表
      • 创建IPv6网关限速策略
      • 添加IPv6只出不进策略
      • 删除IPv6只出不进策略
      • 查询IPv6只出不进策略列表
      • 查询IPv6网关
      • 删除IPv6网关限速策略
    • 弹性网卡相关接口
      • 删除弹性网卡
      • 批量删除弹性网卡内网IP
      • 弹性网卡更新企业安全组
      • 创建弹性网卡
      • 弹性网卡卸载云产品实例
      • 删除弹性网卡辅助IP
      • 弹性网卡绑定EIP
      • 查询弹性网卡列表
      • 增加弹性网卡辅助IP
      • 弹性网卡更新普通安全组
      • 批量增加弹性网卡内网IP
      • 查询弹性网卡状态
      • 更新弹性网卡
      • 弹性网卡挂载云产品实例
      • 弹性网卡解绑EIP
      • 查询指定的弹性网卡
    • 参数模板相关接口
      • 创建IP地址族
      • 更新IP地址组
      • 查询指定的IP地址组
      • 更新IP地址族
      • 创建IP地址组
      • 查询IP地址族列表
      • 查询指定的IP地址族
      • IP地址组删除IP地址
      • IP地址组添加IP地址
      • 删除IP地址族
      • IP地址族移除IP地址组
      • 查询IP地址组列表
      • 删除IP地址组
      • IP地址族添加IP地址组
    • 子网相关接口
      • 更新子网
      • 创建预留网段
      • 查询预留网段列表
      • 删除预留网段
      • 查询指定子网
      • 创建子网
      • 查询子网列表
      • 删除子网
    • VPC相关接口
      • 关闭VPC中继
      • 删除VPC
      • 查询指定VPC
      • 创建VPC
      • 查询VPC列表
      • 查询VPC内产品占用IP
      • 开启VPC中继
      • 查询VPC内网IP
      • 更新VPC
    • 网关限速规则相关接口
      • 查看网关限速规则
      • 修改网关限速规则
      • 创建网关限速规则
      • 删除网关限速规则
    • 对等连接相关接口
      • 释放对等连接
      • 关闭对等连接同步DNS
      • 处理对等连接申请
      • 更新对等连接释放保护开关
      • 对等连接续费
      • 查看对等连接详情
      • 创建对等连接
      • 查询对等连接列表
      • 开启对等连接同步DNS
      • 对等连接带宽升降级
      • 更新对等连接本端接口名称和备注
    • 路由表相关接口
      • 查询路由规则
      • 删除路由规则
      • 主备切换
      • 创建路由规则
      • 更新路由规则
      • 查询路由表
    • VPN相关接口
      • VPN网关续费
      • 解绑EIP
      • 更新SSL-VPN用户
      • 删除VPN隧道
      • 查询VPN隧道
      • 删除SSL-VPN用户
      • 绑定EIP
      • 批量创建SSL-VPN用户
      • 更新VPN
      • 查询SSL-VPN用户
      • 删除SSL-VPN服务端
      • 释放VPN
      • 查询SSL-VPN服务端
      • 查询VPN列表
      • 更新SSL-VPN服务端
      • 更新VPN隧道
      • 创建VPN
      • 创建VPN隧道
      • 创建SSL-VPN服务端
      • 更新VPN释放保护开关
      • 查询VPN详情
    • 网络探测相关接口
      • 删除网络探测
      • 创建网络探测
      • 查询网络探测列表
      • 更新网络探测
      • 查询网络探测详情
    • NAT网关相关接口
      • 更新SNAT规则
      • 删除SNAT规则
      • 更新NAT网关名称
      • 查询NAT网关详情
      • 释放NAT网关
      • NAT网关解绑EIP
      • NAT网关绑定DNAT EIP
      • 创建SNAT规则
      • 创建DNAT规则
      • 更新DNAT规则
      • 更新NAT释放保护开关
      • NAT网关解绑DNAT EIP
      • 查询NAT网关列表
      • 删除DNAT规则
      • NAT网关绑定EIP
      • 查询SNAT规则
      • NAT网关绑定SNAT EIP
      • NAT网关续费
      • 批量创建DNAT规则
      • 批量创建SNAT规则
      • NAT网关变配
      • 查询DNAT规则
      • NAT网关解绑SNAT EIP
      • 创建NAT网关
    • 高可用虚拟IP相关接口
      • 高可用虚拟IP解绑EIP
      • 删除高可用虚拟IP
      • 高可用虚拟IP解绑实例
      • 高可用虚拟IP绑定EIP
      • 更新高可用虚拟IP
      • 查询指定的高可用虚拟IP
      • 创建高可用虚拟IP
      • 高可用虚拟IP绑定实例
      • 查询高可用虚拟IP列表
    • 服务网卡相关接口
      • 查询可挂载的公共服务
      • 查询服务网卡详情
      • 更新服务网卡
      • 查询服务网卡列表
      • 服务网卡更新企业安全组
      • 删除服务网卡
      • 服务网卡更新普通安全组
      • 创建服务网卡
    • 专线网关相关接口
      • 解绑物理专线
      • 创建专线网关
      • 绑定物理专线
      • 查询专线网关列表
      • 创建专线网关健康检查
      • 释放专线网关
      • 更新专线网关
      • 查询专线网关详情
    • 安全组相关接口
      • 普通安全组
        • 更新普通安全组规则
        • 删除普通安全组规则
        • 删除普通安全组
        • 授权普通安全组规则
        • 撤销普通安全组规则
        • 创建普通安全组
        • 查询普通安全组列表
        • 查看安全组详情
      • 企业安全组
        • 更新企业安全组规则
        • 创建企业安全组
        • 删除企业安全组规则
        • 授权企业安全组规则
        • 删除企业安全组
        • 查询企业安全组列表
  • 常见问题
    • 服务网卡常见问题
    • 路由表常见问题
    • VPC常见问题
    • NAT常见问题
    • 常见问题总览
    • VPN常见问题
  • VPC CLI
    • 路由表相关操作
    • VPC相关操作
    • 版本变更记录
    • 通过CLI使用VPC服务
    • 安装BCE-CLI
    • 配置BCE-CLI
    • 子网相关操作
  • SDK
    • Python-SDK
      • 企业安全组
      • VPN
      • 子网
      • ACL
      • IPv6Gateway
      • 高可用虚拟IP
      • 网络探测
      • 路由
      • 专线网关
      • 弹性网卡
      • VPC
      • 对等连接
      • 版本说明
      • NAT
      • 安装SDK工具包
      • 服务网卡
      • 安全组
      • 概述
    • Java-SDK
      • 企业安全组
      • VPN
      • 子网
      • ACL
      • 参数模版
      • 高可用虚拟IP
      • 网络探测
      • 专线网关
      • 弹性网卡
      • vpc
      • 对等连接
      • 版本说明
      • IPv6网关
      • NAT
      • 普通安全组
      • 安装SDK工具包
      • 服务网卡
      • Route
      • 概述
    • Go-SDK
      • VPN
      • 子网
      • 异常处理
      • ACL
      • IPv6Gateway
      • 高可用虚拟IP
      • 网络探测
      • 路由
      • 专线网关
      • 弹性网卡
      • VPC
      • 对等连接
      • 初始化
      • NAT
      • 安装SDK工具包
      • 服务网卡
      • 概述
      • 安全组
        • 企业安全组
        • 普通安全组
    • PHP-SDK
      • ACL
      • vpc
      • 对等连接
      • 版本说明
      • Subnet
      • NAT
      • 安装SDK工具包
      • Route
      • 安全组
      • 概述
所有文档
menu
没有找到结果,请重新输入

私有网络 VPC

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 相关概念
    • 产品特性
    • 使用限制
    • 产品优势
    • 产品介绍
    • 应用场景
  • 典型实践
    • Windows使用HAVIP配置主备多机
    • VPC自定义路由表实现流量安全互访
    • 配置自定义服务并使用服务网卡为其他VPC提供服务
    • 对等连接典型实践
    • 使用Terraform管理弹性网卡典型实践
    • 二层网关与专线接入ET组合构建IDC与云上VPC大二层网络
    • 网络层安全说明
    • 安全组配置实践(进阶篇)
    • HAVIP结合Keepalived实现主备多机高可用
    • 使用Keepalived在VPC实现高可用架构
    • 使用Terraform管理IPsec VPN网关典型实践
    • 安全组配置实践(入门篇)
  • 操作指南
    • 多用户访问控制
    • 子网
    • 网络拓扑
    • 使用IPv6
    • 标签管理
    • 路由表
    • VPC
    • 网卡
      • 高可用虚拟IP
      • 弹性网卡
      • 服务网卡
    • 网络诊断
      • 路径分析
      • 网关限速
      • 网络探测
      • 端口验通
      • 流量镜像
      • 流日志
    • 监控与运维
      • NAT网关实例诊断
    • 访问控制
      • ACL
      • 参数模版
      • 安全组
    • 网络连接
      • 二层网关
      • 专线网关
      • 对等连接
      • IPv6网关
      • VPN网关
        • SSL VPN网关
        • GRE VPN网关
        • IPsec VPN网关
      • NAT网关
        • 私网NAT网关
        • 公网NAT网关
  • 服务等级协议SLA
    • 服务网卡服务等级协议SLA
    • VPN网关服务等级协议SLA
    • IPv6网关服务等级协议SLA
    • 对等连接服务等级协议SLA
    • NAT网关服务等级协议SLA
  • API参考
    • 通用说明
    • 接口概览
    • API概述
    • 附录
    • 公共头和错误返回
    • 服务域名
    • API功能发布记录
    • ACL相关接口
      • 添加ACL规则
      • 更新ACL规则
      • 删除ACL规则
      • 查询ACL规则
      • 查询ACL
    • IPv6网关相关接口
      • IPv6网关带宽升降级
      • 创建IPv6网关
      • 更新IPv6网关限速策略
      • 删除Ipv6网关
      • 更新IPv6网关释放保护开关
      • 查询IPv6网关限速策略列表
      • 创建IPv6网关限速策略
      • 添加IPv6只出不进策略
      • 删除IPv6只出不进策略
      • 查询IPv6只出不进策略列表
      • 查询IPv6网关
      • 删除IPv6网关限速策略
    • 弹性网卡相关接口
      • 删除弹性网卡
      • 批量删除弹性网卡内网IP
      • 弹性网卡更新企业安全组
      • 创建弹性网卡
      • 弹性网卡卸载云产品实例
      • 删除弹性网卡辅助IP
      • 弹性网卡绑定EIP
      • 查询弹性网卡列表
      • 增加弹性网卡辅助IP
      • 弹性网卡更新普通安全组
      • 批量增加弹性网卡内网IP
      • 查询弹性网卡状态
      • 更新弹性网卡
      • 弹性网卡挂载云产品实例
      • 弹性网卡解绑EIP
      • 查询指定的弹性网卡
    • 参数模板相关接口
      • 创建IP地址族
      • 更新IP地址组
      • 查询指定的IP地址组
      • 更新IP地址族
      • 创建IP地址组
      • 查询IP地址族列表
      • 查询指定的IP地址族
      • IP地址组删除IP地址
      • IP地址组添加IP地址
      • 删除IP地址族
      • IP地址族移除IP地址组
      • 查询IP地址组列表
      • 删除IP地址组
      • IP地址族添加IP地址组
    • 子网相关接口
      • 更新子网
      • 创建预留网段
      • 查询预留网段列表
      • 删除预留网段
      • 查询指定子网
      • 创建子网
      • 查询子网列表
      • 删除子网
    • VPC相关接口
      • 关闭VPC中继
      • 删除VPC
      • 查询指定VPC
      • 创建VPC
      • 查询VPC列表
      • 查询VPC内产品占用IP
      • 开启VPC中继
      • 查询VPC内网IP
      • 更新VPC
    • 网关限速规则相关接口
      • 查看网关限速规则
      • 修改网关限速规则
      • 创建网关限速规则
      • 删除网关限速规则
    • 对等连接相关接口
      • 释放对等连接
      • 关闭对等连接同步DNS
      • 处理对等连接申请
      • 更新对等连接释放保护开关
      • 对等连接续费
      • 查看对等连接详情
      • 创建对等连接
      • 查询对等连接列表
      • 开启对等连接同步DNS
      • 对等连接带宽升降级
      • 更新对等连接本端接口名称和备注
    • 路由表相关接口
      • 查询路由规则
      • 删除路由规则
      • 主备切换
      • 创建路由规则
      • 更新路由规则
      • 查询路由表
    • VPN相关接口
      • VPN网关续费
      • 解绑EIP
      • 更新SSL-VPN用户
      • 删除VPN隧道
      • 查询VPN隧道
      • 删除SSL-VPN用户
      • 绑定EIP
      • 批量创建SSL-VPN用户
      • 更新VPN
      • 查询SSL-VPN用户
      • 删除SSL-VPN服务端
      • 释放VPN
      • 查询SSL-VPN服务端
      • 查询VPN列表
      • 更新SSL-VPN服务端
      • 更新VPN隧道
      • 创建VPN
      • 创建VPN隧道
      • 创建SSL-VPN服务端
      • 更新VPN释放保护开关
      • 查询VPN详情
    • 网络探测相关接口
      • 删除网络探测
      • 创建网络探测
      • 查询网络探测列表
      • 更新网络探测
      • 查询网络探测详情
    • NAT网关相关接口
      • 更新SNAT规则
      • 删除SNAT规则
      • 更新NAT网关名称
      • 查询NAT网关详情
      • 释放NAT网关
      • NAT网关解绑EIP
      • NAT网关绑定DNAT EIP
      • 创建SNAT规则
      • 创建DNAT规则
      • 更新DNAT规则
      • 更新NAT释放保护开关
      • NAT网关解绑DNAT EIP
      • 查询NAT网关列表
      • 删除DNAT规则
      • NAT网关绑定EIP
      • 查询SNAT规则
      • NAT网关绑定SNAT EIP
      • NAT网关续费
      • 批量创建DNAT规则
      • 批量创建SNAT规则
      • NAT网关变配
      • 查询DNAT规则
      • NAT网关解绑SNAT EIP
      • 创建NAT网关
    • 高可用虚拟IP相关接口
      • 高可用虚拟IP解绑EIP
      • 删除高可用虚拟IP
      • 高可用虚拟IP解绑实例
      • 高可用虚拟IP绑定EIP
      • 更新高可用虚拟IP
      • 查询指定的高可用虚拟IP
      • 创建高可用虚拟IP
      • 高可用虚拟IP绑定实例
      • 查询高可用虚拟IP列表
    • 服务网卡相关接口
      • 查询可挂载的公共服务
      • 查询服务网卡详情
      • 更新服务网卡
      • 查询服务网卡列表
      • 服务网卡更新企业安全组
      • 删除服务网卡
      • 服务网卡更新普通安全组
      • 创建服务网卡
    • 专线网关相关接口
      • 解绑物理专线
      • 创建专线网关
      • 绑定物理专线
      • 查询专线网关列表
      • 创建专线网关健康检查
      • 释放专线网关
      • 更新专线网关
      • 查询专线网关详情
    • 安全组相关接口
      • 普通安全组
        • 更新普通安全组规则
        • 删除普通安全组规则
        • 删除普通安全组
        • 授权普通安全组规则
        • 撤销普通安全组规则
        • 创建普通安全组
        • 查询普通安全组列表
        • 查看安全组详情
      • 企业安全组
        • 更新企业安全组规则
        • 创建企业安全组
        • 删除企业安全组规则
        • 授权企业安全组规则
        • 删除企业安全组
        • 查询企业安全组列表
  • 常见问题
    • 服务网卡常见问题
    • 路由表常见问题
    • VPC常见问题
    • NAT常见问题
    • 常见问题总览
    • VPN常见问题
  • VPC CLI
    • 路由表相关操作
    • VPC相关操作
    • 版本变更记录
    • 通过CLI使用VPC服务
    • 安装BCE-CLI
    • 配置BCE-CLI
    • 子网相关操作
  • SDK
    • Python-SDK
      • 企业安全组
      • VPN
      • 子网
      • ACL
      • IPv6Gateway
      • 高可用虚拟IP
      • 网络探测
      • 路由
      • 专线网关
      • 弹性网卡
      • VPC
      • 对等连接
      • 版本说明
      • NAT
      • 安装SDK工具包
      • 服务网卡
      • 安全组
      • 概述
    • Java-SDK
      • 企业安全组
      • VPN
      • 子网
      • ACL
      • 参数模版
      • 高可用虚拟IP
      • 网络探测
      • 专线网关
      • 弹性网卡
      • vpc
      • 对等连接
      • 版本说明
      • IPv6网关
      • NAT
      • 普通安全组
      • 安装SDK工具包
      • 服务网卡
      • Route
      • 概述
    • Go-SDK
      • VPN
      • 子网
      • 异常处理
      • ACL
      • IPv6Gateway
      • 高可用虚拟IP
      • 网络探测
      • 路由
      • 专线网关
      • 弹性网卡
      • VPC
      • 对等连接
      • 初始化
      • NAT
      • 安装SDK工具包
      • 服务网卡
      • 概述
      • 安全组
        • 企业安全组
        • 普通安全组
    • PHP-SDK
      • ACL
      • vpc
      • 对等连接
      • 版本说明
      • Subnet
      • NAT
      • 安装SDK工具包
      • Route
      • 安全组
      • 概述
  • 文档中心
  • arrow
  • 私有网络VPC
  • arrow
  • SDK
  • arrow
  • Go-SDK
  • arrow
  • VPN
本页目录
  • 概述
  • 初始化
  • 确认Endpoint
  • 获取密钥
  • 新建VPN Client
  • 使用AK/SK新建VPN Client
  • 使用STS创建VPN Client
  • 配置HTTPS协议访问VPN
  • 配置VPN Client
  • 使用代理
  • 设置网络参数
  • 配置生成签名字符串选项
  • VPN管理
  • 创建VPN
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 查询VPN 列表
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 查询VPN详情
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 更新VPN网关
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 释放VPN
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 绑定EIP
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 解绑EIP
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • VPN网关续费
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 创建VPN隧道
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 查询VPN隧道
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 更新VPN隧道
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 删除VPN隧道
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 创建SSL-VPN服务端
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 查询SSL-VPN服务端
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 更新SSL-VPN服务端
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 删除SSL-VPN服务端
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 批量创建SSL-VPN用户
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 更新SSL-VPN用户
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 删除SSL-VPN用户
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 查询SSL-VPN用户
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 更新VPN释放保护开关
  • 函数声明
  • 参数含义
  • 返回值
  • 示例代码
  • 错误处理
  • 客户端异常
  • 服务端异常
  • SDK日志
  • 默认日志
  • 项目使用

VPN

更新时间:2025-08-22

VPN服务

概述

本文档主要介绍VPN GO SDK的使用。在使用本文档前,您需要先了解VPN的一些基本知识,并已开通了VPN服务。若您还不了解VPN,可以参考产品描述和操作指南。

初始化

确认Endpoint

在确认您使用SDK时配置的Endpoint时,可先阅读开发人员指南中关于VPN服务域名的部分,理解Endpoint相关的概念。百度云目前开放了多区域支持,请参考区域选择说明。

目前支持“华北-北京”、“华南-广州”、“华东-苏州”、“香港”、“金融华中-武汉”和“华北-保定”六个区域。对应信息为:

访问区域 对应Endpoint 协议
BJ bcc.bj.baidubce.com HTTP and HTTPS
GZ bcc.gz.baidubce.com HTTP and HTTPS
SU bcc.su.baidubce.com HTTP and HTTPS
HKG bcc.hkg.baidubce.com HTTP and HTTPS
FWH bcc.fwh.baidubce.com HTTP and HTTPS
BD bcc.bd.baidubce.com HTTP and HTTPS

获取密钥

要使用百度云VPN,您需要拥有一个有效的AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问VPN做签名验证。

可以通过如下步骤获得并了解您的AK/SK信息:

注册百度云账号

创建AK/SK

新建VPN Client

VPN Client是VPN服务的客户端,为开发者与VPN服务进行交互提供了一系列的方法。

使用AK/SK新建VPN Client

通过AK/SK方式访问VPN,用户可以参考如下代码新建一个VPN Client:

Go
1import (
2	"github.com/baidubce/bce-sdk-go/services/vpn"
3)
4
5func main() {
6	// 用户的Access Key ID和Secret Access Key
7	ACCESS_KEY_ID, SECRET_ACCESS_KEY := <your-access-key-id>, <your-secret-access-key>
8
9	// 用户指定的Endpoint
10	ENDPOINT := <domain-name>
11
12	// 初始化一个VPNClient
13	vpnClient, err := vpn.NewClient(AK, SK, ENDPOINT)
14}

在上面代码中,ACCESS_KEY_ID对应控制台中的“Access Key ID”,SECRET_ACCESS_KEY对应控制台中的“Access Key Secret”,获取方式请参考《操作指南 如何获取AKSK》。第三个参数ENDPOINT支持用户自己指定域名,如果设置为空字符串,会使用默认域名作为VPC的服务地址。

注意:ENDPOINT参数需要用指定区域的域名来进行定义,如服务所在区域为北京,则为bcc.bj.baidubce.com。

使用STS创建VPN Client

申请STS token

VPN可以通过STS机制实现第三方的临时授权访问。STS(Security Token Service)是百度云提供的临时授权服务。通过STS,您可以为第三方用户颁发一个自定义时效和权限的访问凭证。第三方用户可以使用该访问凭证直接调用百度云的API或SDK访问百度云资源。

通过STS方式访问VPN,用户需要先通过STS的client申请一个认证字符串。

用STS token新建VPN Client

申请好STS后,可将STS Token配置到VPN Client中,从而实现通过STS Token创建VPN Client。

代码示例

GO SDK实现了STS服务的接口,用户可以参考如下完整代码,实现申请STS Token和创建VPN Client对象:

Go
1import (
2	"fmt"
3
4	"github.com/baidubce/bce-sdk-go/auth"         //导入认证模块
5	"github.com/baidubce/bce-sdk-go/services/vpn" //导入VPN服务模块
6	"github.com/baidubce/bce-sdk-go/services/sts" //导入STS服务模块
7)
8
9func main() {
10	// 创建STS服务的Client对象,Endpoint使用默认值
11	AK, SK := <your-access-key-id>, <your-secret-access-key>
12	stsClient, err := sts.NewClient(AK, SK)
13	if err != nil {
14		fmt.Println("create sts client object :", err)
15		return
16	}
17
18	// 获取临时认证token,有效期为60秒,ACL为空
19	stsObj, err := stsClient.GetSessionToken(60, "")
20	if err != nil {
21		fmt.Println("get session token failed:", err)
22		return
23    }
24	fmt.Println("GetSessionToken result:")
25	fmt.Println("  accessKeyId:", stsObj.AccessKeyId)
26	fmt.Println("  secretAccessKey:", stsObj.SecretAccessKey)
27	fmt.Println("  sessionToken:", stsObj.SessionToken)
28	fmt.Println("  createTime:", stsObj.CreateTime)
29	fmt.Println("  expiration:", stsObj.Expiration)
30	fmt.Println("  userId:", stsObj.UserId)
31
32	// 使用申请的临时STS创建VPN服务的Client对象,Endpoint使用默认值
33	vpnClient, err := vpn.NewClient(stsObj.AccessKeyId, stsObj.SecretAccessKey, "bcc.bj.baidubce.com")
34	if err != nil {
35		fmt.Println("create vpn client failed:", err)
36		return
37	}
38	stsCredential, err := auth.NewSessionBceCredentials(
39		stsObj.AccessKeyId,
40		stsObj.SecretAccessKey,
41		stsObj.SessionToken)
42	if err != nil {
43		fmt.Println("create sts credential object failed:", err)
44		return
45	}
46	vpnClient.Config.Credentials = stsCredential
47}

注意: 目前使用STS配置VPN Client时,无论对应VPN服务的Endpoint在哪里,STS的Endpoint都需配置为http://sts.bj.baidubce.com。上述代码中创建STS对象时使用此默认值。

配置HTTPS协议访问VPN

VPN支持HTTPS传输协议,您可以通过在创建VPN Client对象时指定的Endpoint中指明HTTPS的方式,在VPN GO SDK中使用HTTPS访问VPN服务:

Go
1// import "github.com/baidubce/bce-sdk-go/services/vpn"
2
3ENDPOINT := "https://bcc.bj.baidubce.com" //指明使用HTTPS协议
4AK, SK := <your-access-key-id>, <your-secret-access-key>
5vpnClient, _ := vpn.NewClient(AK, SK, ENDPOINT)

配置VPN Client

如果用户需要配置VPN Client的一些细节的参数,可以在创建VPN Client对象之后,使用该对象的导出字段Config进行自定义配置,可以为客户端配置代理,最大连接数等参数。

使用代理

下面一段代码可以让客户端使用代理访问VPN服务:

Go
1// import "github.com/baidubce/bce-sdk-go/services/vpn"
2
3//创建VPN Client对象
4AK, SK := <your-access-key-id>, <your-secret-access-key>
5ENDPOINT := "bcc.bj.baidubce.com"
6client, _ := vpn.NewClient(AK, SK, ENDPOINT)
7
8//代理使用本地的8080端口
9client.Config.ProxyUrl = "127.0.0.1:8080"

设置网络参数

用户可以通过如下的示例代码进行网络参数的设置:

Go
1// import "github.com/baidubce/bce-sdk-go/services/vpn"
2
3AK, SK := <your-access-key-id>, <your-secret-access-key>
4ENDPOINT := "bcc.bj.baidubce.com"
5client, _ := bcc.NewClient(AK, SK, ENDPOINT)
6
7// 配置不进行重试,默认为Back Off重试
8client.Config.Retry = bce.NewNoRetryPolicy()
9
10// 配置连接超时时间为30秒
11client.Config.ConnectionTimeoutInMillis = 30 * 1000

配置生成签名字符串选项

Go
1// import "github.com/baidubce/bce-sdk-go/services/vpn"
2
3AK, SK := <your-access-key-id>, <your-secret-access-key>
4ENDPOINT := "bcc.bj.baidubce.com"
5client, _ := bcc.NewClient(AK, SK, ENDPOINT)
6
7// 配置签名使用的HTTP请求头为`Host`
8headersToSign := map[string]struct{}{"Host": struct{}{}}
9client.Config.SignOption.HeadersToSign = HeadersToSign
10
11// 配置签名的有效期为30秒
12client.Config.SignOption.ExpireSeconds = 30

参数说明

用户使用GO SDK访问VPN时,创建的VPN Client对象的Config字段支持的所有参数如下表所示:

配置项名称 类型 含义
Endpoint string 请求服务的域名
ProxyUrl string 客户端请求的代理地址
Region string 请求资源的区域
UserAgent string 用户名称,HTTP请求的User-Agent头
Credentials *auth.BceCredentials 请求的鉴权对象,分为普通AK/SK与STS两种
SignOption *auth.SignOptions 认证字符串签名选项
Retry RetryPolicy 连接重试策略
ConnectionTimeoutInMillis int 连接超时时间,单位毫秒,默认20分钟

说明:

  1. Credentials字段使用auth.NewBceCredentials与auth.NewSessionBceCredentials函数创建,默认使用前者,后者为使用STS鉴权时使用,详见“使用STS创建VPN Client”小节。
  2. SignOption字段为生成签名字符串时的选项,详见下表说明:
名称 类型 含义
HeadersToSign map[string]struct{} 生成签名字符串时使用的HTTP头
Timestamp int64 生成的签名字符串中使用的时间戳,默认使用请求发送时的值
ExpireSeconds int 签名字符串的有效期
Plain Text
1 其中,HeadersToSign默认为`Host`,`Content-Type`,`Content-Length`,`Content-MD5`;TimeStamp一般为零值,表示使用调用生成认证字符串时的时间戳,用户一般不应该明确指定该字段的值;ExpireSeconds默认为1800秒即30分钟。
  1. Retry字段指定重试策略,目前支持两种:NoRetryPolicy和BackOffRetryPolicy。默认使用后者,该重试策略是指定最大重试次数、最长重试时间和重试基数,按照重试基数乘以2的指数级增长的方式进行重试,直到达到最大重试测试或者最长重试时间为止。

VPN管理

创建VPN

函数声明

Go
1func (c *Client) CreateVpnGateway(args *CreateVpnGatewayArgs) (*CreateVpnGatewayResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/tk2y913ko

返回值

操作成功:

JSON
1 {
2    "vpnId": "vpn-ku4cxya6nisq"
3 } 

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_create_vpn_gateway.go

查询VPN 列表

函数声明

Go
1func (c *Client) ListVpnGateway(args *ListVpnGatewayArgs) (*ListVpnGatewayResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/zk2ydcivt

返回值

操作成功:

JSON
1{
2    "nextMarker": "vpn-xktdeMSf",
3    "marker": "vpn-IyWRtII7",
4    "maxKeys": 1,
5    "isTruncated": true,
6    "vpns": [
7        {
8            "status": "active",
9            "eip": "10.12.34.32",
10            "vpnId": "vpn-IyWRtII7",
11            "vpcId": "83edd0d2-8a68-4ce5-a396-9d2917d58a57",
12            "description": "",
13            "expiredTime": null,
14            "paymentTiming": "Postpaid",
15            "vpnConnNum": 0,
16            "bandwidthInMbps": 10,
17            "vpnConns": [],
18            "vpnName": "VPN_aoko_2",
19            "createTime": "2021-04-25 17:22:34"
20        }
21    ]
22}  

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_list_vpn_gateway.go

查询VPN详情

函数声明

Go
1func (c *Client) GetVpnGatewayDetail(vpnId string) (*VPN, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Xk2ydminh

返回值

操作成功:

JSON
1{
2    "status": "active",
3    "eip": "",
4    "vpnId": "vpn-shkgan7et1vx",
5    "vpcId": "83edd0d2-8a68-4ce5-a396-9d2917d58a57",
6    "description": "",
7    "expiredTime": null,
8    "paymentTiming": "Postpaid",
9    "vpnConnNum": 0,
10    "bandwidthInMbps": 0,
11    "vpnConns": [],
12    "vpnName": "VPN_aoko_2",
13    "createTime": "2021-04-25 17:22:34",
14    "deleteProtect": true,
15    "tags": [
16        {
17          "tagKey": "hikwnf",
18          "tagValue": "nwklwmflk"
19        },
20        {
21          "tagKey": "whfooef",
22          "tagValue": "haiwnwejf"
23        }
24    ]
25}             

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_get_vpn_gateway_detail.go

更新VPN网关

函数声明

Go
1func (c *Client) UpdateVpnGateway(vpnId string, args *UpdateVpnGatewayArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/dk2ybo3p4

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_update_vpn_gateway.go

释放VPN

注意:

  • 释放指定VPN,被释放的VPN无法找回
  • 预付费购买的VPN如需提前释放,请通过工单进行

函数声明

Go
1func (c *Client) DeleteVpnGateway(vpcId, clientToken string) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/bk2ybhrpv

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_delete_vpn_gateway.go

绑定EIP

注意:

  • 绑定EIP是一个异步过程,可以通过查询VPN的状态判断绑定是否成功

函数声明

Go
1func (c *Client) BindEip(vpnId string, args *BindEipArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/uk2yh2wy2

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_bind_eip.go

解绑EIP

注意: 解绑EIP是一个异步过程,可以通过查询VPN的状态判断绑定是否成功

函数声明

Go
1func (c *Client) UnBindEip(vpnId, clientToken string) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/lk2yh59e5

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_unbind_eip.go

VPN网关续费

注意:

  • 仅预付费资源可以进行续费操作。

函数声明

Go
1func (c *Client) RenewVpnGateway(vpnId string, args *RenewVpnGatewayArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/rk2yh7kqp

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_renew_vpn_gateway.go

创建VPN隧道

函数声明

Go
1func (c *Client) CreateVpnConn(args *CreateVpnConnArgs) (*CreateVpnConnResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/sk2yngg0t

返回值

操作成功:

JSON
1{
2    "secretKey": "ddd22@www",
3    "localSubnets": ["192.168.0.0/20"],
4    "remoteIp": "10.107.245.188",
5    "remoteSubnets": ["192.168.100.0/24"],
6    "description": "111",
7    "vpnConnName": "vpncon",
8    "ikeConfig": 
9    {
10        "ikeVersion": "v1", 
11        "ikeMode": "main", 
12        "ikeEncAlg": "aes", 
13        "ikeAuthAlg": "sha1", 
14        "ikePfs": "group2",
15        "ikeLifeTime":200
16    },
17    "ipsecConfig": 
18    {
19        "ipsecEncAlg": "aes", 
20        "ipsecAuthAlg": "sha1", 
21        "ipsecPfs": "group2", 
22        "ipsecLifetime": 28800
23    }        
24}

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_create_vpn_conn.go

查询VPN隧道

函数声明

Go
1func (c *Client) ListVpnConn(vpnId string) (*ListVpnConnResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Bk2ynne1n

返回值

操作成功:

JSON
1{
2    "vpnConns": [
3        {
4            "vpnId": "vpn-a0314a79a558",
5            "vpnConnId": "vpnconn-771763a0da2f",
6            "localIp": null,
7            "secretKey": "ddd22@www",
8            "localSubnets": ["192.168.100.0/24"],
9            "remoteIp": "10.107.245.188",
10            "remoteSubnets": ["192.168.100.0/24"],
11            "description": "111",
12            "status": "active",
13            "createdTime": "2024-12-26T18:58:53+08:00",
14            "healthStatus": "reachable",
15            "vpnConnName": "vpncon",
16            "ikeConfig": 
17            {
18                "ikeVersion": "v1", 
19                "ikeMode": "main", 
20                "ikeEncAlg": "aes", 
21                "ikeAuthAlg": "sha1", 
22                "ikePfs": "group2",
23                "ikeLifeTime": "28800s"
24            },
25            "ipsecConfig": 
26            {
27                "ipsecEncAlg": "aes", 
28                "ipsecAuthAlg": "sha1", 
29                "ipsecPfs": "group2", 
30                "ipsecLifetime": "28800s"
31            }       
32        }
33    ]
34} 

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_list_vpn_conn.go

更新VPN隧道

函数声明

Go
1func (c *Client) UpdateVpnConn(args *UpdateVpnConnArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/rk2ynjopp

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_update_vpn_conn.go

删除VPN隧道

函数声明

Go
1func (c *Client) DeleteVpnConn(vpnConnId, clientToken string) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/dk2ynpyn7

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_delete_vpn_conn.go

创建SSL-VPN服务端

函数声明

Go
1func (c *Client) CreateSslVpnServer(args *CreateSslVpnServerArgs) (*CreateSslVpnServerResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Jl385fe3r

返回值

操作成功:

JSON
1 {
2    "sslVpnServerId": "sslvpn-5b2hq4nm40tt"
3 } 

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_create_ssl_vpn_server.go

查询SSL-VPN服务端

函数声明

Go
1func (c *Client) GetSslVpnServer(vpnId, clientToken string) (*SslVpnServer, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/vl3bat97z

返回值

操作成功:

JSON
1{
2    "vpnId": "vpn-shyt1vzgqc3z",
3    "sslVpnServerId": "sslvpn-5b2hq4nm40tt",
4    "sslVpnServerName": "hzb_1_1",
5    "interfaceType": "tap",
6    "status": "active",
7    "localSubnets": ["192.168.0.0/24"],
8    "remoteSubnet": "172.168.0.0/16",
9    "maxConnection": 10,
10    "clientDns":""
11} 

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_get_ssl_vpn_server.go

更新SSL-VPN服务端

函数声明

Go
1func (c *Client) UpdateSslVpnServer(args *UpdateSslVpnServerArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Gl39u2j5r

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_update_ssl_vpn_server.go

删除SSL-VPN服务端

函数声明

Go
1func (c *Client) DeleteSslVpnServer(vpnId, sslVpnServerId, clientToken string) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/ll39xiyyp

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_delete_ssl_vpn_server.go

批量创建SSL-VPN用户

函数声明

Go
1func (c *Client) BatchCreateSslVpnUser(args *BatchCreateSslVpnUserArgs) (*BatchCreateSslVpnUserResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Kl3a3l8ga

返回值

操作成功:

JSON
1{
2    "sslVpnUserIds": ["sslvpn-5b2hq4nm40tt"]
3}

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_batch_create_ssl_vpn_user.go

更新SSL-VPN用户

函数声明

Go
1func (c *Client) UpdateSslVpnUser(args *UpdateSslVpnUserArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/el3b86jjt

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_update_ssl_vpn_user.go

删除SSL-VPN用户

函数声明

Go
1func (c *Client) DeleteSslVpnUser(vpnId, userId, clientToken string) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Wl3b99ax6

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_delete_ssl_vpn_user.go

查询SSL-VPN用户

函数声明

Go
1func (c *Client) ListSslVpnUser(args *ListSslVpnUserArgs) (*ListSslVpnUserResult, error)

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Sl3b9pzmg

返回值

操作成功:

JSON
1{
2    "marker": "vpn-ssl-user-xynkefqf3n5x",
3    "maxKeys": 1,
4    "isTruncated": false,
5    "sslVpnUsers": [
6        {
7            "userId": "vpn-ssl-user-xynkefqf3n5x",
8            "userName": "user",
9            "description": "desc"
10        }
11    ]
12}  

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_list_ssl_vpn_user.go

更新VPN释放保护开关

函数声明

Go
1func (c *Client) UpdateVpnDeleteProtect(args *UpdateVpnDeleteProtectArgs) error

参数含义

请参考OpenApi文档: https://cloud.baidu.com/doc/VPC/s/Dlzjsmzon

返回值

操作成功:

Go
1nil

操作失败: 返回错误,详见错误处理章节。

示例代码

具体代码示例参考:example_update_vpn_delete_protect.go

错误处理

GO语言以error类型标识错误,VPN支持两种错误见下表:

错误类型 说明
BceClientError 用户操作产生的错误
BceServiceError VPN服务返回的错误

用户使用SDK调用VPN相关接口,除了返回所需的结果之外还会返回错误,用户可以获取相关错误进行处理。实例如下:

Plain Text
1// vpnClient 为已创建的VPN Client对象
2args := &vpn.ListVpnGatewayArgs{}
3result, err := client.ListVpnGateway(args)
4if err != nil {
5	switch realErr := err.(type) {
6	case *bce.BceClientError:
7		fmt.Println("client occurs error:", realErr.Error())
8	case *bce.BceServiceError:
9		fmt.Println("service occurs error:", realErr.Error())
10	default:
11		fmt.Println("unknown error:", err)
12	}
13} 

客户端异常

客户端异常表示客户端尝试向VPN发送请求以及数据传输时遇到的异常。例如,当发送请求时网络连接不可用时,则会返回BceClientError。

服务端异常

当VPN服务端出现异常时,VPN服务端会返回给用户相应的错误信息,以便定位问题。常见服务端异常可参见VPN错误码

SDK日志

VPN GO SDK支持六个级别、三种输出(标准输出、标准错误、文件)、基本格式设置的日志模块,导入路径为github.com/baidubce/bce-sdk-go/util/log。输出为文件时支持设置五种日志滚动方式(不滚动、按天、按小时、按分钟、按大小),此时还需设置输出日志文件的目录。

默认日志

VPN GO SDK自身使用包级别的全局日志对象,该对象默认情况下不记录日志,如果需要输出SDK相关日志需要用户自定指定输出方式和级别,详见如下示例:

Plain Text
1// import "github.com/baidubce/bce-sdk-go/util/log"
2
3// 指定输出到标准错误,输出INFO及以上级别
4log.SetLogHandler(log.STDERR)
5log.SetLogLevel(log.INFO)
6
7// 指定输出到标准错误和文件,DEBUG及以上级别,以1GB文件大小进行滚动
8log.SetLogHandler(log.STDERR | log.FILE)
9log.SetLogDir("/tmp/gosdk-log")
10log.SetRotateType(log.ROTATE_SIZE)
11log.SetRotateSize(1 << 30)
12
13// 输出到标准输出,仅输出级别和日志消息
14log.SetLogHandler(log.STDOUT)
15log.SetLogFormat([]string{log.FMT_LEVEL, log.FMT_MSG})

说明:

  1. 日志默认输出级别为DEBUG
  2. 如果设置为输出到文件,默认日志输出目录为/tmp,默认按小时滚动
  3. 如果设置为输出到文件且按大小滚动,默认滚动大小为1GB
  4. 默认的日志输出格式为:FMT_LEVEL, FMT_LTIME, FMT_LOCATION, FMT_MSG

项目使用

该日志模块无任何外部依赖,用户使用GO SDK开发项目,可以直接引用该日志模块自行在项目中使用,用户可以继续使用GO SDK使用的包级别的日志对象,也可创建新的日志对象,详见如下示例:

Plain Text
1// 直接使用包级别全局日志对象(会和GO SDK自身日志一并输出)
2log.SetLogHandler(log.STDERR)
3log.Debugf("%s", "logging message using the log package in the VPN go sdk")
4
5// 创建新的日志对象(依据自定义设置输出日志,与GO SDK日志输出分离)
6myLogger := log.NewLogger()
7myLogger.SetLogHandler(log.FILE)
8myLogger.SetLogDir("/home/log")
9myLogger.SetRotateType(log.ROTATE_SIZE)
10myLogger.Info("this is my own logger from the VPN go sdk")

上一篇
Java-SDK
下一篇
子网