tencent cloud

Tencent Cloud EdgeOne

ドキュメントTencent Cloud EdgeOne

全パスセキュリティ加速

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-15 16:51:01
AI翻訳

プロダクト概要

全路径安全な加速は、Multiple Network Acceleration(Tencent Cloud聚通)がEdgeOne(Tencent Cloud EdgeOne)を基盤として、リアルタイムインタラクション、対戦型ゲーム、金融取引、ビデオ会議などネットワーク品質に敏感なビジネスシーンに向けて提供する、エンドツーエンドの加速とセキュリティ保護を一体化したソリューションです。本ソリューションはクライアントSDKを入口とし、Tencent Cloudの世界3200以上のエッジノードと自社バックボーンネットワークを活用して、ユーザー端末からお客様のオリジンサーバーまでの全経路(モバイルアクセス区間、バックボーン伝送区間、オリジンアクセス区間)に対して、マルチチャネルによる最適経路選択加速と冗長化による災害対策を実施します。さらにエッジ側でAnti-DDoS、オリジンサーバー隠蔽、トラフィック署名などのセキュリティ機能を付加することで、弱いネットワークをより安定させ、攻撃をより困難にするという二重の価値を実現します。
本ソリューションは非侵襲的な方法で業務APPに導入され、既存の業務コードを変更する必要はありません。EdgeOneのL4プロキシやお客様のプライベートゲートウェイと柔軟に組み合わせて使用でき、パブリッククラウド、ハイブリッドクラウド、マルチクラウドなどのさまざまなデプロイ形態に対応します。

典型的なビジネス課題への対応

1. モバイルアクセスネットワークは非常に不安定です。
2. グローバルバックボーンネットワークのトポロジは複雑で、通信事業者の品質もまちまちです。
3. オリジンサーバーIPの露出とAnti-DDoSコストの制御不能。

ソリューション全体アーキテクチャ


本ソリューションは、端末SDK、バックボーン伝送、オリジンアクセスの3つの区間で同時に複数の冗長チャネルを構築します。これに対応して、ネットワークをT1(アクセス区間)、T2(バックボーンネットワーク区間)、T3(オリジンアクセス区間)の3つに分割し、各区間でマルチパス選択と冗長化による災害対策能力を提供します。
セグメント
カバレッジパス
コア技術手段
問題解決
T1 アクセスセグメント
端末 ↔ エッジアクセスノード
Wi-Fi/セルラー複数送信による最適選択+公衆網トンネル透過
弱いネットワークでのジッター、Wi-Fi/セルラー切り替え、ラストワンマイルのパケットロス
T2 バックボーンネットワークセグメント
エッジアクセスノード ↔ オリジンリージョンエッジノード
EdgeOne レイヤー4加速+第三者専用線+公衆網回線のインテリジェントスケジューリング
国境・通信事業者をまたぐ高遅延、相互接続点の輻輳、単一回線のジッター
T3 オリジン接続セグメント
オリジンリージョンエッジノード ↔ 顧客オリジンサーバー
アクセラレーションゲートウェイによる近接オリジンサーバーアクセス(クラウド内部ネットワーク/同一データセンター)
オリジンサーバーまでの距離、クラウド間・地域間のレイテンシー
説明:
T1+T2+T3の3つの区間の上に、本ソリューションは全経路の災害対策を重ねます。いずれかの区間で品質が劣化した場合、ミリ秒単位で自動的に予備チャネルへ切り替わり、アプリケーションに対して透過的であり、プレイヤーとエンドユーザーは無感知です。

コア機能

1. 全経路加速機能
アクセス区間(T1):Wi-Fi/セルラーデュアル送信+公衆網トンネル透過(例えばロシア)。
バックボーンネットワーク区間(T2):EdgeOneのL4プロキシ加速機能。
回源段(T3):加速ゲートウェイが最寄りのオリジンへアクセスします。
全経路災害対策:T1×T2×T3の多段冗長構成により、最大で数十のエンドツーエンドの代替経路を形成でき、単一区間の障害は全体の接続性に影響しません。
柔軟な起動戦略:「全程加速」と「按需加速」の2つのモードをサポートします。按需モードでは、SDKが継続的にネットワーク品質を監視し、弱いネットワークでトリガーされ、ネットワーク回復時に自動的にオフになり、効果とトラフィックコストのバランスを取ります。
2. 統合セキュリティ保護機能
エッジAnti-DDoS:EdgeOneエッジノードの天然の分散アーキテクチャを活用し、攻撃源に最も近い位置でクリーニングを完了することで、攻撃トラフィックがバックボーンネットワークとオリジンサーバーの帯域幅を圧迫することを回避します。
オリジンサーバーIPの集約:大量の動的スケーリングを行うビジネスオリジンサーバーIPを少数の固定ゲートウェイIPに集約し、高度防御ポリシーを統一的に構成することで、防御ルール構成の複雑さと高度防御コストを大幅に削減します。

オリジンサーバー秘匿

ドメインアクセスの場合
全路径安全な加速はフォワードプロキシ方式を採用し、オリジンサーバードメインに直接アクセスします。本ソリューションではfakeドメインの使用を推奨します。そうしない場合、攻撃者は逆コンパイルやhookなどの方法でゲームサーバードメインを取得し、セキュリティリスクを引き起こす可能性があります。全路径安全な加速ソリューションはfakeドメインソリューションを提供し、クライアントがオリジンサーバーのドメインを完全に公開しないようにします。その核心は、クライアントでfakeドメインにアクセスし、安全な加速ゲートウェイで実際のIPアドレスへのオリジンアクセスを行うことです。

注意:
本ソリューションは現在オフライン設定のみをサポートしています。必要な場合はお問い合わせください。製品化ソリューションは今後リリースされます。
1. オフラインでドメインマッピング関係を設定します(例:fake.com--->1.2.3.4)。
2. 客户控制器がアプリAPPに対戦サーバーのfakeドメインfake.comを配信します。
3. アプリAPPの起動が加速され、fakeドメインfake.comに接続を開始します。
4. 安全な加速ゲートウェイが実際のビジネスIPアドレス1.2.3.4にアクセスします。
IPアクセスの場合
全路径安全な加速はフォワードプロキシ方式を採用し、オリジンサーバーの実際のIPアドレスに直接アクセスします。クライアント側でオリジンサーバーの実際のIPアドレスを難読化することを推奨します。そうしない場合、攻撃者は逆コンパイルやhookなどの方法でゲームサーバーのIPアドレスを取得し、セキュリティリスクを引き起こす可能性があります。同時に、全路径安全な加速ソリューションはオリジンサーバーIP暗号化ソリューションを提供し、クライアントがオリジンサーバーの実際のIPアドレスを完全に公開しないようにします。その核心は、クライアントで実際のオリジンサーバーIPアドレスを暗号化し、安全な加速ゲートウェイでIPアドレスを復号してオリジンアクセスすることです。

1. 暗号化キーを取得します。暗号化キーはアクセスキーと同じです。詳細はアクセスキーの設定をご参照ください。
2. 客户控制器(管理面)がクライアントにIPアドレスを配信する際、キーを使用して暗号化します。
暗号化方式はChaCha20暗号化を使用します。サンプルコードは以下の通りです:

package main

import (
"crypto/sha256"
"fmt"
"net"

"golang.org/x/crypto/chacha20"
)

// EncryptIPv4 IPv4暗号化 (32bit→32bit)
func EncryptIPv4(ip net.IP, psk []byte) ([]byte, error) {
if ip.To4() == nil {
return nil, fmt.Errorf("invalid ipv4 address")
}

key := sha256.Sum256(psk)
encryptKey := key[:32]
nonce := make([]byte, 12)
cipher, err := chacha20.NewUnauthenticatedCipher(encryptKey, nonce)
if err != nil {
return nil, err
}

// インプレース暗号化(32bit正確な出力)
ciphertext := make([]byte, net.IPv4len)
cipher.XORKeyStream(ciphertext, ip.To4())
return ciphertext, nil
}

// EncryptIPv6 IPv6暗号化 (128bit→128bit)
func EncryptIPv6(ip net.IP, psk []byte) ([]byte, error) {
if ip.To16() == nil {
return nil, fmt.Errorf("invalid ipv6 address")
}

key := sha256.Sum256(psk)
encryptKey := key[:32]
nonce := make([]byte, 12)
cipher, err := chacha20.NewUnauthenticatedCipher(encryptKey, nonce)
if err != nil {
return nil, err
}

// 128bit正確な出力
ciphertext := make([]byte, net.IPv6len)
cipher.XORKeyStream(ciphertext, ip.To16())
return ciphertext, nil
}

// 復号関数(暗号化/復号に同じ関数を使用します)
var DecryptIPv4 = EncryptIPv4
var DecryptIPv6 = EncryptIPv6

func main() {
psk := []byte("test-datakey")

// IPv4テスト
ipv4 := net.ParseIP("192.168.1.1")
encV4, err := EncryptIPv4(ipv4, psk)
if err != nil {
fmt.Println("encrypt ipv4 error:", err)
return
}
decV4, err := DecryptIPv4(encV4, psk)
if err != nil {
fmt.Println("decrypt ipv4 error:", err)
return
}
fmt.Printf("IPv4:\\n 元IP: %v\\n 暗号文: %08x\\n 復号: %v\\n",
ipv4, encV4, net.IP(decV4))

// IPv6テスト
ipv6 := net.ParseIP("2001:db8::a1b2")
encV6, err := EncryptIPv6(ipv6, psk)
if err != nil {
fmt.Println("encrypt ipv6 error:", err)
return
}
decV6, err := DecryptIPv6(encV6, psk)
if err != nil {
fmt.Println("decrypt ipv6 error:", err)
return
}
fmt.Printf("\\nIPv6:\\n 元IP: %v\\n 暗号文: %032x\\n 復号: %v\\n",
ipv6, encV6, net.IP(decV6))
}
3. モバイルアプリは加速プロキシを有効にし、IP暗号化機能(インターフェース)を有効にして、暗号化されたIPアドレスにアクセスします。アクセラレーションゲートウェイは暗号化されたIPアドレスを復号し、正しくオリジンに戻します。

導入フロー

全路径安全な加速ソリューションは全体としてTencent Cloud EdgeOneの配下にあり、EdgeOne L4プロキシと併用します。そのため、お客様は事前にEdgeOneサイト加速サービスとL4プロキシを有効化する必要があります。本記事では全路径安全な加速ソリューションに関連する接続手順のみを説明します。

全パス安全な加速ゲートウェイ設定

1. Tencent Cloudアカウントを使用してEdgeOneコンソールにログインし、コンソールでサイトを作成/選択します。

2. 左側のL4プロキシで、全路径安全な加速を選択します。加速ゲートウェイリストページに入り、加速ゲートウェイを新規作成をクリックします。

3. オリジンサーバー所在地リージョンに加速ゲートウェイを作成します。名前、リージョン、接続ポートを入力します。SDKからゲートウェイへの回線を構成します。少なくとも直連回線とEdgeOne L4プロキシ回線を含めます。EdgeOne L4プロキシの転送ルールは一時的に構成しなくてもかまいません。作成をクリックします。


4. 加速ゲートウェイの作成に成功しました。ゲートウェイIDと接続IP/ポートを確認できます。


5. 接続IPをTencent側のインターフェースエンジニアに提供し、接続ポイントでQUIC IDによるスケジューリング設定を有効にします。(APIの制限により、現在は手動で実行する必要がありますが、今後は自動変更に調整されます)。

L4プロキシとゲートウェイの関係の設定

1. L4プロキシの転送ルールを作成し、転送ルールのオリジンサーバーをゲートウェイのIPアドレスとポートに指定します。

注意:
このステップでは、転送プロトコルはUDPプロトコルである必要があります。TCPを選択した場合、プロトコルスタックはトンネル外層に接続状態と再送ロジックを追加で導入し、マルチネットワーク集約加速が無効になります。
2. 加速ゲートウェイの回線を構成します。EdgeOne L4プロキシインスタンスの回線ルールで、作成したばかりのルールIDを選択します。


アクセスキーの設定

1. アクセスキー管理をクリックします。更新をクリックして、システムにアクセスキーを作成させるか、またはキーをカスタマイズできます。


上記の手順を完了し、クライアントSDK/DemoAppでサイトID、ゲートウェイID、アクセスキーを構成すると、SDK側でアクセラレーションを開始できます。

Demo App

Demo Appを通じて製品サービスを迅速に体験できます。最新バージョンのインストールパッケージをダウンロードしてください。詳細についてはDemo Appダウンロードガイドをご参照ください。
テスト手順は以下の通りです:
1. 右上隅で言語を選択します。中国語/英語を選択できます。基本機能でEdgeOne全パス安全な加速体験を選択します。

2. もう一度右上隅をクリックして設定に入ります。

3. アクセラレーション設定を行います。
環境選択
テスト段階では、リリース環境を選択することをお勧めします。これにより、開発チームが問題を特定し、技術的な連携調整を行いやすくなります。
リリース検証段階では、本番環境の使用をお勧めします。コンソールでゲートウェイを作成し、本番ネットワークでのサービス効果を検証できます。
アクセラレーションパラメータ
Application Key:コンソールで作成したアクセスキーを入力します。

Zone ID:お客様のEdgeOneサイトIDを入力します。

Gateway ID:コンソールで作成したゲートウェイIDを入力します。

アクセラレーションモード:リアルタイムモードを選択します。
アクセラレーションアプリ:通常はすべてのアプリを選択できます。つまり、スマートフォンのすべてのトラフィックを加速します。リスト内の関心のある指定アプリを選択して加速することもできます。
ログレベル:Infoレベルを選択してください。
マルチNIC:スイッチをオンにすると、お使いのスマートフォンのWi-Fi/セルラーネットワークカードを使用して競速します。オフにすると使用しません。
ストレージログ:「ストレージログ」オプションをチェックすると、加速を有効にした後、加速ログが次のディレクトリに保存されます:Android/data/com.android.tencentvpn/files/Documents
また、android adbツールを使用してPINGログを取得することもできます。コマンドは以下の通りです:
adb logcat -b all | grep PING > $(date +\\%m\\%d-\\%H:\\%M:\\%S).log

4. 上記の設定が完了したら、確認をクリックして、アクセラレーションページに戻ります。
5. 「加速を開始」をクリックし、VPN権限を許可します。VPNアイコンが表示されます(スマートフォンのメーカーによって異なります)。

6. 停止加速をクリックすると、VPNアイコンが消え、加速が停止します。

SDK導入

ダウンロードおよび各OSのSDK導入情報については、お問い合わせください。

アプリケーション別デバイスSign署名生成方法のリファレンス

アプリケーション別に作成されたデバイスSign署名の生成には、2つのパラメータが必要です:お客様がカスタマイズしたビジネスでデバイスを一意に識別するdeviceName、および上図の作成成功後に返されるアプリケーションキーです。この2つのパラメータを使用してスクリプトを起動し、アプリケーション別に作成されたデバイス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 TencentCloud 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
/**
{ "type": "sentence", "analyse_result": "原文为技术文档中的注释语句、属于省略主语的陈述句。分析如下:一、句子判定:该文本为句子、主语隐含。二、成分分析:1、句型为陈述句、单句。2、主语与语态分析:表层无显性主语、深层逻辑主语为‘业务方’(隐含)、具备执行‘控制’动作的能力。‘@deviceName’为注释标记及参数名、作提示性成分。‘业务自己’为状语、限定动作主体。‘控制’为谓语核心动词。‘设备唯一标识’为宾语。全句意为‘业务方自行控制设备唯一标识’、主动语态、逻辑自洽。3、主干:主语(隐含:业务方)+谓语‘控制’+宾语‘设备唯一标识’。4、修饰语:‘业务自己’修饰谓语‘控制’、表示动作由业务方自身执行、‘@deviceName’为注释标记、提示该参数含义、不参与主干结构。5、检查验证:深层逻辑与语法自洽、无施受矛盾。" }
* @param SecretKey TencentCloud 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 main
import (
"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 JwtCustomClaims
type SignClaims struct {
jwt.StandardClaims
DeviceName 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インターフェース説明

コンソールリクエストは、すべてTencentCloud APIインターフェースに対応します。
注意:
コンソール機能とAPIドキュメントは対応しています。コンソール接続を基準にAPIドキュメントを参照できます。対応関係が不明な場合は、ブラウザの開発者モードを開き、インターフェース名に基づいてアプリケーションインターフェースを見つけることができます。



ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック