この記事は、V2Rayエコシステムの名称を整理したい方、v2rayNやAndroidクライアントを選びたい方、カーネルの互換性を確認したい方に適しています。Project Vの位置づけ、V2FlyとXrayの関係を理解し、プロトコルと利用プラットフォームに合うクライアントを選べるようになります。
まず4つの層に分ける:プロジェクト、カーネル、プロトコル、クライアント
これらの名称が混同されやすいのは、同じ技術レイヤーに属していないためです。Project Vは初期のプロジェクト体系やエコシステムを指す名称に近く、V2FlyはV2Rayを引き継いで保守するコミュニティとプロジェクト群です。Xrayは同じ技術系譜から発展したカーネルファミリーで、v2rayN、v2rayNG、v2flyNGはユーザーが直接操作するGUIクライアントです。
接続の確立、ルーティング規則の解析、インバウンドとアウトバウンドの処理を実際に担うのはカーネルです。GUIクライアントはサブスクリプションの保存、設定の生成、カーネルの起動、ログの表示を行い、システムプロキシやVPNモードなどの操作窓口を提供します。クライアント名に「v2ray」と含まれていても、動作するカーネルが1種類だけとは限らず、同じプロトコル名でも利用できるパラメータが完全に同じとは限りません。
- プロジェクト体系:コード、ドキュメント、コミュニティの協業、周辺ツールを含む全体の範囲を指します。
- プロキシカーネル:設定を読み込み、接続を処理します。例としてV2Ray CoreやXray-coreがあります。
- プロキシプロトコル:クライアントとサーバー間でデータを交換する方法を定めます。例としてVMess、VLESS、Trojanがあります。
- 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の動作確認 |
プラットフォームを確認
デスクトップではまずv2rayNを確認し、Android端末では必要なカーネルに応じてv2rayNGまたはv2flyNGを選びます。
プロトコルを確認
サブスクリプションのノード詳細を開き、VMess、VLESS、Trojanの別に加え、TCP、WebSocket、gRPCなどのトランスポートパラメータを記録します。
カーネルを確認
v2rayNで「設定」→「パラメータ設定」→「Coreタイプ」と進み、現在の設定をどのカーネルが実行するか確認します。
サブスクリプションを更新
カーネルを切り替えた後は、該当するサブスクリプショングループを再更新し、古いキャッシュから生成されたサーバー設定を使い続けないようにします。
ログを確認
接続後、ログで起動バージョン、待受ポート、ハンドシェイクエラーを確認します。未知のフィールドが表示された場合は、まずカーネルの対応状況を確認してください。
VMess、VLESS、Trojanとカーネルは別の概念
VMess、VLESS、Trojanはアウトバウンド接続で使用するプロトコルの種類であり、Xray-coreやV2Ray Coreはそれらを実行するプログラムです。プロトコル名が同じでも、設定の大枠が共通することしか意味しません。実際にインポートして接続できるかは、カーネルのバージョン、トランスポートの組み合わせ、クライアントがサブスクリプションの項目を完全にカーネル設定へ変換できるかどうかに左右されます。
VMess設定には通常、UUID、サーバーポート、暗号化フィールド、トランスポートパラメータが含まれます。古い設定には追加のIDが含まれる場合がありますが、現在の設定では通常alterId: 0を使用します。VLESSはVMessの認証構造に依存せず、TLS、Reality、TCP、WebSocket、gRPCなどと組み合わせて使われることが多くあります。Trojanは通常パスワードフィールドを使用し、TLSやサーバー名と組み合わせることが一般的です。
- VMessの場合:UUID、サーバーポート、トランスポートの種類、TLSの有効化を確認し、古いノードでは追加のIDにも注意します。
- VLESSの場合:フロー制御、暗号化フィールド、RealityまたはTLSのパラメータ、現在クライアントで使用中のカーネルを重点的に確認します。
- Trojanの場合:パスワード、サーバー名、証明書のドメインとの対応、トランスポート層の設定を重点的に確認します。
- インポートはできるのに起動できない場合:まずログでunknown field、failed to load config、ポート競合に関するメッセージを探します。
ローカル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モードを同時に有効にすると、システムの接続入口を奪い合うため避けてください。
- まずプラットフォームで絞り込む:デスクトップではv2rayNを使い、Androidではv2rayNGとv2flyNGから選びます。
- 次にカーネル要件で絞り込む:サブスクリプションの説明とノードパラメータを確認し、特定のフロー制御、トランスポート、バージョン要件がないか確認します。
- ローカルの既定ポートを使用する:ポート競合がなければ、まず10808と10809を使うと、一般的な手順で問題を切り分けやすくなります。
- 実際の接続を確認する:遅延を測定した後も、実際にWebページを開いてログを確認します。単純なTCPプローブだけでは、プロトコルのハンドシェイク成功は判断できません。
- 動作する組み合わせを記録する:クライアントのバージョン、カーネル系列、サブスクリプショングループ、利用できるノードを記録しておくと、アップグレード後にすぐ比較できます。
結論:選ぶ順番はプラットフォーム、プロトコル、カーネル、ノード
まず端末で使えるクライアントを決め、次にサブスクリプションのプロトコルとカーネルの対応状況を確認し、最後にノードの遅延を比較します。この順番なら、カーネルの非互換性を回線障害と誤認するのを防げます。
Project V、V2Fly、Xrayの関係は、名称を暗記する必要はありません。「誰がプロジェクトを保守するのか、誰が設定を実行するのか、どのプロトコルで接続するのか、ユーザーがどのクライアントを操作するのか」を常に分けて考えれば、新しいバージョンやサブスクリプション形式にも自分で対応できます。一般ユーザーにとって重要なのは、プロジェクト名が何度登場するかではなく、現在のクライアントが最終的にどのカーネルを起動したか、そしてそのカーネルがノードのパラメータ一式に対応しているかです。