VMess/VLESS/Trojan/Shadowsocksを徹底比較:4つのプロキシプロトコルの選び方

主要4プロトコルをハンドシェイク、偽装性、処理負荷、クライアント対応で比較し、家庭用回線・モバイル回線・旧型端末ごとの選び方を解説します。

プロトコル・伝送方式・セキュリティ層を整理する

VMess、VLESS、Trojan、Shadowsocksはいずれもプロキシ接続に利用できますが、課題へのアプローチはそれぞれ異なります。比較する前に、3つの層を分けて考えましょう。プロトコルはクライアントとサーバーが認証し、データを交換する方法を定めます。伝送方式はTCP、WebSocket、gRPCなど、データを運ぶ手段を決めます。セキュリティ層は暗号化接続や保護されたセッションを担います。

1つのサブスクリプション設定には、通常これら複数の層が含まれています。たとえば、あるVLESSノードはTCP伝送とTLSを使用する場合もあれば、XrayのREALITYとVisionフロー制御を組み合わせる場合もあります。別のVMessノードはWebSocketを使い、外側の接続をTLSで保護することもあります。2つの設定でプロトコル名が異なっていても、実際の速度や安定性は、サーバーまでの距離、回線品質、混雑状況、伝送方式、クライアントのコアバージョン、ルーティング規則などの影響を受けます。

一般ユーザーがサブスクリプションを入手した後、VMessノードを手動でVLESSに変更する必要は通常ありません。また、リンクの先頭だけを書き換えてプロトコルを変換することもできません。プロトコル種別、認証情報、サーバーの待受方式、セキュリティ層は、サーバー側と一致している必要があります。クライアントに表示された設定は、サブスクリプションの内容どおりに使用してください。サービス提供者が複数のノードを用意している場合は、遅延テストと実際のアクセス結果で選びます。

4つのプロトコルの主な違い

VMess:認証と暗号化ネゴシエーションを備えた成熟した方式

VMessは、V2Rayエコシステムで長く使われてきたプロトコルです。クライアントはユーザー識別子を使ってサーバーと認証し、最新の実装では通常、認証データの処理にAEAD方式を採用します。VMessはクライアントとサーバーの時刻差に敏感です。端末の時刻が大きくずれていると、認証失敗や接続直後の切断が発生することがあります。

VMessはTCPやWebSocketなどの伝送方式と組み合わせられ、外側にTLSを設定することもできます。プロトコル自体の認証・データ処理と、外側の伝送の偽装は別のものです。一般的な暗号化Webサイトの通信に見えるかどうかは、実際の伝送方式、セキュリティ層、ドメイン、サーバー構成によって決まります。導入情報が充実しており、v2rayN、v2rayNG、v2flyNGで一般的なVMessサブスクリプションを扱える点が長所です。一方、処理手順が比較的多いため、性能の低い端末や高並列の環境では、構成を簡素化したVLESSより負荷が高くなる傾向があります。

VLESS:認証を簡素化し、安全性を外側に委ねる方式

VLESSはユーザー識別子による認証を維持しつつ、データ暗号化をプロトコル内部で重ねて処理しません。実際の構成では、TLS、REALITYなど、サーバー設定と一致するセキュリティ層に接続保護を任せます。この役割分担によって重複処理が減り、パラメーターの組み合わせも分かりやすくなるため、最新のXray構成に適しています。

VLESS自体が速度を保証するわけではありません。サーバー回線と伝送方式が同じで、セキュリティ層が適切に設定されていれば、比較的少ないプロトコル負荷でデータを転送できます。しかし、不適切な伝送方式、誤ったフロー制御パラメーター、複雑なルーティングを追加すると、実際の使用感が低下することがあります。xtls-rprx-visionフロー制御やREALITYパラメーターを含むサブスクリプションはXray系の拡張であり、対応機能を備えたXrayコアを使用してください。v2rayNGでXrayコアを使う場合、この種の設定に直接対応できます。v2rayNでは、コアと設定モードを適切に選ぶ必要があります。v2flyNGはv2flyコアを採用しているため、Xray専用パラメーターを一般的なVLESSノードと同じように扱うことはできません。

Trojan:TLS接続を主な外側の層として利用

Trojanはパスワードでクライアントを認証し、TLSを接続の重要な構成要素として使用します。正しく構成されていれば、ハンドシェイクとその後のデータ通信はTLSセッション内で行われます。設定で重要なのはパスワードだけではありません。サーバーアドレス、ポート、ドメイン、証明書名の検証、伝送パラメーターも関係します。いずれかがサーバー側と一致しないと、TLSハンドシェイクに失敗する可能性があります。

Trojanは構造が分かりやすく、一般的なデスクトップやAndroidの利用環境で幅広く対応されています。ドメインとTLSを構成できるサーバーに適しています。処理負荷はパスワード文字列の長さではなく、主にTLS、ネットワークの往復時間、具体的な伝送方式によって決まります。サブスクリプションにTrojan TCPと別の伝送方式を使うTrojanノードが両方ある場合は、個別に速度を測定してください。プロトコル名が同じでも、遅延まで同じとは限りません。

Shadowsocks:軽量な暗号化プロキシ

Shadowsocksは、事前共有パスワードと指定された暗号化方式を使ってプロキシ接続を確立します。最新の一般的な設定ではAEAD暗号化方式が使われ、サーバーによってはShadowsocks 2022シリーズも提供されています。クライアントは、サブスクリプションに記載された具体的な暗号化方式に対応していなければなりません。「Shadowsocks」という大分類に対応しているだけで、すべての新しい方式や拡張パラメーターを解析できるとは限りません。

構造が比較的軽量なため、プロセッサー性能が限られた端末、接続数が適度な環境、プロトコル処理の負担を抑えたい場合にも価値があります。Shadowsocksの基本接続は、完全なWebサイトの通信を再現するものではありません。外部から見える特徴は、バージョン、暗号化方式、ネットワーク環境、サーバー構成によっても変わります。したがって「軽量」とは主に処理経路と設定構造を指し、より高い偽装性と直接結び付くものではありません。

ハンドシェイク・偽装・性能・対応状況の比較

プロトコル 認証とハンドシェイク 外側の層と偽装の条件 性能の特徴 クライアントでの注意点
VMess ユーザー識別子で認証し、最新実装ではAEADを採用。端末時刻を正確に保つ必要あり TCP、WebSocket、TLSと組み合わせ可能。結果は全体の設定で決まる 処理手順は多めだが、互換性と運用実績が豊富 3種類のクライアントで一般的な設定に対応。古いサブスクリプションではサーバー互換性を確認
VLESS ユーザー識別子による認証を簡素化し、プロトコル層でデータ暗号化を重複処理しない 通常はTLSまたはREALITYと併用。Visionは特定コア向けの拡張 プロトコル負荷が低く、最新の構成に適する 通常のVLESSとXray専用パラメーターは分けて判断する
Trojan パスワード認証。接続確立にはTLSパラメーターの一致が必要 TLSが主な外側の層。ドメインと証明書名の設定が重要 構造はシンプルだが、実際の負荷はTLSと回線の影響を受ける インポート後にサーバー名、ポート、伝送設定を確認
Shadowsocks 事前共有パスワードと指定された暗号化方式 基本プロトコルは暗号化プロキシに重点を置き、外部から見える特徴はバージョンと構成で決まる 処理経路が軽く、リソースの限られた端末に適する クライアントコアが指定された暗号化方式に対応しているか確認

「偽装性」は伝送層から切り離して単独評価できません。VMess over WebSocket over TLS、VLESS over TCP with REALITY、Trojan over TLS、基本的なShadowsocksでは、接続構造が大きく異なります。2つのノードがどちらもTLSを使っていても、ドメイン設定、ハンドシェイクパラメーター、サーバーの挙動、ネットワーク経路は異なる場合があります。一般ユーザーにとって最も確実なのは、サブスクリプションのパラメーターをそのままインポートし、実際の利用環境で接続を検証することです。

「クライアント対応度」も、プロトコル対応、パラメーター対応、コア対応に分けて考える必要があります。v2rayNはデスクトップクライアントで、複数のコアとさまざまなサブスクリプションを管理できます。v2rayNGはXrayコアを使用するため、VLESS、REALITY、VisionなどのXrayパラメーターを含むAndroid向けサブスクリプションに適しています。v2flyNGはv2flyコアを使用し、標準的なV2Ray/v2fly設定に適しています。インポートに成功しただけではリンクを解析できたことしか分からず、実行時にはコアがすべてのフィールドを認識できるか確認する必要があります。

家庭用ブロードバンドの選び方

家庭用ブロードバンドは接続が安定し、端末性能にも余裕があることが多いため、サーバー回線の品質、夜間の混雑、長期的な互換性を重視します。VLESS、Trojan、VMess、Shadowsocksが同時に提供されている場合は、1回だけ遅延を測るのではなく、次の順番でテストしましょう。

  1. まず、クライアントコアに完全に合うノードを選びます。XrayパラメーターはXrayコアに、標準的なv2fly設定はv2flyコアに任せます。
  2. 接続確立までの時間、継続アクセスの安定性、大容量ファイルの転送を個別に測定し、1回の最低遅延だけを唯一の判断材料にしないでください。
  3. 普段利用する夜間の時間帯にもテストを繰り返します。回線混雑による差は、プロトコル固有のわずかな処理負荷を上回ることが多いです。
  4. システムプロキシとルーティングが正常に動作しているか確認し、ローカルから直接接続された通信をノードの速度として誤って測らないようにします。

最新の端末と通常品質の回線では、適切なセキュリティ層を組み合わせたVLESSが有力候補です。すでに安定したTLS構成がある場合は、Trojanも常用接続に適しています。VMessは、既存の成熟したノードを使い続けたい場合、特にサブスクリプションがVMessしか提供していない場合や、サーバー側がまだ移行していない場合に向いています。Shadowsocksは構造が軽量な予備候補です。この順番はプロトコルの優劣ではなく、一般的な構成条件でのテスト開始点です。

モバイル回線の選び方

モバイル回線では、基地局の切り替え、電波の変動、ネットワークアドレスの変化、短時間のパケットロスが発生します。この環境では、実験環境でのピーク速度より、接続の復旧速度と伝送の安定性が重要です。プロトコルは要素の1つにすぎず、クライアントのバックグラウンド動作、省電力設定、ルーティング範囲も結果を左右します。

VLESS、Trojan、VMessはいずれも、伝送方式とサーバー設定が回線に合っていればモバイル回線で安定して動作します。ネットワーク切り替え後に特定のノードが長時間復旧しない場合は、いったん切断して再接続し、同じサーバーにある別プロトコルのノードと比較してください。プロトコル、DNS、ルーティング、Muxを同時に変更すると、どの設定が影響したのか判断できなくなります。

Muxは複数の論理接続を少数の基盤接続に多重化する機能であり、4つのプロトコルにおける根本的な違いではありません。Webページの閲覧では多重化が有利になる場合がありますが、高帯域幅や長時間接続ではヘッドオブラインブロッキングが発生することもあります。モバイル回線でのテストでは、まずサブスクリプションの初期値を使いましょう。頻繁に途切れる場合は、他のパラメーターを固定したまま、Muxを個別に無効・有効にして比較します。

v2rayNGでは、アプリごとのプロキシ設定によって、プロキシ不要なバックグラウンド接続を減らせます。ルーティング規則を使えば、ローカルサービスを直接接続することもできます。v2flyNGでも、実際のコアの対応範囲に合わせて設定をインポートしてください。サブスクリプションにREALITYやVisionが含まれる場合は、通常のVLESSリンクとして単純化せず、まずXrayコアのバージョンとノードパラメーターを確認します。

旧型端末の選び方

旧型端末で主な制約となるのは、一般にプロセッサー性能、使用可能なメモリ、システムのネットワークスタックです。プロトコル負荷の低い設定は安定したスループットを維持しやすい一方、暗号化アルゴリズムのハードウェアアクセラレーション、伝送層の重複カプセル化、接続数の多さによって最終結果は変わります。

Shadowsocksは軽量な構造のため、まず試す候補として適しています。ただし、クライアントコアが対応する最新の暗号化方式を選ぶ必要があります。VLESSも、伝送方式を簡素化し、セキュリティ層を適切に組み合わせれば、低い負荷を維持できます。TrojanはTLSに依存するため、実際の性能は端末のTLS処理能力に左右されます。VMessは処理手順が比較的多く、端末が大容量通信で継続的に高負荷になる場合は、同じ回線のVLESSまたはShadowsocksノードと比較してください。

リソース使用量を抑えるには、まずアプリごとのプロキシ範囲を狭め、不要な並列接続を減らし、伝送層を重ねすぎないようにします。ルーティング規則は読みやすく保ちましょう。ローカルドメインとLANアドレスは直接接続し、プロキシが必要な宛先だけをプロキシ出方向へ送り、ブロック規則は明確な対象に限定します。規則の数だけが問題なのではなく、複雑なドメイン照合や多層の名前解決を頻繁に行うことも実行負荷を高めます。

旧型端末で古いクライアントバージョンしか動かせない場合は、そのクライアントが明確に対応する標準プロトコルパラメーターを優先します。新しいVLESS拡張、Shadowsocks 2022方式、特定のフロー制御には、より新しいコアが必要になることがあります。サーバーが複数のサブスクリプショングループを提供しているなら、互換性のあるグループを選んでください。不明なフィールドを手動で削除して接続を続けるのは避けましょう。フィールド間に依存関係がある場合があります。

サブスクリプションをインポートした後の選び方

サブスクリプションには、サーバーアドレス、ポート、認証情報、プロトコル、伝送方式、セキュリティ層がまとめて含まれています。適切なプロトコルを選ぶ第一歩は、リンクを編集することではなく、インポート結果を確認することです。v2rayN、v2rayNG、v2flyNGでは画面上の名称が多少異なりますが、確認の考え方は共通しています。

  1. プロトコル種別を確認:ノードがVMess、VLESS、Trojan、Shadowsocksのどれとして表示されているか確認し、サブスクリプショングループ名をプロトコルと取り違えないようにします。
  2. アドレスとポートを確認:インポート後のサーバーアドレスとポートに完全な値が入っていることを確認します。ドメインだけが残り、ポートが抜けていないか注意してください。
  3. 伝送方式を確認:TCP、WebSocket、gRPCなどがサブスクリプションの内容と一致しているか確認します。パスやホスト名などのフィールドも完全に保持する必要があります。
  4. セキュリティ層を確認:TLS、REALITY、サーバー名、フロー制御のフィールドを確認します。特にVLESSでは、これらのパラメーターを見落とさないでください。
  5. コアを確認:Xray拡張を含むノードは、該当する拡張に対応したコアで実行します。標準的なv2fly設定は、v2flyの対応範囲に従って動かします。
  6. システム時刻を確認:端末の日付とタイムゾーンを自動同期し、時刻のずれによるVMess認証失敗を防ぎます。
  7. 実際の環境でテスト:まず接続を確認し、次に普段使うサイトへアクセスし、最後に連続利用中の再接続と速度変動を観察します。

サブスクリプション更新後、同名ノードのプロトコルやパラメーターが変わっていた場合は、更新後の設定を選び直してください。クライアントが古いノードのコピーを保持していることがあるため、テスト時には現在有効な設定が最新のサブスクリプショングループに属しているか確認します。ルーティング規則とノードのプロトコルは別の要素です。プロトコルを変更しても誤った振り分けは自動修正されず、ルーティングを更新してもサーバーの認証方式は変わりません。

よくある選択ミス

誤解1:VLESSは必ずVMessより速い

VLESSはプロトコル構造がより簡素ですが、速度の上限は回線、サーバー負荷、伝送方式によって決まることが多いです。地域をまたぐ回線が混雑している場合、プロトコル層で削減できる処理量ではネットワーク品質の差を埋められません。同じサーバー、同じネットワーク、近いセキュリティ層で比較したテストだけが参考になります。

誤解2:Trojanはパスワードだけで接続できる

パスワードは認証パラメーターの1つにすぎません。TLSのサーバー名、ポート、ドメイン解決、伝送方式、証明書の構成も接続確立に関係します。サブスクリプションをインポートした後にハンドシェイク失敗が表示された場合は、まずこれらのフィールドを照合し、パスワードを何度も変更するのは避けてください。

誤解3:Shadowsocksの対応状況はすべて同じ

対応する暗号化方式やプロトコルバージョンは、コアによって異なる場合があります。古い設定の方式、最新のAEAD方式、Shadowsocks 2022シリーズを、名称だけで同じ互換範囲にまとめることはできません。クライアントが暗号化方式を認識できない場合は、サーバーが提供する互換ノードに切り替えるか、対応するクライアントコアへ更新してください。

誤解4:インポートに成功すれば、すべてのパラメーターが使える

クライアントは先に共通フィールドを解析し、コアの起動時になって未知のパラメーターを報告することがあります。特にREALITY、Vision、特定の伝送設定は、クライアント画面、設定生成機能、実行コアのすべてが対応していなければなりません。起動に失敗した場合は、サブスクリプションの解析、設定生成、コアの起動、ネットワークのハンドシェイクのどの段階でエラーが起きたかを確認すると、対処方法を絞り込めます。

最終的な選び方:利用環境に合わせて組み合わせを残す

家庭用ブロードバンドでは、まずVLESSとTrojanを試し、安定したVMessまたはShadowsocksノードを予備にします。モバイル回線では、切断からの復旧、継続接続、伝送への適応性を重視し、1回の遅延だけで判断しないでください。旧型端末ではShadowsocksまたは簡素なVLESS設定から始め、プロセッサー使用率と継続スループットを見て決めます。

サブスクリプションが1種類のプロトコルしか提供していない場合は、サーバーのパラメーターをそのまま使えば問題ありません。プロトコルの選択肢はサーバー側の実際の構成によって決まり、クライアントの任意のスイッチで作れるものではありません。4種類すべてが提供されている場合は、ノード名、プロトコル、コア、普段使う時間帯の遅延、継続接続の状態、ダウンロード速度を簡単に記録することをおすすめします。数回比較した後、メインノード1つと、異なる回線の予備ノードを1〜2個残します。

4つのプロトコルに、環境を問わず通用する固定の順位はありません。VMessは成熟した互換性、VLESSは簡素な構造と外側のセキュリティへの依存、Trojanは適切なTLS構成、Shadowsocksは軽量な構造と暗号化方式の互換性が特徴です。プロトコル名だけを見るより、サブスクリプションのパラメーター、クライアントコア、端末性能、ネットワーク環境を順に確認して絞り込む方が確実です。

v2rayNをダウンロード