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

主要4種のプロキシプロトコルを暗号化、ハンドシェイク負荷、偽装性能で比較し、モバイル通信・家庭用回線・旧型端末に適した選択肢を解説します。

この記事の概要

VMess、VLESS、Trojan、Shadowsocksから選びたいv2rayN、v2rayNG、v2flyNGユーザー向けの記事です。暗号化の役割、伝送方式、ハンドシェイクの負荷、時刻同期、端末への負荷、移行の難しさを比較し、モバイル通信、家庭用回線、旧型端末で実行できる設定手順を示します。

まず比較項目を統一:プロトコルだけでは接続構成にならない

VMess、VLESS、Trojan、Shadowsocksは、まずプロキシプロトコルを指します。実際の接続には、トランスポート層、暗号化層、ドメイン名前解決、ルーティング規則、クライアントコアも関わります。ノード名に「VLESS」とあるだけでは性能を判断できず、TCP、WebSocket、gRPC、TLS、Realityなどのパラメータが一致しているかも確認が必要です。

同じプロトコルでも、組み合わせる伝送方式によって接続特性と負荷は大きく変わります。たとえばVLESS over TCP with RealityとVLESS over WebSocket with TLSは別の構成です。VMess over TCPとVMess over WebSocketも、「どちらもVMess」という理由だけで同じものとして扱えません。選ぶ前にサーバーが提供している組み合わせを確認し、クライアントが完全に対応しているかを判断しましょう。

443
TLSサービスでよく使われるポート
10808
ローカルSOCKSポートの例
10809
ローカルHTTPポートの例
<30秒
VMessで推奨される時刻誤差
比較項目 VMess VLESS Trojan Shadowsocks
プロトコル自体の暗号化 認証・暗号化機能を搭載 コンテンツの暗号化は担当しない 標準TLSに依存 AEAD暗号化を使用
一般的な認証情報 UUID UUID パスワード パスワードと暗号化方式
時刻への依存度 高め。自動時刻合わせを推奨 通常は低い TLSと証明書の状態で決まる 通常は低い
主なメリット 旧サブスクリプションとの互換性が広い パラメータが簡潔で、最新の伝送方式に適する TLSの導入構成が分かりやすい 実装が成熟しており、端末への負荷が比較的低い

4種のプロトコルの違いと適用範囲

VMessはV2Ray系で早くから普及したプロトコルで、ノードでは通常UUID認証を使います。システム時刻の影響を受けやすく、端末の時刻が大きくずれると認証に失敗することがあります。既存のサブスクリプションには現在もVMessノードが多数あるため、旧サーバーや旧設定との互換性を保つ選択肢として有用です。名前だけで標準の第一候補と決めるべきではありません。

VLESSはコンテンツの暗号化をTLSやRealityなど外側のセキュリティ機構に任せ、プロトコルの項目を簡潔にしています。Xrayコアでは、VLESSをTCP、gRPC、WebSocket、TLS、Realityなどと組み合わせて使うことが一般的です。メリットは完全な構成にあり、「暗号化を省くこと」自体にあるわけではありません。信頼できないネットワークで適切な外側の保護なしに通信しても、安全な構成にはなりません。

Trojanは通常TLS上で動作し、パスワードで認証します。設定ではサーバーアドレス、ポート、パスワード、SNIまたはサーバー名を正確に入力し、証明書の検証も適切に扱う必要があります。サブスクリプションでドメイン名が指定されているのに、手動でサーバーIPへ変更するとTLSの名前一致に失敗する場合があります。証明書エラーが出たら、まずシステム時刻、ドメイン、SNIを確認し、長期運用の設定として検証スキップを選ばないようにしましょう。

Shadowsocksは事前共有パスワードとAEAD暗号化方式を使い、設定項目が少ないため、性能に余裕のない端末や構成がシンプルなサーバーに適しています。複雑な偽装機能が自動で備わるわけではなく、実際の通信性能はサーバーの実装、暗号化方式、伝送方法に左右されます。古いノードをインポートする際は、クライアントコアが該当する暗号化方式に対応しているかも確認してください。

VLESS

おすすめ

TLSやRealityなど最新の接続方式と組み合わせやすく、項目が明確で、Xrayコアのクライアントで一元管理しやすい構成です。

適している用途: 新規導入、モバイル通信の主力、長期運用

VMess

旧サブスクリプションや既存サーバーとの互換性が広い一方、端末の時刻、伝送パラメータ、セキュリティ項目に注意が必要です。

適している用途: 旧ノードとの互換性確保、既存設定の移行

Trojan

TLSを基盤とする分かりやすい構成ですが、ドメイン、証明書、サーバー名を正確に設定する必要があります。

適している用途: 固定ドメイン、標準TLS構成

Shadowsocks

項目が少なく実装も成熟しているため、旧型ハードウェアやシンプルな転送環境でも設定の負担を抑えられます。

適している用途: 低負荷端末、軽量な互換構成

プロトコルを選ぶ前の3つの条件

モバイル通信・家庭用回線・旧型端末での選び方

モバイル通信では、基地局の切り替え、ネットワークアドレスの変化、短時間のパケットロス、バックグラウンド制限が主な変動要因です。プロトコル名だけでこれらの問題を解消することはできません。サーバーが明確に提供し、クライアントコアが完全に対応するVLESS構成を優先して試し、Wi-Fiからモバイルデータへ切り替えた後の復旧時間を確認しましょう。切り替え後も長時間通信がない場合は、v2rayNGで接続を停止して再起動し、端末メーカーのバッテリー設定がバックグラウンド通信を制限していないか確認してください。

家庭用回線は安定性を比較しやすい環境です。テストでは同じ端末、同じ接続方法、同じ対象サイトを固定し、夜間の混雑時間帯に接続時間、継続ダウンロード、動画のシーク時の挙動をそれぞれ記録します。VLESSとTrojanが異なるサーバーにある場合、結果は主に回線の違いを示している可能性があり、プロトコルの差に直接結び付けることはできません。

旧型端末では、不要な同時接続、複雑なルーティング、高頻度の速度測定を減らしましょう。サーバー側が提供している場合、Shadowsocksは設定項目が比較的少ない軽量な選択肢になります。すでに安定しているVMessノードも、名前を変えるだけのために移行する必要はありません。性能はCPU使用率、発熱、再接続回数、実効スループットで判断してください。

推奨構成: デスクトップとAndroidで同じサブスクリプションを検証

デスクトップ版(v2rayN)
  • 「サブスクリプショングループ」→「サブスクリプショングループ設定」でサブスクリプションを追加
  • サーバーが推奨するXrayコア構成を優先する
  • 「設定」→「パラメータ設定」でローカルポートを確認
  • コアのログでハンドシェイクと接続エラーを記録する
Android版(v2rayNG)
  • 同じサブスクリプションを更新し、同名のノードを選択
  • 「設定」→「ルーティング設定」でルーティングモードを確認
  • モバイルデータとWi-Fiでそれぞれ3回テストする
  • 必要に応じてアプリごとのプロキシを有効にし、バックグラウンド通信を抑える

同じノードのパラメータを両端末でそろえると、プロトコル設定、端末のネットワーク、クライアント設定のどこに問題があるかを切り分けやすくなります。

用途別の結論

  1. モバイル通信の主力: サーバーがVLESSと適合する安全な伝送方式を提供している場合は、まずVLESSを試し、回線切り替え後の復旧とバックグラウンド維持を確認します。
  2. 家庭用回線の常用: VLESSとTrojanはいずれも安定した選択肢になり得ます。同じ回線、同じ時間帯で少なくとも3回比較してください。
  3. 旧型Android端末: 安定性を確認済みのShadowsocksまたはVMessを優先して残し、必要のない同時接続や複雑なルールは有効にしません。
  4. 旧サブスクリプションの移行: まず完全にインポートし、プロトコル項目を一括で手作業変更しないでください。新旧ノードの接続を確認してから、無効な設定を1つずつ整理します。

v2rayN、v2rayNG、v2flyNGでパラメータを確認

サブスクリプションをインポートしたら、すぐにノードを変更しないでください。サブスクリプションには、プロトコル、アドレス、ポート、ユーザーID、パスワード、伝送方式、パス、Host、SNI、フィンガープリント、フロー制御などが含まれる場合があります。ノード名に表示された項目を実際の設定だと思って手動変更すると、「同じように見えるのに接続できない」状態になりやすくなります。

v2rayNでは、まず「サブスクリプショングループ」→「すべてのサブスクリプションを更新」を実行し、ノードを選択して設定詳細を確認します。続いて「設定」→「パラメータ設定」を開き、ローカルSOCKSとHTTPの待ち受けポートが他のプログラムに使われていないか確認します。例として10808と10809を使う場合、システム上の他のプロキシツールが同じアドレスとポートを同時に待ち受けることはできません。

v2rayNGでは、右上の追加メニューからクリップボード内のリンクを1件インポートしたり、サブスクリプショングループにサブスクリプションアドレスを追加したりできます。接続前に現在の有効な設定を確認し、接続後はリアルタイムログを開きます。v2flyNGはv2flyコアを使用するため、新しいVLESS拡張設定をインポートする際は、提供元が示すコア要件を確認してください。異なるコアがすべての拡張項目に完全対応しているとは限りません。

確認手順
1. protocol:vmess / vless / trojan / shadowsocks
2. address:サーバーのドメイン名またはアドレス
3. port:サーバーの待ち受けポート(例: 443)
4. credential:UUID、パスワード、またはShadowsocksキー
5. transport:tcp / ws / grpc
6. security:tls / reality / サーバー指定値
7. serverName:TLSまたはRealityで使用するサーバー名
8. path または serviceName:該当する伝送方式で必要な場合のみ入力

接続エラーはログの種類ごとに確認

  1. 接続タイムアウト: まずアドレス、ポート、現在のネットワーク、サーバーの状態を確認します。タイムアウトは通常、プロトコルセッションの確立前に発生します。
  2. 認証失敗: UUID、パスワード、暗号化方式、端末の時刻を確認します。VMess設定では特に、最初にシステムの自動時刻合わせを有効にしてください。
  3. TLSハンドシェイク失敗: ドメイン、SNI、システム時刻、証明書チェーンを確認します。Trojanだけでなく、TLSを使うVLESSやVMessでも発生する可能性があります。
  4. 接続できるのに通信がない: システムプロキシ、VPN権限、DNS、ルーティング規則、アプリごとのプロキシ範囲を確認し、すぐにプロトコルを変更しないでください。
  5. サブスクリプション更新後にノードが消えた: まず現在のサブスクリプショングループとフィルター条件を確認し、次に配信元が新しいノード一覧を返しているか確認します。

一度きりの最高値ではなく、再現性のあるテストで判断する

プロトコルのテストでは、回線やサーバー負荷の違いをできるだけ排除します。最も確実なのは、同じサーバー、同じ出口帯域、近い設定で比較する方法です。条件がそろわない場合は、「この具体的なノードの結果」として結論を限定し、プロトコル全体の一般論に広げないでください。

初回データ到達までの時間は、単純なネットワーク往復時間よりもブラウジング体験に近い指標です。キャッシュされていないページを3つ連続で開き、リクエスト開始から本文が表示されるまでの時間を記録します。動画や大容量ファイルでは、継続スループットと1分間の速度変動を確認します。モバイル通信では、Wi-Fiとモバイルデータを切り替えるテストも追加してください。

テスト中は他のダウンロードを停止し、DNSとルーティングモードを固定し、各回の開始前に有効なノードを確認します。少なくとも3回実施し、最高値ではなく中央値を使います。3回の結果の差が30%を超える場合は、プロトコルの違いを急いで疑わず、回線混雑、電波の変動、サーバー負荷を優先して確認します。

  1. サブスクリプションを更新し、ノードのプロトコル、アドレス、ポート、伝送方式、セキュリティ層を記録する。
  2. クライアント、ネットワーク、ルーティングモードを固定し、3回連続で接続して成功回数を記録する。
  3. DNS名前解決、初回データ到達、継続ダウンロード、回線切り替え後の復旧状況をそれぞれ記録する。
  4. ログに再試行、ハンドシェイク失敗、接続リセット、DNSタイムアウトがないか確認する。
  5. 安定して動作するノードを2つ残し、1つをメイン、もう1つを障害時の切り替え用にする。
指標 テスト方法 確認するポイント
接続成功率 各ノードに5回連続で接続する タイムアウトやハンドシェイク失敗の有無
初回データ到達時間 キャッシュされていないページを3つ開き、中央値を求める 普段のブラウジングで待ち時間が安定しているか
継続スループット 同じ対象へ60秒間連続転送する 速度が頻繁にゼロになったり大きく変動したりしないか
回線切り替え後の復旧 Wi-Fiとモバイルデータを3回切り替える 手動で接続を再起動する必要があるか
端末への負荷 15分間連続稼働した後に確認する 発熱、消費電力、バックグラウンドでの動作状況

プロトコル選びでよくある質問

プロトコルに関する問題の多くは、パラメータの不一致、コアの非対応、時刻の誤り、TLS名の誤設定、ローカルルーティングの異常に分類できます。まずエラーの種類から原因を絞り、プロトコルを変更するか判断するほうが、手当たり次第にノードを替えるより効果的です。

VLESSは必ずVMessより速いですか?

必ずしもそうではありません。まず2つのノードが同じサーバー、同じ回線にあるか確認し、伝送方式、ルーティング、テスト時間を固定します。3〜5回連続でテストして中央値を比較してください。サーバーが異なる場合、その結果でプロトコル自体の速さを証明することはできません。

VMessノードが突然すべて認証失敗になった場合は?

まずシステムの日付と時刻の設定で自動時刻合わせを有効にし、誤差を30秒以内に抑えます。その後サブスクリプションを更新してコアを再起動します。それでも失敗する場合は、UUID、ポート、サーバー側の設定が変更されていないか確認してください。

Trojanで証明書またはTLSハンドシェイクエラーが出た場合の確認方法は?

システム時刻、サーバーのドメイン、ポート、SNIを順番に確認します。サブスクリプションでドメイン名が指定されている場合は、IPに変更しないでください。同じネットワーク上の複数のクライアントで同時に失敗するなら、サーバーの証明書状態とドメインの名前解決結果を確認します。

Shadowsocksのインポート後に暗号化方式がサポートされていないと表示された場合は?

ノードに設定された暗号化方式の名前を確認し、現在のクライアントコアがその方式に対応しているか確認します。サーバーとクライアントは完全に一致する必要があるため、別の方式に勝手に置き換えないでください。正しい対処は、コアを更新するか、サーバー側に互換性のある設定を提供してもらうことです。

同じサブスクリプションがv2rayNでは使えるのにv2rayNGでは使えない場合の切り分け方法は?

まず両端末のノード詳細で、プロトコル、ポート、伝送方式、SNI、パス、フロー制御の項目を比較します。次にAndroid側のVPN権限、プライベートDNS、アプリごとのプロキシ、バッテリー制限を確認します。パラメータが一致している場合は、同じ時刻に両端末からコアのエラー内容を出力し、さらに比較してください。

V2Rayクライアントをダウンロード お使いのシステムに合うインストーラーを選択