Project Vのオープンソースエコシステム解説:V2Fly・Xrayコアと各クライアントの関係

Project Vの成り立ちから、V2FlyとXrayのコアの違い、v2rayN・v2rayNG・v2flyNGが採用するコアと選び方を解説します。

この記事の概要

Project Vはツール群の背景にあるエコシステム、V2FlyとXrayは異なるコア開発の系譜、v2rayN・v2rayNG・v2flyNGはユーザー向けのクライアントです。ノードの要件からコアを選び、利用するプラットフォームに合ったクライアントを選ぶのが基本です。プロジェクトの関係、プロトコル対応、設定の確認方法を順に解説し、「サブスクリプションは読み込めたのに接続できない」問題を防ぎます。

1. Project V、V2Ray、コアの違い

Project Vは、単体でインストールするデスクトップソフトではなく、プロキシツールを中心としたプロジェクト群です。その中核となるV2Rayは、接続の受け入れ、ルーティング、プロトコル処理、外部への接続を担います。「V2Ray」は一連のクライアント利用環境を指す通称として使われることもあり、文脈によってコアそのものや、ノードの種類を指す場合があります。

コアには通常、サブスクリプションを管理するための画面はありません。クライアント上でサーバーを選び、システムプロキシを切り替えたりルーティングを編集したりすると、その設定をコアが読み込める形式に変換して、該当するプロセスを起動します。この2つの層を区別すれば、画面の設定とプロトコルのログのどちらを調べるべきか判断できます。

2. V2FlyとXray:共通のルーツと異なる開発の系譜

V2Flyは、V2Rayの開発を引き継ぐコミュニティプロジェクトです。2020年前後にコミュニティでのメンテナンスが進み、現在よく知られるV2Flyの系譜が形づくられました。同じ頃、XrayはV2Rayのコードを基盤とするフォークとして開発が始まり、その後は独自のプロトコル実装、トランスポート方式、設定機能を発展させてきました。共通の歴史はありますが、同じプログラムの別テーマではなく、一方をインストールすればもう一方に自動で切り替わるわけでもありません。

違いを見極めるには、名前だけでなく具体的な機能を確認しましょう。VMessとVLESSはプロトコル、WebSocketはトランスポート方式、TLSとREALITYは接続のセキュリティ層に関わり、XTLS VisionはXrayのフロー制御方式です。それぞれ異なる層に属するため、「VMessとREALITYのどちらが優れているか」のような比べ方はできません。

Xray Core

おすすめ

ノードでVLESS、REALITY、Visionの組み合わせが明示されている場合は、対応する機能を備えたバージョンのXrayを選びましょう。選択の基準は設定との互換性であり、あらゆるネットワーク環境での速度を保証するものではありません。

おすすめのユーザー:サーバー側でXrayが指定されている方、またはノードにREALITYやVisionのパラメーターが含まれる方。

V2FlyがメンテナンスするV2Ray Core

従来のV2Ray設定体系を使い続ける環境に適しています。既存のVMess、WebSocket、TLSノードが利用できるかどうかは、現在のコアのバージョン、トランスポートの対応状況、サーバー側のパラメーターを確認してください。プロトコル名だけでは判断できません。

おすすめのユーザー:V2Flyを使った環境がすでに安定しており、設定やメンテナンスの方法を変えずに使い続けたい方。

VLESSという名前だけで、2つの系譜を区別することはできません。基本的なプロトコルへの対応と、特定の組み合わせへの対応は別です。VLESSを認識できても、REALITYやxtls-rprx-visionを処理できるとは限りません。同様に、V2Rayのv4形式の設定とv5の設定体系を混在させるのも避けましょう。オンラインで見つけたJSONの断片を使う前に、対象のコアと設定形式を確認してください。

選び方の結論:まずノードの項目を確認し、それからコアを選ぶ

ノードにREALITYの公開鍵、short ID、Visionのフロー制御要件が含まれる場合は、クライアントで使用中のXrayがそれらの項目を処理できるか、まず確認しましょう。現在のV2Fly設定が問題なく動作しているなら、プロジェクト名が変わったという理由だけで移行せず、既存の環境を維持するのがおすすめです。

3. 3つのクライアントが使用するコア

クライアント名が似ていても、実装が同じとは限りません。デスクトップ版のv2rayNは複数のコアを管理できますが、選択できるコアはバージョン、プラットフォーム、インストール済みの内容によって異なります。Android版のv2rayNGはXrayをコアとし、v2flyNGはV2FlyがメンテナンスするV2Rayコアを採用しています。アプリとコアはバージョン番号が別々なので、機能を比べるときはそれぞれ記録しましょう。

クライアント プラットフォーム コアとの関係 選択の目安
v2rayN Windows / macOS / Linux 複数のコアを管理可能。実際の対応状況はバージョンとインストール済みのコアによって異なる デスクトップでサブスクリプション、システムプロキシ、ルーティングを管理したい場合
v2rayNG Android Xrayコア ノードがXrayの機能を必要とする場合、またはAndroidで該当する設定を管理したい場合
v2flyNG Android V2FlyのV2Rayコア ノードと設定をV2Flyの系譜に合わせて管理している場合

v2rayNでは、ノード編集画面のプロトコルとトランスポートの項目に加え、実行ログに表示されるコア名も確認しましょう。画面に選択肢が表示されても、現在選択中のコアで実行できるとは限りません。逆に、コアが機能に対応していても、クライアントが設定を正しく生成しなければ利用できません。

  1. クライアントの完全なバージョン番号を記録し、起動ログからコア名とバージョン番号も控えましょう。「最新版」とだけ記録するのは避けてください。
  2. ノード編集画面を開き、アドレス、ポート、ユーザーID、トランスポート方式、安全性の設定を確認し、読み込み時に項目が失われていないか確かめます。
  3. 接続を再起動し、ログから設定の解析失敗、ハンドシェイクの失敗、接続確立後のアクセス問題のどれに該当するか確認します。

4. サブスクリプションを共用できても、ノードや設定がすべて共通とは限らない

サブスクリプションURLはノード情報を配布するための入口であり、プロキシプロトコルではありません。内容には共有リンクが含まれる場合も、クライアントが対応する別の形式が使われる場合もあります。同じURLを読み込めたとしても、それは配布形式を受け付けたということにすぎません。解析後にすべての項目が維持されるか、各ノードを利用できるかは、個別に確認が必要です。

たとえば、リモートポートが443のVLESSノードで、特定のserver name、公開鍵、short ID、xtls-rprx-visionが指定されている場合を考えてみましょう。サーバーアドレスとユーザーIDが正しくても、必須パラメーターが1つ欠ければ接続に失敗することがあります。また、ポート443だからといって通常のTLSとは限りません。ノードに明記されたセキュリティ方式を確認してください。

設定例:デスクトップとAndroidで同じサブスクリプションを個別に検証

デスクトップ:v2rayN
  • まずサブスクリプションを更新し、必要なパラメーターがそろったノードを1つ選んで基準にします。
  • ノードの要件に合わせてコアを選び、起動ログに記録された実際のコアのバージョンを控えます。
  • システムプロキシの利用とルーティングルールをそれぞれ確認し、複数のトラフィック転送方式を同時に有効にしないようにします。
Android:v2rayNGまたはv2flyNG
  • ノードに必要な機能に合わせてクライアントを選び、サブスクリプションを読み込みます。
  • システムのVPN権限を確認し、対象アプリがアプリごとのルールで除外されていないか確認します。
  • 同じノードで再テストし、端末側のDNS設定とルーティング設定を個別に確認します。

サブスクリプションを共用すればノードの登録作業を減らせますが、更新のタイミング、ローカルルーティング、DNS、アプリごとの設定は各端末で管理する必要があります。

デスクトップ版からエクスポートした実行設定一式を、そのままAndroidでも使える共通設定と考えないでください。ローカルのファイルパス、待ち受けアドレス、インバウンドポート、トラフィックの転送方式が異なる場合があります。端末間で移行するときは、まずノード情報を移し、各プラットフォームの画面でローカル設定をやり直しましょう。サブスクリプションURLにはアクセス情報が含まれるため、公開のスクリーンショットや質問文に貼り付けないでください。

5. コアの変更後に接続できないときの切り分け

コアを変えた後にアクセスできなくなっても、すぐに「新しいコアが不安定」と決めつけることはできません。同じノードでも生成されるパラメーターが異なる場合がありますし、ローカルの入口、システムプロキシ、DNSの設定が変わっただけかもしれません。まずは端末、ノード、接続先URLを固定し、毎回1つの項目だけを変更して再現性のある環境を作りましょう。

  1. 設定を読み込めるか確認します。ログに未対応の項目や設定の解析エラーが表示された場合は、まずコアの種類と設定形式を確認しましょう。サーバーのポートを何度も変えて解決を試みるのは避けてください。
  2. ローカルの待ち受けを確認します。たとえば、ローカルのSOCKS入口を127.0.0.1:10808に明示的に設定した場合、アプリ側でも実際にその入口を使う必要があります。これは切り分けの例であり、すべてのバージョンのデフォルトポートを示すものではありません。
  3. リモートとのハンドシェイクを確認します。サーバーアドレス、ポート、端末の時刻、安全性に関するパラメーターを確認します。Visionを使う場合はflowの項目を、REALITYを使う場合はサーバーが指定する公開鍵とserver nameを確認してください。
  4. アプリの通信経路を確認します。デスクトップのシステムプロキシが影響するのは、主にシステムプロキシ設定に従うアプリです。AndroidではVPNの接続状態とアプリごとの対象範囲も確認してください。
  5. 最後にDNSとルーティングを確認します。接続できているのに一部のドメインにアクセスできない場合は、ルールが直接接続とプロキシのどちらを選んでいるかを確認し、ローカルでの名前解決とプロキシ側での名前解決を切り分けます。

レイテンシーテストでわかるのは、特定の条件で測定した結果だけです。Webページの表示、ダウンロード、長時間接続のテストの代わりにはなりません。2つのコアの系譜を比べる場合は、同じネットワーク環境でそれぞれ3回ずつ試し、接続成功回数、最初のページが開くまでの時間、ログのエラーを記録しましょう。1回のレイテンシーの数値から、どちらかのコアが常に速いと結論づけることはできません。

6. エコシステム選びでよくある質問

ノードに「V2Ray」と書かれています。どのクライアントを使えばよいですか?

まずノードの提供元に、プロトコル、トランスポート方式、安全性に関する設定を確認してください。デスクトップでv2rayNを選んだ場合も、使用するコアの確認が必要です。AndroidでREALITYやVisionが明示的に必要な場合は、該当するXray機能に対応したバージョンのv2rayNGを選びましょう。サブスクリプションの画面にある総称だけで判断しないでください。

v2rayNを更新したのに、プロトコルのパラメーターが未対応と表示されるのはなぜですか?

起動ログを確認し、クライアントとコアのバージョンをそれぞれ記録したうえで、選択したノードがどのコアを使っているか確認しましょう。画面上のアプリを更新しても、外部コアのファイルがすべて置き換わるとは限りません。コアの更新を確認してから接続を再起動し、設定の読み込み段階でエラーが続くかどうかを確認してください。

同じサブスクリプションがv2rayNGでは使えて、v2flyNGでは使えない場合はどうすればよいですか?

まず同じノードを選び、安全性とフロー制御の項目を比較します。項目にXray固有の機能が必要なら、対応するクライアントで使い続けてください。両方が対応する組み合わせであれば、サブスクリプション全体を削除する前に、項目の解析、端末の時刻、VPNの権限を確認しましょう。

コアを切り替えれば、DNSやルーティングの問題も自動で改善しますか?

現在のネットワークに合ったルールが自動で設定されるわけではありません。既存のプリセットを保存し、テスト用のドメインを1つ決めて、適用されるルールと名前解決の経路を確認しましょう。デスクトップではプロキシモードの解説も確認し、アプリの通信が実際にプロキシを経由していることを確かめてからDNSを調整してください。

選び方はシンプルです。ノードが必要とするパラメーターを正しく設定して実行できるコアを選び、端末に必要な接続方式に合ったクライアントを使いましょう。安定している環境を変更するのは、再現性のある問題や明確な新しい要件がある場合に限り、プロジェクトの系譜を性能ランキングとして扱わないでください。

v2rayN をダウンロード