XrayコアとV2Flyコアの違い|VLESS・XTLS Vision・REALITY対応比較

XrayとV2Flyの分岐の経緯から、プロトコル・トランスポート・設定の互換性を比較。v2rayNGとv2flyNGのコア選びも解説します。

この記事の要点

コア選びでは、VMessやVLESSという名称だけでなく、ノードの設定項目を確認しましょう。REALITYやxtls-rprx-visionが含まれる場合は、まずXrayの対応状況を確認します。一般的なVMess、VLESSとTLSの組み合わせでも、トランスポート方式と設定形式の確認が必要です。デスクトップのコア切り替え、Androidクライアントの選定、サブスクリプションの読み込み後に接続できない場合に向けて、共通して使える項目とそのまま移行できない設定を解説します。

1. 分岐の背景:クライアントの画面とプロキシコアは別のもの

V2Rayはプロキシツールのプロジェクトや関連エコシステムで広く使われる名称です。V2Flyコミュニティが保守するコアプログラムは一般にV2Flyコアと呼ばれますが、実行ファイルには現在もv2rayという名称が使われることがあります。Xrayは2020年にV2Rayからフォークし、その後は独自に開発が進んでいます。設定やプロトコルには共通点がありますが、名称が似ているからといって後発機能まで互換性があるとは限りません。

v2rayN、v2rayNG、v2flyNGはクライアントであり、コアそのものではありません。クライアントはサブスクリプションの解析、ノード編集、ルーティング設定、プロセスの起動を担当し、コアは実際のプロキシ接続を処理します。そのため「画面からノードをインポートできる」ことは、解析に成功したことを示すだけで、実行中のコアがノードの全項目に対応しているとは限りません。

2. プロトコル対応の比較:VLESS対応だけでは機能の違いは分からない

VMessとVLESSはプロキシプロトコル、TCP・WebSocket・gRPCなどはトランスポートの設定、TLSとREALITYは接続のセキュリティ機能です。XTLS VisionはVLESSのフロー制御フィールドで有効にします。選定時は各レイヤーを分けて確認し、「VLESS対応」を「VLESS+REALITY+Vision対応」と同じ意味で捉えないようにしましょう。

確認項目XrayコアV2Flyコア
VMess対応。ただしトランスポートとセキュリティ設定の一致が必要対応。古い設定では認証方式とバージョンの互換性を確認
基本的なVLESS対応対応。ただしXray独自の拡張にも対応するとは限らない
XTLS Vision該当するVLESSフロー制御に対応Xrayのxtls-rprx-visionフロー制御には非対応
REALITY対応。クライアントとサーバーのパラメーターを一致させる必要ありXrayのREALITY設定には非対応
WebSocket、gRPC一般的な設定に対応。バージョンと組み合わせの制限を確認一般的な設定に対応。各項目はこのコアのドキュメントに沿って記述
JSON設定独自の設定構造と拡張フィールドを使用従来の設定形式とV5設定形式を区別する必要あり

表の「対応」は該当機能を備えていることを示すもので、どのバージョンでも同じ設定を読み込めるという意味ではありません。特にトランスポート名、フィンガープリントの選択肢、拡張フィールドは、実際にインストールされているコアのバージョンに合わせてください。クライアントを更新しても古いコアを呼び出している場合、画面に追加された項目が起動時に拒否されることがあります。

3. XTLS VisionとREALITY:それぞれの設定項目を確認

XTLS Visionで一般的に使われるフロー制御値はxtls-rprx-visionで、XrayのVLESS設定ではflowフィールドに指定します。独立したノードプロトコルではなく、あらゆるトランスポート方式に追加できる「高速化スイッチ」でもありません。WebSocketやgRPCのノードにVisionのフロー制御をそのまま設定しないでください。サーバーが明示しており、コアが対応している組み合わせを使用します。

REALITYは接続のセキュリティ設定であり、VLESSのユーザー認証を置き換えるものではありません。一般的なVLESS+REALITYノードではユーザーIDに加え、サーバー名、公開鍵、Short ID、クライアントのフィンガープリントなどが必要です。通常のTLSにおける証明書のドメイン確認だけでは、REALITYの設定を十分に検証できません。また、「証明書の検証をスキップ」を選ぶだけでREALITYが有効になるわけではありません。

  1. プロトコルを確認:ノード編集画面でVLESSが選択されていることを確認します。ノードの備考だけでプロトコルを判断しないでください。
  2. フロー制御を確認:サーバーがVisionを指定している場合、「フロー制御」がxtls-rprx-visionになっているか確認します。サーバーから指定されていない場合は追加しないでください。
  3. セキュリティ方式を確認:サーバーがREALITYの場合は、該当するセキュリティ方式を選択します。通常のTLSのままにしないでください。
  4. パラメーターを個別に確認:「サーバー名」またはSNI、「公開鍵」、Short ID、「フィンガープリント」が提供元の情報と一致しているか確認します。Short IDを空欄にできるかどうかはサーバー側の設定によります。
  5. 接続ログを確認:未対応フィールドのエラーが出た場合は、まずコアとの互換性を確認します。ハンドシェイクに失敗した場合は、パラメーター、時刻、ネットワークへの到達性を調べます。

4. ポートとJSON:コア切り替え時に混同しやすい点

ローカルの待ち受けポートとリモートサーバーのポートは別のものです。以下ではローカルプロキシポートの例として10808、リモートサーバーのポートの例として443を使用しますが、どちらも固定値ではありません。実際の設定では、クライアントの「設定」→「パラメーター設定」にあるローカル待ち受け項目と、ノード編集画面のサーバーポートを確認してください。画面のバージョンによってメニュー名が異なる場合があります。

10808
ローカルプロキシの待ち受けポート例
443
リモートサーバーのポート例。ノードの設定に合わせてください

設定を移行するとき、inboundsはローカルからの接続を、outboundsは接続先を、routingはトラフィックの出力先を指定します。どちらのファイルにも同じ名称があるからといって、JSON全体に互換性があるとは限りません。V2FlyのV5設定形式は従来の形式と構造が異なります。また、XrayのrealitySettingsなどの拡張を、そのままV2Flyに渡すことはできません。

ログに未知のフィールドが示された場合は、まず切り替え先のコアと設定形式を確認してください。リモートポートを次々に変更する必要はありません。ローカルアドレスが使用中と表示された場合は、待ち受けの競合を解消します。コアが正常に起動してから、リモートとのハンドシェイクやネットワーク接続を確認してください。

5. クライアントの選び方:名前ではなくノードの機能で選ぶ

REALITYまたはVisionを含むノードでは、Xrayを優先して選びます。通常のVMessまたは基本的なVLESSのみであれば、どちらのコアでも要件を満たす可能性があります。その場合はサーバーのパラメーター、既存の設定、保守のしやすさを考慮し、特定のコアのほうが必ず速いと決めつけないでください。通信速度は回線、混雑、経路、サーバー負荷にも左右されるため、コア名だけから一定の向上率を示すことはできません。

Xrayコア

おすすめ

ノードでREALITYまたはxtls-rprx-visionを使用する場合は、該当フィールドに対応したバージョンのXrayを選びます。デスクトップでは実際に呼び出されるコアを確認してください。Androidではv2rayNGを選び、内蔵コアの対応状況も確認します。

適した用途:VLESS+REALITY、Visionノード、既存のXray設定を使う環境。

V2Flyコア

サーバーがV2Flyの設定を明示し、Xray拡張に依存しない場合は、対応する設定体系を引き続き利用できます。Androidではv2flyNGを選び、移行前に設定形式、トランスポート設定、サブスクリプションの解析結果を確認してください。

適した用途:既存のV2Fly環境、一般的なVMessまたは基本的なVLESSノードの保守。

設定例:同じサブスクリプションでも両方の対応状況を確認

デスクトップ:v2rayN
  • 「サブスクリプショングループの設定」からサブスクリプションURLを追加します。
  • 更新後、ノードのプロトコル、フロー制御、セキュリティ方式を確認します。
  • ノードを起動し、ログで実際のコアを確認します。
Android:コアに合わせて選択
  • Xray拡張が必要な場合はv2rayNGを選びます。
  • V2Flyの設定を引き続き使う場合は、v2flyNGの対応範囲を確認します。
  • インポート後にノード編集画面を開き、設定項目が保持されているか確認します。

同じサブスクリプションURLを使っても、両方のクライアントで利用可能なノードが完全に一致するとは限りません。サブスクリプションの形式、パーサー、内蔵コアによって結果が変わります。

6. 移行後の確認:一度に変更するのは1項目

V2FlyからXrayへ、またはその逆に移行する場合は、必要なパラメーターがそろったノードを1つ使って動作を確認します。DNS、ルーティングルール、TUN、サーバーアドレスを同時に変更しないでください。接続に失敗したとき、プロトコルの問題かトラフィックの入口の問題か判断しにくくなります。システムプロキシで接続できている場合、コアのテストのためだけにTUNを有効にする必要はありません。

  1. 基準となる設定を記録:元のノードのプロトコル、トランスポート、セキュリティ方式、リモートポート、ローカル待ち受けポートを記録します。ユーザーIDやサブスクリプションURLは公開しないでください。
  2. 互換性のあるノードを選択:V2Flyへ戻す場合、REALITYやVisionに依存する元のパラメーターは使えません。サーバーが提供する互換性のあるノードを入手してください。
  3. 設定を作り直して起動:切り替え先のクライアントでノード編集画面を開いてパラメーターを入力し、ログで設定が受け入れられ、コアが動作し続けていることを確認します。
  4. トラフィックの入口を確認:デスクトップではシステムプロキシが現在の待ち受けポートを指しているか確認します。Androidではプロキシサービスが起動していることを確認してから、ブラウザーで実際にアクセスします。
  5. ルーティング設定を戻す:基本接続ができた後で、分岐ルール、DNS、アプリごとの設定を戻します。一度に戻すのは1グループにし、問題が起きたら該当するログをすぐ確認してください。

調査に必要な情報を共有するときは、エラーの種類と必要なフィールド名だけを切り取ってください。サブスクリプションURL、ユーザーID、秘密鍵などの認証情報を公開画像に含めてはいけません。必要なのは「どのコアで、どのフィールドが、どの段階で失敗したか」であり、ノードの認証情報一式ではありません。

7. よくある質問:インポート・起動・接続を分けて確認

v2flyNGでVLESSをインポートできるのに、REALITYノードへ接続できないのはなぜですか?

VLESSプロトコルへの対応とREALITYへの対応は別です。ノード編集画面でセキュリティ方式を確認してください。REALITYが必要なノードでは、対応するXrayクライアントを使い、公開鍵、サーバー名、Short IDを再確認します。アドレスとユーザーIDだけでは接続できません。

v2rayNでコアを切り替えた後にflowが非対応と表示されます。空欄にしてもよいですか?

まず、サーバーがxtls-rprx-visionを要求しているか確認してください。このフロー制御が必要な場合は、対応するXrayコアを使い、トランスポートの組み合わせも確認します。flowを空欄にすると、クライアントとサーバーのパラメーターが一致しなくなる可能性があります。サーバーから通常のVLESS設定が明示されている場合に限り、その設定に従って入力し直してください。

互換性のため、VMessノードではV2Flyを固定で使う必要がありますか?

必要ありません。どちらのコアもVMessに対応しています。ノード編集画面でアドレス、ポート、ユーザーID、トランスポート方式、WebSocketパスまたはgRPCサービス名、TLSのサーバー名を確認してください。古いノードでは、認証設定が現在のコアに適合するかも確認します。問題の原因をコアのブランドだけに決めつけないでください。

ログにエラーがないのにウェブページが開けません。コアの選択を間違えたのでしょうか?

まず、ログに実際の接続記録があるか確認してください。デスクトップではタスクトレイのメニューでシステムプロキシの状態を確認し、ローカルポートも調べます。Androidではサービスが動作し続けていることを確認してください。トラフィックがコアに届いている場合は、DNS、ルーティングの適用状況、リモートとのハンドシェイクログを確認します。ウェブページが開けないという理由だけで、コアを何度も切り替えないでください。

選択の手順は、ノードのプロトコル、トランスポート、セキュリティ方式、フロー制御を確認し、次にクライアントがそれらの項目をすべて保持できるかを確かめ、最後に実際のコアを確認する、という流れです。REALITYとVisionはXrayを選ぶ明確な理由になります。一般的なVMessや基本的なVLESSでは、名称だけで互換性を判断せず、設定の一致とログで確認してください。

v2rayNのダウンロード