Project Vのオープンソースエコシステムを解説:V2Fly・Xrayコアとv2rayN・v2rayNGの違い

Project Vの誕生からV2Flyコミュニティによる保守、Xrayの派生までを解説。コアとGUIクライアントの役割を整理し、v2rayNGとv2flyNGのコアの違いを紹介します。

この記事の要点

Project Vはプロジェクト全体を指し、V2FlyはV2Rayを保守するコミュニティ、XrayはV2Rayから派生した独立コアプロジェクトです。v2rayN、v2rayNG、v2flyNGはユーザーが操作するクライアントです。クライアント選びやサブスクリプションの移行、プロトコル互換性の確認をする際は、まず名称が指す階層を整理し、ノードの設定に合うコアを選んでログで接続を確認しましょう。名前だけで利用可否を判断するのは避けてください。

Project V・V2Ray・V2Flyとは

Project Vは当初、モジュール型のネットワークプロキシツールを中心に展開され、V2Rayはその中でも中心的でよく知られた実装でした。単一のプロキシプロトコルではなく、インバウンド、アウトバウンド、ルーティング、DNS、トランスポートをまとめて扱うツールです。「V2Rayノード」は事業者が特定の接続設定を指して使う総称であることが多く、それだけではVMessかVLESSかを特定できません。

V2FlyはV2Rayの保守と開発を続けるコミュニティです。コミュニティ名とプログラム名は区別しましょう。V2Flyが保守するコアプログラムは、通常V2Rayまたはv2ray-coreと呼ばれます。クライアントの説明に「V2Flyコア」とある場合は、一般にこの保守体制のもとで開発されるコア実装を指し、V2Flyという別のネットワークプロトコルがあるわけではありません。

名称・位置づけ・確認ポイント
名称位置づけ主な役割名前だけでは判断できないこと
Project Vプロジェクト群モジュール型ネットワークプロキシツールを中心とするプロジェクトの背景特定のサブスクリプションが使えるかどうか
V2Rayコアプログラム・プロジェクト名接続、プロトコル、ルーティング、DNSなどの設定を処理同じ名前のクライアントがすべて同じコアを使うかどうか
V2Flyコミュニティ・保守体制V2Rayコアと関連ドキュメントの保守ノードで使われているプロトコル
Xray独立したコアプロジェクト派生元をもとにプロトコルやトランスポート機能を継続開発あらゆる設定をそのまま別のコアで使えるかどうか
v2rayN、v2rayNG、v2flyNGGUIクライアントノードのインポート、サブスクリプション管理、設定生成、コアの起動クライアント名だけで全機能が分かるかどうか

つまり、「V2Flyとv2rayNのどちらが優れているか」という問いは、保守コミュニティとGUIクライアントという異なる階層を混同しています。確認すべきなのは、現在のv2rayNがどのコアを呼び出しているか、そのコアがノード指定のプロトコル、トランスポート、安全性の設定に対応しているかです。

XrayとV2Rayの関係:共通の基盤があっても設定が共通とは限らない

Xrayは2020年にV2Rayのコードを基盤として分岐し、その後、独自のリリースと機能開発を進めています。技術的な出自が共通しているため、設定にはインバウンド、アウトバウンド、ルーティングなど似た概念が見られます。ただし、すべてのフィールド、トランスポート設定、プロトコル拡張が同じように実装されているわけではありません。

互換性を判断するときは、「V2Ray対応」という表記だけを見るのではなく、ノードの設定を要素ごとに確認しましょう。VMessとVLESSはプロトコル、TCPやWebSocketなどはトランスポート関連の設定、TLSとREALITYは接続のセキュリティ機構です。REALITYはVMessやVLESSと並ぶプロキシプロトコルではなく、VLESSを使えば自動的にトランスポートが暗号化されるわけでもありません。

同様に、JSONを解析できたとしても、構文や一部のフィールド構造が検証を通ったにすぎず、サーバーとのネゴシエーションに成功したとは限りません。移行時は起動ログと接続ログを確認しましょう。設定フィールドを認識できない、ハンドシェイクに失敗する、接続がタイムアウトする、といった症状では調査すべき箇所が異なります。

v2rayN・v2rayNG・v2flyNGの選び方

v2rayNはデスクトップ向けクライアントで、サブスクリプション管理、ノード選択、システムプロキシ、設定生成などを担います。実際の接続処理は呼び出されたコアが行います。利用できるコアや画面上の設定項目は配布パッケージやバージョンによって異なるため、インストールパッケージの説明、設定画面、起動ログを確認してください。名前に「v2ray」とあるからといって、V2Rayだけを呼び出すとは限りません。

Androidでは、v2rayNGはXrayコアを基盤とし、v2flyNGはV2Flyが保守するV2Rayコアを使用します。名前が似ていても、コアの機能や画面上で指定できる項目が完全に同じとは限りません。以下の推奨はXrayの機能が必要な場合を想定したもので、あらゆるネットワーク環境での速度比較ではありません。

v2rayNG:Android向けXrayクライアント

おすすめの使い方

ノードがVLESS + REALITYを使う場合や、Xray固有の機能を明示的に要求する場合は、v2rayNGが該当パラメーターに対応しているかを優先して確認しましょう。インポート後はセキュリティ方式、サーバー名、フロー制御をチェックし、ノード名だけで判断しないでください。

おすすめ:Android端末で、サブスクリプションにXray用の設定が明記されている方。

v2flyNG:Android向けV2Flyクライアント

V2Flyが保守するV2Rayコアを使用します。動作確認済みのV2Ray設定をすでに使っていて、同じ設定体系を継続したい場合に適しています。利用する前に、対応するプロトコルとトランスポートを確認してください。

おすすめ:Android端末で、利用可能なV2Ray設定をすでにお持ちの方。

v2rayN:デスクトップでのサブスクリプション・設定管理

Windows、macOS、Linuxのデスクトップ環境で使用します。OSとアーキテクチャに合った配布パッケージを選び、現在使用中のコアを確認してください。メニューの位置はプラットフォームや画面のバージョンによって異なる場合があります。

おすすめ:デスクトップでサブスクリプション管理、システムプロキシ、ルーティングを利用したい方。

結論:ノードの要件からクライアントを選ぶ

サブスクリプションを入手したら、まずREALITYやVisionなど、明示された要件があるか確認しましょう。要件がある場合はXrayの対応状況を確認し、特に要件がなければ、現在の設定で安定して動作するかを基準にしてください。コアの名前だけを理由に、問題なく使えている環境を移行する必要はありません。

サブスクリプション・共有リンク・完全なJSON:変換を担うのはどれ?

サブスクリプションURLは通常、複数のノード情報を返します。Base64でエンコードされた共有リンクのリストが返されることもあります。クライアントは情報を解析し、ローカルポート、DNS、ルーティングルールなどの設定と組み合わせてコア用の設定を生成します。そのため、「同じサブスクリプションをインポートできること」と「生成された接続設定が正常に動作すること」は別々に確認する必要があります。

完全なJSONには、インバウンド、アウトバウンド、ルーティング、DNS、ログの設定などが含まれる場合があり、単なるノード一覧ではありません。サーバー用のJSONをクライアントのノードとしてインポートしたり、あるコアの完全な設定を別のコアにそのまま渡したりすると、設定の用途違い、フィールドの非互換、ローカルの待ち受け設定の競合などが起こる可能性があります。

  1. データの種類を確認。単体のvless://リンクはノード共有用の情報です。HTTPまたはHTTPSで始まるURLはサブスクリプションの入口である可能性があります。inboundsやoutboundsを含むJSONは通常、完全な設定ファイルなので用途を確認してください。
  2. インポート結果を確認。サーバーアドレス、ポート、ユーザーID、トランスポート、セキュリティ方式が保持されているか確認します。ノード名はメモにすぎず、設定がすべて揃っている証拠にはなりません。
  3. 実際に動作しているコアを確認。クライアントのログでコア名とバージョンを確認します。デスクトップクライアント本体の更新とコアの更新は別のため、画面のバージョンだけを記録しないでください。
  4. ローカルの接続先を確認。たとえば、クライアントが127.0.0.1:10808でSOCKSインバウンドを待ち受けている場合、テストツールも同じアドレスとポートに接続する必要があります。10808はあくまで例で、実際の値は端末の設定に従ってください。

サブスクリプションを共有しても、ローカル設定がすべて同期されるわけではありません。同じURLを2台の端末にインポートしても、アプリごとのプロキシ設定、DNS、システムプロキシ、ルーティングルールは異なる場合があります。「ノードが同じ」ことと「通信の挙動が完全に同じ」ことは別です。

デスクトップとAndroidで同じサブスクリプションを使う際の確認手順

複数の端末で使う場合は、まず一方で単一のノードを検証し、もう一方でも同じプロトコルの組み合わせを再現します。コア、ノード、DNS、ルーティングルールを一度に変更すると、接続が復旧しても、どの変更が有効だったのか分からなくなります。以下の両端末用チェックリストに沿って記録しましょう。

確認手順:同じサブスクリプションを使い、端末ごとに動作環境を検証

デスクトップ:v2rayN
  • クライアントのバージョン、コア名、コアのバージョンを記録する。
  • サブスクリプションをインポートしたら、特定のノードを1つ選んでテストする。
  • ローカルの待ち受けアドレスとポート、システムプロキシの状態を確認する。
  • まずシステムプロキシに従うアプリをテストし、その後ほかのプログラムを確認する。
Android:v2rayNGまたはv2flyNG
  • ノードに必要な機能に合わせて、対応するコアのクライアントを選ぶ。
  • デスクトップと同じノードを選び、トランスポートとセキュリティの設定を確認する。
  • 初回接続時に、システムVPNの許可が完了していることを確認する。
  • テスト対象のアプリがアプリごとのプロキシ設定から除外されていないか確認する。

サブスクリプションを共有すれば入力の手間は省けますが、ローカルのルーティング、DNS、プロキシの適用範囲は両端末で個別に確認してください。

たとえば、デスクトップのブラウザーは使えるのにターミナルから接続できない場合、XrayやV2Rayのプロトコル対応が原因とは限りません。ターミナルのプログラムがシステムプロキシを参照せず、プロキシの明示指定が必要なことがあります。Androidで特定のアプリだけ接続できない場合も、すぐにコアを変更するのではなく、まずアプリごとの設定を確認してください。通信のプロキシ適用やルーティングについては、入門ガイドと設定ガイドをご覧ください。

コアとクライアントの関係に関するよくある質問

v2rayNなのにログにXrayと表示されるのはなぜ?

クライアント名と実際に動作するコアの名前は一致するとは限りません。接続を停止し、現在のノードとコア関連の設定を確認してから再起動し、ログに表示されるコア名とバージョンを確認してください。問題を再現する際は、クライアントとコアの両方のバージョンを記録しましょう。「v2rayN」だけでは情報が不足しています。

v2rayNGでは接続できるのに、同じサブスクリプションをv2flyNGに入れると失敗します。どうすればいい?

まずサブスクリプション全体の更新ではなく、同じノード同士を比較してください。REALITY、xtls-rprx-visionなど、コアに関係するパラメーターが含まれているか確認します。Xray固有の機能が必要なら、その機能に対応する構成を使い、安全性の設定を削除して無理にインポートしないでください。

Xrayに替えれば必ず速くなりますか?

コア名だけでは判断できません。ノード、接続先、ネットワーク、テスト方法を揃え、接続の成否、遅延、継続的な通信時の状況をそれぞれ記録してログと比較してください。ノードやネットワークも同時に変わっている場合、結果をコアの違いに帰属できず、一般的な速度の結論も導けません。

クライアントを更新しても特定のフィールドが認識されない場合、何を確認すればいい?

まずログで実際に起動したコアとバージョンを確認し、フィールドがサブスクリプション変換由来か、カスタムJSON由来かを切り分けます。現在の設定をバックアップしてから、一般的なノードを1つだけ使ってテストしてください。一般的なノードは使えるのにカスタム設定で失敗する場合は、設定形式とフィールドが属するコアを重点的に確認します。ローカルのプロキシポートを繰り返し変更するのは避けてください。

選ぶときは、ノードの要件を確認し、それに対応するコアを選び、最後にクライアントでインポートとシステムへの接続を行う、という順序を守りましょう。Project V、V2Fly、Xrayはエコシステムを理解する手がかりです。実際に接続できるかどうかは、双方の設定が一致しているか、ローカルの通信が正しい入口に流れているかで決まります。

v2rayN をダウンロード