まずは比較表で全体像を確認
| プロトコル | 暗号化方式 | パフォーマンスへの負荷 | 検閲耐性 | 設定の難易度 |
|---|---|---|---|---|
| Shadowsocks | プロトコル自体に暗号化を内蔵 | 低い | 普通、特徴が比較的検出されやすい | 低い |
| VMess | プロトコル自体に暗号化+認証機能を内蔵 | 中程度 | 良好、通信の偽装に対応 | 中程度 |
| VLESS | 暗号化を内蔵せず、外層の TLS に依存 | 低い(VMess よりさらに軽量) | 良好、TLS 偽装と組み合わせるとさらに効果的 | 中〜高 |
| Trojan | 完全に TLS 暗号化に依存 | 低い | 良好、通信の特徴が正常な HTTPS とほぼ同じ | 中程度 |
Shadowsocks:シンプルで軽量な入門プロトコル
Shadowsocks(略称 SS)は最も早く普及した軽量プロキシプロトコルで、設計思想は非常にシンプルです:通信を対称暗号アルゴリズムで暗号化して転送するというものです。利点は速度が速くリソース消費が少ないことで、ほぼすべてのプラットフォームに安定したクライアントがあります。欠点はプロトコルの特徴が比較的固定的で、通信検出技術が強力な環境では、他のプロトコルより安定性が劣る可能性があることです。速度を重視し、ネットワーク環境が比較的緩やかな場面に適しています。
VMess:V2Ray のネイティブプロトコル
VMess は V2Ray プロジェクトが最初に設計したコアプロトコルで、Shadowsocks をベースに認証メカニズムとより柔軟なトランスポート層のカプセル化(WebSocket や TLS などを重ねて正常な Web 通信に偽装できる)を追加しています。多くのガイドで「V2Ray の方が安全」と言われるのはこのためです——安全性の向上は主にこれらの追加のカプセル化と認証機能によるもので、単純な暗号強度の話ではありません。設定には UUID(ユーザー識別子)や AlterId などのパラメータを別途入力する必要がありますが、サブスクリプションリンクを使えばこれらのパラメータは自動的にインポートされ、手動入力は不要です。
VLESS:より軽量な次世代プロトコル
VLESS は VMess の「軽量版リファクタリング」と理解でき、Xray プロジェクトによって提唱されました。最大の特徴はプロトコル自体では暗号化を行わないことで、暗号化処理を完全に外層の TLS トランスポート層に委ねることで、プロトコル自体の処理負荷を減らし、理論上はより高速になります。ただしプロトコル自体に暗号化がないため、VLESS はほぼ常に TLS(または XTLS)と組み合わせて使用する必要があり、そうしないと通信が平文で露出してしまいます。そのため設定時の証明書やドメインへの要件は VMess より高く、ある程度のネットワーク知識があり性能を重視するユーザーに向いています。
Trojan:本物の HTTPS 通信に偽装
Trojan プロトコルの設計思想は非常に直接的です:プロキシ通信を一般ユーザーが HTTPS サイトにアクセスするのと何ら変わらないように見せることです。標準の TLS プロトコルによる暗号化に完全に依存し、サーバー側は正常な Web サーバーのように偽装するため、接続が検出されたとしても、通信の特徴は正常な Web 閲覧とほとんど区別がつきません。この「正常な通信に溶け込む」という考え方により、Trojan は検閲耐性の場面で優れた性能を発揮し、設定の複雑さは VMess と VLESS の中間程度です。
モバイル端末とデスクトップ端末で、プロトコルの選び方を分ける必要はあるか
厳密には分ける必要はありません。4 つのプロトコルはいずれも Windows/macOS/Linux の v2rayN と Android の v2rayNG / v2flyNG で問題なく使用でき、クライアントが自動的にプロトコルの解析を処理するため、端末を変えたからといって設定方法を一から学び直す必要はありません。ただし実際の使用感という観点では、モバイル端末はバッテリー消費とバックグラウンド維持をより気にする傾向があり、VLESS / Trojan のようなオーバーヘッドが小さい組み合わせは、長時間接続したままにする場合に通常 VMess より省電力です。デスクトップ端末は電源に接続して使い、性能にも余裕があるため、4 つのプロトコル間の体験差はそれほど目立たず、むしろノード自体の回線品質のほうが注目に値します。
よくある質問:1 つのサブスクリプションに複数のプロトコルが混在することはあるか
あります。しかもこのケースは非常によく見られます。サブスクリプション提供元は同一のサブスクリプション内で VMess、VLESS、Trojan、さらには Shadowsocks のノードを混在させて提供することがよくあり、クライアントはインポート時に各ノードが持つプロトコル情報に従ってそれぞれ解析するため、手動で区別したりグループ分けしたりする必要はありません。日常的な利用では、クライアントの遅延テスト機能を使って接続品質の良いノードを直接選べばよく、プロトコルの種類はノード情報の一部にすぎず、特に気にする必要はありません。
プロトコルはクライアントのバージョンアップに伴って変化するのか
変化します。V2Ray エコシステムのプロトコル自体も継続的に進化しています——例えば VLESS は VMess が長年使われた後に、VMess の追加認証によるオーバーヘッドが高いという問題を解決するために提案されたものです。そのため、クライアント(v2rayN / v2rayNG / v2flyNG)を最新版に保つことが重要です。そうすることで、新しいプロトコルや新しい伝送方式(XTLS、REALITY など)への完全な互換性が確保でき、クライアントのバージョンが古すぎるために一部の新しい形式のノードを識別できないといった事態を避けられます。
一般ユーザーはどう選べばいいか
もしあなたが入門したばかりの初心者なら、これらのプロトコルを「厳選する」必要はありません——これは最も見落とされがちなポイントです。
- ほとんどの場合、あなたが使うサブスクリプションリンクにはすでにプロトコルの種類が事前に設定されており、クライアントが自動的に識別・接続するため、手動で判断・選択する必要はありません。
- 同一のサブスクリプションに複数のプロトコルのノードが提供されている場合、一般的には VLESS または Trojan と表示されているノードを優先的に試すと、総合的な安定性が良いことが多いです。
- 自分でサーバーを構築する場合や、手動で接続の問題を切り分ける必要がある場合にのみ、これらのプロトコルの具体的な違いを本当に理解する必要が出てきます。
つまり、これらのプロトコルの違いを理解する目的は、主に「設定画面上の用語を理解する」ことと「接続トラブルを調査する際にどの方向で考えればいいかを把握する」ことにあり、接続するたびに選択問題を解く必要があるわけではありません。