VMess・VLESS・Trojan・Shadowsocksの違いと用途別の選び方

VMess・VLESS・Trojan・Shadowsocksの設計、暗号化、負荷を比較。デスクトップ、Androidの省電力、複数デバイス共有など、用途に合うプロトコルを解説します。

この記事の要点

プロトコルを選ぶ前に、サーバー側で提供されている方式を確認し、クライアントのコア、通信方式、安全レイヤーとの互換性をチェックしましょう。4種類の暗号化の範囲を整理し、デスクトップ、Android、複数デバイスでの選び方と、回線差を避けて比較する方法を解説します。ノードやサブスクリプションを入手済みで、設定の適合性を確認したい方に向けた内容です。

プロトコル・通信方式・安全レイヤー・クライアントの違い

ノード名にある「VLESS + WebSocket + TLS」は、3つのプロトコルが競合しているという意味ではありません。VLESSはプロキシ要求と認証を定義し、WebSocketはデータを運び、TLSはその接続を保護します。「VLESS」という名前だけで速度や安全性を判断するには、情報が足りません。

v2rayNはデスクトップ用クライアントであり、5つ目のプロキシプロトコルではありません。ノードのインポートや選択、実行設定の管理を行い、実際の接続は選択したコアが処理します。Android版のv2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。同じ系統のコアでも、すべてのバージョンが同じ新機能に対応しているとは限りません。

4種類のプロトコル:暗号化方式と互換性

比較するときはプロトコル名だけで「最速」「最も安全」と決めつけず、構成全体を確認しましょう。以下は一般的な構成例です。利用できる項目は、ノード提供元の説明、コアのバージョン、設定仕様によって異なります。

プロトコル 認証と暗号化 設定時の確認項目 そのまま使う条件
VMess 一般にUUIDで認証します。現在の構成ではVMess AEADを使用し、データの暗号化は設定によって異なります。 UUID、暗号化オプション、通信パラメーター、端末の時刻。 安定して使える入口があり、クライアントとサーバーの設定が一致している。
VLESS 一般にUUIDで認証します。一般的な構成ではプロトコルの暗号化フィールドはnoneで、安全性は組み合わせる安全レイヤーに依存します。 TLSまたはREALITYのパラメーター。Visionを使う場合はflowと通信方式の対応も確認します。 サーバーから設定一式が提供され、クライアントのコアが該当する組み合わせに対応している。
Trojan パスワードで認証し、一般的な構成ではTLSでプロキシ通信を保護します。 パスワード、サーバー名、証明書の検証、ポート。 適切に管理されたTLSの入口があり、設定項目の関係が分かりやすい方式を使いたい。
Shadowsocks 事前共有鍵を使用します。現在のAEAD方式とShadowsocks 2022方式では、必要な鍵の条件が異なります。 暗号化方式、鍵の形式、TCP・UDPへの対応。 対応する最新の暗号化方式が利用でき、できるだけシンプルな接続設定を優先したい。

VMess:既存の設定ではAEADと時刻を確認

VMessだからといって、古いノードが必ず使えないわけではありません。既存の接続が安定しているなら、名前だけを理由に変更する必要はありません。現在のVMess設定では、alterIdは通常0です。古い解説を参考に、理由なく0以外の値を設定しないでください。端末の時刻が大きくずれていると認証に失敗することがあります。問題を切り分けるときは、自動時刻合わせを有効にしてからUUIDと通信パラメーターを確認しましょう。

VLESS:軽量だからといって安全レイヤーを省けるわけではない

一般的なVLESSノードのencryption=noneだけでは、接続全体が保護されていないとは判断できません。外側にTLSやREALITYが設定されているかも確認してください。逆に、この項目だけを見て「標準で安全」と考えることもできません。REALITYやVisionはVLESSと同義ではないため、対応状況をそれぞれ確認しましょう。ノードに指定がない項目を独自に追加しないでください。

TrojanとShadowsocks:同じパスワードでも接続できるとは限らない

Trojanのパスワードは、TLS証明書の検証の代わりにはなりません。証明書エラーが起きたら、ドメイン、サーバー名、証明書チェーンを確認し、検証を恒久的に無効化しないでください。Shadowsocksでは、暗号化方式と鍵の両方を一致させる必要があります。たとえばchacha20-ietf-poly1305と2022-blake3-aes-128-gcmは自由に入れ替えられる設定ではなく、後者には仕様に合った鍵の形式も必要です。

デスクトップでの普段使い:設定が揃い、実測で安定する入口を選ぶ

以下の「おすすめ」は、新たにメインの設定を作る場合で、サーバーの選択肢があり、クライアントが必要な機能に対応していることを前提としています。すべての環境に当てはまる順位ではありません。既存のノードが安定して使えるなら、プロトコルを何度も切り替えるより、そのまま使うほうが手間を抑えられます。

VLESS:安全レイヤーを含む設定

おすすめ

新しい入口を用意するなら、サーバーが提供するVLESS + TLSまたはREALITYの構成をまず検討できます。コアの対応状況、サーバー名、必須パラメーターを確認し、異なるノードの設定を組み合わせないでください。

向いているケース:サーバーを管理でき、設定の保守も行うデスクトップのメイン接続。

Trojan:利用可能なTLS入口がある場合

ドメイン、証明書、安定したサーバーがすでにあるなら、提供元の設定に従ってそのまま利用できます。証明書の更新やパスワード管理も、運用に必要な作業です。

向いているケース:利用可能なTLS構成があり、既存の入口を使いたい。

Shadowsocks:シンプルな設定

クライアントとサーバーの両方が対応する最新の暗号化方式を選びましょう。設定項目は少なめですが、接続性は回線環境に左右されます。どのネットワークでも必ず速くなるわけではありません。

向いているケース:安定したサーバーがあり、普段の接続をシンプルに保ちたい。

VMess:安定している既存ノードを継続利用

サブスクリプションに動作確認済みのVMessノードがある場合は、まず実際にアクセスできるか試しましょう。通信方式と安全レイヤーの設定が明確に一致していることを確認し、プロトコル名だけを理由に接続先を切り替えないでください。

向いているケース:既存のサブスクリプションと端末が安定して動作している環境。

Windowsでv2rayNを使って確認する場合は、メイン画面の「システムプロキシ」メニューから「システムプロキシを自動設定」を選び、ブラウザーがシステムプロキシに従うか確認できます。画面の表記はバージョンによって異なる場合があります。LinuxやmacOSでは、デスクトップ環境のプロキシ設定も確認してください。アクティブなノードを切り替えただけでは、すべてのアプリがプロキシ経由になるとは限りません。

負荷の測り方:ポート・遅延・スループットを分けて確認

同じプロトコルで回線を変えたときの差は、同じ回線でプロトコルを変えたときの差より大きいことがあります。CPUのハードウェアアクセラレーション、TLSハンドシェイクの回数、通信のカプセル化、パケットロスなどが結果に影響します。「VLESSなら必ず省電力」「Shadowsocksなら必ず高速」といった主張には、測定条件が欠かせません。

443
TLSサーバーでよく使われるポート。実際の値は設定によります
10808
ローカル待ち受けポートの例。クライアントの設定を確認してください
8388
Shadowsocksサーバーのポート例。固定の要件ではありません

この3種類のポートは、リモート側の入口とローカルの待ち受けポートの違いを示しています。リモート側で443を使っていても、HTTPSの特性がすべて自動的に備わるわけではなく、証明書が正しいとも限りません。ブラウザーで手動プロキシを設定する場合は、リモートサーバーのアドレスではなく、ローカルアドレスと該当プロトコルの待ち受けポートを入力してください。

  1. 環境を固定:同じサーバー、ネットワーク、測定先を使い、ルーティング方式も固定します。一方は直接接続、もう一方はプロキシ経由といった比較は避けてください。
  2. まず接続を確認:TCPingで分かるのはポートレベルの疎通だけで、認証、TLS、プロキシ要求の成功までは確認できません。実際に接続し、Webページにもアクセスしてみましょう。
  3. 複数回測定:各条件で実接続のテストを5回行い、失敗回数と成功時の中央値を記録します。最小値だけを選ばないでください。
  4. 次に継続負荷を測定:同じテスト用リソースに60秒間アクセスし、スループットとCPU使用率を記録します。モバイル端末では同じ使用時間での電池消費も確認し、短時間のテスト1回だけでプロトコルの優劣を決めないでください。

Androidの省電力と複数デバイス共有:まず通信の振り分け範囲を調整

モバイル端末の電池消費は、暗号化処理だけでなく、バックグラウンドアプリの通信、頻繁な再接続、電波の弱さによっても増加します。v2rayNGのローカルVPNによる通信の振り分けと、リモートプロキシのプロトコルは別の層です。ローカルVPNを有効にしても、リモートノードのプロトコルが変わるわけではありません。

普段使いでは、v2rayNGの「設定」→「アプリごとのプロキシ」で通信の振り分け範囲を確認し、「選択したアプリのみをプロキシ」するモードか「選択したアプリを除外」するモードかをチェックしましょう。具体的な表示はバージョンによって異なります。ブラウザーだけをプロキシ経由にする場合は、不要なバックグラウンド通信を減らしてからプロトコルごとの電池消費を比べると、より有意義な結果が得られます。

デスクトップとAndroid:サブスクリプションを共有し、それぞれの対応状況を確認

デスクトップ:v2rayN
  • 使いたいプロトコルと通信方式に対応したコアを選びます。
  • インポート後、サーバー、ポート、安全レイヤーの項目を確認します。
  • アプリの利用状況に合わせて、システムプロキシなどの通信振り分け方法を選びます。
  • サブスクリプションを更新したら、アクティブなノードを再確認します。
Android:v2rayNG / v2flyNG
  • v2rayNGはXray、v2flyNGはV2Flyを使用します。
  • 実際のバージョンがノードの機能に対応しているか確認します。
  • 必要に応じてアプリごとの設定とルーティングルールを設定します。
  • Wi-Fiとモバイルデータ通信の両方で、接続できるか確認します。

同じサブスクリプションを使えば設定元を揃えられますが、異なるコアやバージョンで、まったく同じノードが利用可能になるとは限りません。

複数デバイスで共有する場合は、サービス提供元のデバイス数、同時接続数、通信量の制限も確認してください。サブスクリプションURLにはアクセス情報が含まれていることが多いため、一般のURLのように公開・共有しないでください。自前のサーバーでデバイスごとに権限を取り消したい場合は、サーバー側が複数ユーザー設定に対応していることを前提に、デバイスごとに個別のUUID、パスワード、鍵を割り当てられます。

接続失敗とUDPの要件:症状別の確認ポイント

動画を再生できてもUDPが使えるとは限りません。Webページを開けない原因も、プロトコルの選択ミスとは限りません。クライアントが起動していない、認証に失敗している、証明書に問題がある、DNSの名前解決に失敗している、ルーティングルールに一致していない、といった原因を切り分けてからノードの変更を検討しましょう。

ノードの遅延は低いのに、Webページが開かないのはなぜ?

表示されているのがTCPingの結果か、実際の接続テストの結果かを確認してください。v2rayNでアクティブなノードとシステムプロキシの状態を確認し、クライアントのログで認証、TLS、ポート競合のエラーを調べます。最後にブラウザー独自のプロキシ設定を確認し、システムプロキシを迂回していないかチェックしてください。

VLESSのインポートは成功したのに、接続がすぐ失敗するのはなぜ?

サーバー、ポート、UUID、通信方式、安全レイヤーを一つずつ確認します。REALITYの入口では、提供元が指定する公開鍵、shortId、サーバー名なども確認してください。Visionを使う場合はflowも一致させます。インポート成功はリンクを解析できたことを示すだけで、コアがすべての項目に対応しているとは限りません。

Trojanで証明書エラーが出た場合、検証をそのままスキップしてもいい?

まず端末の時刻を合わせ、サーバー名が証明書の対象ドメインに含まれているか、サーバー証明書が期限切れでないか、証明書チェーンが完全かを確認してください。証明書の検証を長期的にスキップして問題を放置しないでください。IPアドレスで接続する場合も、正しいサーバー名を設定してください。

音声通話やゲームでUDPが必要です。4種類のプロトコルはどれもそのまま使えますか?

プロトコル層がUDPを扱えることと、現在の接続経路でUDPが使えることは別です。ローカルの通信振り分け方式、コアの対応状況、サーバー側のUDP転送、ファイアウォールを確認してください。ShadowsocksのネイティブUDP転送では、通常、該当するUDPポートを開放する必要があります。一般的なTrojan実装ではTLS接続内にUDPをカプセル化するため、パケットロスがある環境で実際に試してください。

選び方のまとめ:設定の適合性、安定性、運用負荷の順に確認

サブスクリプションを利用する場合は、まずインポートし、対応状況と実際のアクセスを確認してから性能を比較するのが効率的です。自前の環境では、ドメインと証明書、ユーザー管理、安全レイヤーの設定、更新・保守まで含めてプロトコルを選びましょう。

最終的には「プロトコル + 通信方式 + 安全レイヤー + コアのバージョン + 回線」という組み合わせ全体を記録しましょう。具体的なインポート方法やプロキシ設定は使い方ガイドをご覧ください。用語が分からない場合は用語集も参照できます。複数の項目をむやみに変更するより、問題を特定しやすくなります。

v2rayN をダウンロード