Project V・V2Fly・Xrayの関係とは:オープンソースエコシステムとクライアント対応を整理

Project V、V2Fly、Xray、V2Rayは、サブスクリプションの説明やクライアント設定で頻繁に登場します。プロジェクト、カーネル、プロトコル、GUIクライアントという4つの層を理解すれば、設定を実行するものと選ぶべきクライアントを見分けられます。

この記事の概要

この記事は、V2Rayエコシステムの名称を整理したい方、v2rayNやAndroidクライアントを選びたい方、カーネルの互換性を確認したい方に適しています。Project Vの位置づけ、V2FlyとXrayの関係を理解し、プロトコルと利用プラットフォームに合うクライアントを選べるようになります。

まず4つの層に分ける:プロジェクト、カーネル、プロトコル、クライアント

これらの名称が混同されやすいのは、同じ技術レイヤーに属していないためです。Project Vは初期のプロジェクト体系やエコシステムを指す名称に近く、V2FlyはV2Rayを引き継いで保守するコミュニティとプロジェクト群です。Xrayは同じ技術系譜から発展したカーネルファミリーで、v2rayN、v2rayNG、v2flyNGはユーザーが直接操作するGUIクライアントです。

接続の確立、ルーティング規則の解析、インバウンドとアウトバウンドの処理を実際に担うのはカーネルです。GUIクライアントはサブスクリプションの保存、設定の生成、カーネルの起動、ログの表示を行い、システムプロキシやVPNモードなどの操作窓口を提供します。クライアント名に「v2ray」と含まれていても、動作するカーネルが1種類だけとは限らず、同じプロトコル名でも利用できるパラメータが完全に同じとは限りません。

4層
プロジェクト、カーネル、プロトコル、クライアント
3種類
当サイトで扱うGUIクライアント
10808
一般的なローカルSOCKSポート
10809
一般的なローカルHTTPポート
  1. プロジェクト体系:コード、ドキュメント、コミュニティの協業、周辺ツールを含む全体の範囲を指します。
  2. プロキシカーネル:設定を読み込み、接続を処理します。例としてV2Ray CoreやXray-coreがあります。
  3. プロキシプロトコル:クライアントとサーバー間でデータを交換する方法を定めます。例としてVMess、VLESS、Trojanがあります。
  4. GUIクライアント:サブスクリプション、サーバー一覧、ルーティング、カーネル設定を操作しやすい画面にまとめます。

接続は、ユーザーがGUIクライアントでノードを選び、クライアントがサブスクリプションの内容をカーネル設定へ変換し、カーネルがVMess、VLESS、Trojanなどのプロトコルでサーバーへ接続する一連の処理として捉えられます。ブラウザーなどのアプリは通常、127.0.0.1:10808のようなローカルの待受ポートへ接続し、その後カーネルが通信を転送します。

Project V・V2Fly・Xrayの発展関係

Project Vは、この歴史を理解する出発点です。初期には、V2Rayを中核とするネットワークツール群と設計思想をまとめて指す文脈で使われ、V2Ray Coreが最も重要な実行コンポーネントでした。その後、保守体制とコミュニティの協力方法が変化し、V2FlyコミュニティがV2Ray関連のコード、ドキュメント、エコシステムプロジェクトを継続して保守しました。そのため現在「V2Fly」と呼ばれる場合は、通常このコミュニティによる保守路線を指します。

Xrayは、V2Rayの技術エコシステムから発展した別のカーネル路線です。近い考え方のJSON設定、インバウンドとアウトバウンドのモデル、ルーティング規則の構造を受け継ぎながら、トランスポート方式、プロトコル実装、基盤機能を継続的に拡張しています。共通の起源と似た概念は多くありますが、両者は異なるカーネルファミリーであり、バージョン番号、対応パラメータ、リリースの進め方を同一視できません。

名称 主な位置づけ どこで目にするか 確認すべき点
Project V 初期のプロジェクト体系とエコシステム概念 歴史紹介、技術記事、旧版ドキュメント 個別にインストールするGUIクライアントではありません
V2Fly V2Rayのコミュニティ保守路線とプロジェクト群 V2Ray Core、v2flyNG、設定ドキュメント V2Ray Coreのバージョンとパラメータ対応を確認する
Xray 独立して発展したカーネルファミリー Xray-core、v2rayNのカーネル設定、v2rayNG Xray独自、または優先的に実装されるプロトコル機能を確認する
V2Ray コアソフトウェアを指す場合も、エコシステム全体を広く指す場合もあります サブスクリプションの説明、ノード名、クライアント紹介 文脈からカーネルかエコシステムかを確認する

結論:名称の似ていることだけで互換性を判断しない

設定をインポートする前に、ノードのプロトコル、トランスポート層、カーネル要件を確認しましょう。クライアントにノードが表示されても、選択中のカーネルがすべてのパラメータを正しく実行できるとは限りません。

そのため、Xrayを単純に「V2Flyの新バージョン」と呼ぶのは正確ではなく、V2Flyをデスクトップクライアントと考えるのも誤りです。実用的には、V2FlyとXrayは同じ起源を持つエコシステム内の異なる保守路線であり、GUIクライアントは設計上特定のカーネルを固定使用することも、複数のカーネルを切り替えられるようにすることもあります。

v2rayN、v2rayNG、v2flyNGの対応関係

v2rayNはWindows、macOS、Linux向けのデスクトップGUIクライアントです。サブスクリプションのグループ管理、サーバー一覧、ルーティング設定、ログ表示、カーネル管理などに対応しています。v2rayN 7.xの画面構成を例にすると、「パラメータ設定」で現在のCoreタイプを確認できます。バージョンによって選択肢が変わる場合があるため、設定を移行する際はクライアントのバージョンとカーネル系列を併せて記録してください。

v2rayNGはAndroid向けクライアントで、主にXrayカーネルで接続を処理します。VLESS、VMess、Trojanや一般的なトランスポートの組み合わせを含むサブスクリプションに適しています。v2flyNGもAndroid上で動作しますが、V2Fly路線のカーネルを使用するため、V2Ray Coreが明示的に求められる場合や、V2Flyの設定動作を確認したい場合に向いています。

クライアント プラットフォーム カーネルとの関係 主な利用シーン
v2rayN Windows、macOS、Linux デスクトップ上で対応カーネルを管理・選択できます 複数サブスクリプションのグループ管理、まとめての接続速度測定、デスクトップでのルーティング分岐
v2rayNG Android Xrayカーネルを使用 モバイル回線での接続、アプリ単位のルーティング、サブスクリプションのインポート
v2flyNG Android V2Flyカーネルを使用 V2Ray Core設定の実行、V2Flyの動作確認
  1. プラットフォームを確認

    デスクトップではまずv2rayNを確認し、Android端末では必要なカーネルに応じてv2rayNGまたはv2flyNGを選びます。

  2. プロトコルを確認

    サブスクリプションのノード詳細を開き、VMess、VLESS、Trojanの別に加え、TCP、WebSocket、gRPCなどのトランスポートパラメータを記録します。

  3. カーネルを確認

    v2rayNで「設定」→「パラメータ設定」→「Coreタイプ」と進み、現在の設定をどのカーネルが実行するか確認します。

  4. サブスクリプションを更新

    カーネルを切り替えた後は、該当するサブスクリプショングループを再更新し、古いキャッシュから生成されたサーバー設定を使い続けないようにします。

  5. ログを確認

    接続後、ログで起動バージョン、待受ポート、ハンドシェイクエラーを確認します。未知のフィールドが表示された場合は、まずカーネルの対応状況を確認してください。

VMess、VLESS、Trojanとカーネルは別の概念

VMess、VLESS、Trojanはアウトバウンド接続で使用するプロトコルの種類であり、Xray-coreやV2Ray Coreはそれらを実行するプログラムです。プロトコル名が同じでも、設定の大枠が共通することしか意味しません。実際にインポートして接続できるかは、カーネルのバージョン、トランスポートの組み合わせ、クライアントがサブスクリプションの項目を完全にカーネル設定へ変換できるかどうかに左右されます。

VMess設定には通常、UUID、サーバーポート、暗号化フィールド、トランスポートパラメータが含まれます。古い設定には追加のIDが含まれる場合がありますが、現在の設定では通常alterId: 0を使用します。VLESSはVMessの認証構造に依存せず、TLS、Reality、TCP、WebSocket、gRPCなどと組み合わせて使われることが多くあります。Trojanは通常パスワードフィールドを使用し、TLSやサーバー名と組み合わせることが一般的です。

ローカルSOCKS入口:127.0.0.1:10808
ローカルHTTP入口:127.0.0.1:10809
確認順序:クライアントの状態 → カーネルログ → ローカルポート → システムプロキシ → アウトバウンド接続

ポート番号は「ローカル待受ポート」と「リモートサーバーポート」も区別する必要があります。たとえばブラウザーが接続する127.0.0.1:10809はローカルHTTPプロキシの入口で、ノード詳細にある443などのポートはリモートサービスの入口です。両者は場所が異なるため、ローカルポートを変更してもサブスクリプション内のサーバーポートは自動的に変わりません。

よくある名称の誤解と具体的な切り分け方法

エコシステム名の混同は、主に2つの問題を引き起こします。1つは端末のプラットフォームに合わないクライアントをダウンロードしてしまうこと、もう1つはクライアントは正しくても選択したカーネルがサブスクリプションのパラメータを解釈できないことです。切り分けでは、画面の設定からカーネルへと段階的に確認し、同じサブスクリプションを何度も削除・再インポートするのは避けましょう。

v2rayNをインストールすれば、必ずV2Ray Coreが動作しますか?

必ずしもそうではありません。「設定」→「パラメータ設定」→「Coreタイプ」で現在の選択を確認し、起動ログで実際に読み込まれたカーネル名とバージョンを確認してください。

v2rayNGとv2flyNGのサブスクリプションは共通して使えますか?

一般的なVMess、VLESS、Trojanノードはどちらでも認識できる場合がありますが、特定のフロー制御やトランスポートパラメータへの対応はカーネルによって異なります。インポート後はノード詳細を項目ごとに確認し、実際の接続テストを行ってください。

サブスクリプションのインポートは成功したのに、なぜ接続がすぐ切れるのですか?

まずカーネルログを確認します。未知のフィールドが表示されたらCoreタイプを確認し、connection refusedが表示されたらリモートアドレスとポートを確認します。ローカル待受に失敗する場合は、10808または10809が使用中でないか確認してください。

カーネルを変更したらノード一覧を作り直す必要がありますか?

現在のサブスクリプショングループを再更新し、クライアントを再起動することをおすすめします。新しいカーネルの対応状況に合わせて設定が再生成され、古いプロセスやキャッシュがローカルポートを使い続けるのを防げます。

ノード名にXrayと書かれていれば、Xrayしか使えないのですか?

ノード名はサブスクリプション提供者が設定したラベルにすぎません。サーバーの備考だけで判断せず、ノード詳細を開き、プロトコル、トランスポート、フロー制御、TLSパラメータを確認してください。

ログの「カーネルの起動に成功」は、設定が受け入れられて待受を開始したことを示すだけで、リモート接続が完了したことを意味しません。より確実な確認手順は、カーネルプロセスの起動、本地ポートの待受、システムプロキシまたはアプリ内プロキシの有効化、対象サイトへのアクセス、最後に出口アドレスが期待どおり変化したかの確認です。

目的に合わせたカーネルとクライアントの選び方

デスクトップで複数のサブスクリプションを管理し、まとめて実接続の速度測定を行い、直接接続・プロキシ・ブロックのルールを細かく分けたい場合は、v2rayNがより充実した管理画面を提供します。ノードを選ぶ前に、サブスクリプションをグループごとに分けて提供元を整理し、遅延とプロトコルを比較してから、Coreタイプとノード要件が一致していることを確認しましょう。

Android端末で、サブスクリプションの説明がXray向けである場合や、ノードがXray路線で優先的に対応されるパラメータを使う場合は、まずv2rayNGを選びます。V2Flyカーネルを動かしたい場合や、V2Ray Coreの設定動作を再現したい場合はv2flyNGを選んでください。2つのクライアントでVPNモードを同時に有効にすると、システムの接続入口を奪い合うため避けてください。

  1. まずプラットフォームで絞り込む:デスクトップではv2rayNを使い、Androidではv2rayNGとv2flyNGから選びます。
  2. 次にカーネル要件で絞り込む:サブスクリプションの説明とノードパラメータを確認し、特定のフロー制御、トランスポート、バージョン要件がないか確認します。
  3. ローカルの既定ポートを使用する:ポート競合がなければ、まず10808と10809を使うと、一般的な手順で問題を切り分けやすくなります。
  4. 実際の接続を確認する:遅延を測定した後も、実際にWebページを開いてログを確認します。単純なTCPプローブだけでは、プロトコルのハンドシェイク成功は判断できません。
  5. 動作する組み合わせを記録する:クライアントのバージョン、カーネル系列、サブスクリプショングループ、利用できるノードを記録しておくと、アップグレード後にすぐ比較できます。

結論:選ぶ順番はプラットフォーム、プロトコル、カーネル、ノード

まず端末で使えるクライアントを決め、次にサブスクリプションのプロトコルとカーネルの対応状況を確認し、最後にノードの遅延を比較します。この順番なら、カーネルの非互換性を回線障害と誤認するのを防げます。

Project V、V2Fly、Xrayの関係は、名称を暗記する必要はありません。「誰がプロジェクトを保守するのか、誰が設定を実行するのか、どのプロトコルで接続するのか、ユーザーがどのクライアントを操作するのか」を常に分けて考えれば、新しいバージョンやサブスクリプション形式にも自分で対応できます。一般ユーザーにとって重要なのは、プロジェクト名が何度登場するかではなく、現在のクライアントが最終的にどのカーネルを起動したか、そしてそのカーネルがノードのパラメータ一式に対応しているかです。

クライアント入口 各プラットフォームのダウンロードを見る