产品概述
全路径安全加速是多网聚合加速(腾讯云聚通)基于边缘安全加速平台 EO(Tencent Cloud EdgeOne)面向实时互动、对战类游戏、金融交易、视频会议等对网络质量敏感的业务场景,推出的端到端加速与安全防护一体化解决方案。方案以客户端 SDK 为入口,依托腾讯云全球 3200+ 边缘节点和自建骨干网,对从用户终端到客户源站的全链路(移动接入段、骨干传输段、回源段)进行多通道择优加速与冗余容灾,并在边缘侧叠加 Anti-DDoS、源站隐藏、流量签名等安全能力,实现让弱网更稳、让攻击更难的双重价值。
方案以无侵入方式接入业务 APP,原有业务代码无需改造;可灵活搭配 EdgeOne 四层代理、客户私有化网关使用,适配公有云、混合云、多云等多种部署形态。
面向的典型业务痛点
1. 移动接入网络高度不稳定。
2. 全球骨干网拓扑复杂、运营商质量参差不齐。
3. 源站 IP 暴露与 DDoS 防护成本失控。
方案总体架构


方案在终端 SDK、骨干传输、回源接入三段同时构建多条冗余通道,对应将网络划分为 T1(接入段)、T2(骨干网段)、T3(回源段)三段,每一段均提供多路择优 + 冗余容灾能力。
分段 | 覆盖路径 | 核心技术手段 | 解决问题 |
T1 接入段 | 终端 ↔ 边缘接入节点 | Wi-Fi/蜂窝多发择优 +公网隧道穿透 | 弱网抖动、Wi-Fi/蜂窝切换、最后一公里丢包 |
T2 骨干网段 | 边缘接入节点 ↔ 源站地域边缘节点 | EdgeOne 四层加速 + 三方专线 + 公网线路智能调度 | 跨境跨运营商高延迟、互联点拥塞、单线路抖动 |
T3 回源段 | 源站地域边缘节点 ↔ 客户源站 | 加速网关就近回源(云内网/同机房) | 回源距离、跨云跨地域时延 |
说明:
在 T1+T2+T3 三段之上,方案叠加全路径容灾:任一段出现质量劣化时,毫秒级自动切换至备用通道,对应用透明,玩家与终端用户零感知。
核心能力
1. 全路径加速能力
接入段(T1):Wi-Fi/蜂窝双发+公网隧道穿透(例如俄罗斯)。
骨干网段(T2):EdgeOne 四层代理加速能力。
回源段(T3):加速网关就近回源。
全路径容灾:T1×T2×T3 多段冗余组合,最多可形成数十条端到端备选路径,单段故障不影响整体连通。
灵活启动策略:支持「全程加速」与「按需加速」两种模式,按需模式下 SDK 持续监测网络质量,弱网触发、网络恢复自动关闭,兼顾效果与流量成本。
2. 一体化安全防护能力
边缘 Anti-DDoS:依托 EdgeOne 边缘节点天然分布式架构,在距离攻击源最近的位置完成清洗,避免攻击流量挤占骨干网与源站带宽。
源站 IP 收拢:将海量动态扩缩的业务源站 IP 收拢为少量固定的网关 IP,统一配置高防策略,大幅降低防护规则配置复杂度与高防成本。
源站隐藏:全路径安全加速采用正向代理的方式,直接访问源站域名。建议本方案使用 fake 域名。否则攻击者可能通过反编译、hook 等方式获取战斗服域名,造成安全风险。全路径安全加速方案提供 fake 域名方案,使得客户端完全不暴露源站的域名。其核心是在客户端对 fake 域名访问,在安全加速网关处进行对真实 IP 地址回源。


注意:
源站 IP 加密:使用 ChaCha20 算法对真实源站 IP 进行端到端加密,客户端持有的为加密后密文,加速网关侧解密后回源,反编译亦无法获取真实地址。其核心是在客户端对真实的源站 IP 地址进行加密,在安全加速网关处进行 IP 地址解密回源。


接入流程
全路径安全加速方案整体属于腾讯云边缘安全加速平台 EO 下,搭配 EdgeOne 四层代理使用。因此需要客户前置 开通 EdgeOne 站点加速服务 和 四层代理。本文仅介绍全路径安全加速方案相关接入说明。
全路径安全加速网关配置
1. 使用腾讯云账号登录 EdgeOne 控制台,在控制台创建/选择站点。


2. 左侧【四层代理】一级选项卡下,选择【全路径安全加速】二级选项卡。进入加速网关列表页面,创建云上网关。


3. 在源站所在地域创建加速网关。填写名称、地域、接入端口。配置 SDK 到网关的线路。至少包括直连线路和 EdgeOne 四层代理线路。EdgeOne 四层代理的转发规则可以暂不配置。单击创建。




4. 创建加速网关成功。可见网关 ID 和接入 IP/端口。




5. 将接入 IP 提供至腾讯侧接口工程师,对接入点开启按 quicid 调度配置。(因 API 限制,目前需手动执行,后续将调整为自动修改)。
配置四层代理和网关的关系
1. 创建四层代理的转发规则,将转发规则的源站指向网关的 IP 地址和端口。


2. 配置加速网关的线路。EdgeOne 四层代理实例线路规则选定刚刚创建的规则 ID。


设置接入密钥
1. 单击接入密钥管理。可以点击刷新,由系统创建接入密钥,或者自定义密钥。




完成以上步骤,在客户端 SDK/Demo App 中配置站点 ID、网关 ID、接入密钥、即可在 SDK 侧启动加速。
Demo App
测试步骤如下:
1. 右上角选择语言,可选中文/英文。在基础功能中选择EdgeOne 全路径安全加速体验。


2. 再次点击右上角进入设置。


3. 进行加速设置。
环境选择
测试阶段,建议选择发布环境,方便研发团队定位问题、技术联调。
上线验证阶段,建议使用正式环境,您可以在控制台创建网关,验证现网服务效果。
加速参数
Application Key:填写您在控制台上创建的接入密钥。


Zone ID:填写您的 EdgeOne 站点 ID。


Gateway ID:填写您在控制台上创建的网关 ID。


加速模式:选择实时模式
加速应用:一般可以选择所有应用。即为对手机所有流量加速。亦可选择列表中感兴趣的指定应用进行加速。
日志等级:请选择 Info 等级。
多网卡:打开开关后,会使用您手机上的 Wi-Fi / 蜂窝网卡竞速。反之不会。
存储日志:如果勾选存储日志选项。则开启加速后。会存储加速日志在目录:
Android/data/com.android.tencentvpn/files/Documents。也可通过 andriod adb 工具获取 PING 日志,命令:
adb logcat -b all | grep PING > $(date +\\%m\\%d-\\%H:\\%M:\\%S).log

4. 以上配置完成后,单击确认,返回加速页面。
5. 点击开始加速,同意 VPN 权限。会出现 VPN 图标(不同手机厂商不同)。


6. 单击停止加速,VPN 图标消失即加速停止。
SDK 接入
生成按应用创建的设备 Sign 签名方法参考
按应用创建的设备 Sign 签名的生成需要两个参数:客户自定义业务控制设备唯一标识即 deviceName;上图中创建成功后返回的应用密钥。利用两个参数启动脚本,完成按应用创建的设备 Sign 签名生成。
Java 语言
package com.android.tencentvpn.util;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import java.security.Key;import java.util.Date;import javax.crypto.spec.SecretKeySpec;public class SignGenerate {private static final long EXPIRE_TIME = 72 * 60 * 60 * 1000; // 过期时间, 单位毫秒/*** @param deviceName 业务自己控制设备唯一标识* @param SecretKey 云api返回的 应用密钥* @return 多网sdk 需要传入的签名字符串 最终通过setSign 调用**/public static String generateSign(String deviceName, String SecretKey) {try {Date now = new Date();Date expireDate = new Date(now.getTime() + EXPIRE_TIME);Key key =new SecretKeySpec(SecretKey.getBytes(), SignatureAlgorithm.HS256.getJcaName());return Jwts.builder().claim("deviceName", deviceName).expiration(expireDate).signWith(key).compact();} catch (Exception e) {e.printStackTrace();}return "";}}
Objective-C 语言
//podfile中添加pod 'JWT',集成JWT库// .h文件:@interface SignGenerator : NSObject/*** @deviceName 业务自己控制设备唯一标识* @param SecretKey 云api返回的 应用密钥* @return 多网sdk 需要传入的签名字符串 最终通过setSign 调用*/+ (NSString *)generateSignWithDeviceName:(NSString *)deviceName secretKey:(NSString *)secretKey;@end// .m文件#import "SignGenerator.h"#import <JWT/JWT.h>@implementation SignGenerator+ (NSString *)generateSignWithDeviceName:(NSString *)deviceName secretKey:(NSString *)secretKey {// 1. 设置过期时间(72小时后)NSDate *currentDate = [NSDate date];NSDate *expireDate = [currentDate dateByAddingTimeInterval:72 * 60 * 60];// 2. 构建 Claims(负载)NSDictionary *claims = @{@"deviceName": deviceName,@"exp": @((long)[expireDate timeIntervalSince1970]) // Expiration};NSData *keyData = [secretKey dataUsingEncoding:NSUTF8StringEncoding];// 3. 使用 HS256 算法和密钥签名JWTBuilder *builder = [JWTBuilder encodePayload:claims].secretData(keyData).algorithmName(@"HS256"); //算法名NSString *jwt = builder.encode;// 4. 错误处理if (builder.jwtError) {NSLog(@"JWT 生成失败: %@", builder.jwtError);return @"";}return jwt;}
Go 语言
package mainimport ("fmt""github.com/dgrijalva/jwt-go/v4""time")func main() {sign, expireTime, err := GenerateSign("tencent-test")if err != nil {panic(err)}println(sign, expireTime)}// SignClaims JwtCustomClaimstype SignClaims struct {jwt.StandardClaimsDeviceName string `json:"deviceName"`}var (ExpireTime = 72 // 过期时间, 单位小时SecretKey = []byte("your secretkey") // APP密钥)// GenerateSign 生成签名func GenerateSign(deviceName string) (string, int64, error) {expireTime := time.Now().Add(time.Duration(ExpireTime) * time.Hour)claims := &SignClaims{StandardClaims: jwt.StandardClaims{NotBefore: jwt.Now(),ExpiresAt: jwt.At(expireTime),},DeviceName: deviceName,}println(fmt.Sprintf("%#v", claims))token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)sign, err := token.SignedString(SecretKey)if err != nil {return "", 0, err}return sign, expireTime.Unix(), nil}
设置应用签名鉴权
调用接口 setSign,传入创建应用时记录的 appId 即应用 ID 和 sign 即签名字符串,完成按应用创建的设备,设置应用签名鉴权。
API 接口说明
注意:
控制台功能和 API 文档是对应的。可以以控制台接入为锚点参考 API 文档,如果有对应不清的情况,可以打开浏览器的开发者模式,根据接口名找到应用接口。