· エコシステム · 約9分

Project V・V2Fly・Xrayの違いと関係:コアの系譜とv2rayN・v2rayNG・v2flyNGの選び方

Project Vの成り立ちからV2Flyのコミュニティ運営、Xrayの分岐までを解説。各クライアントが使うコアを比較し、選び方を紹介します。

この記事の要点

Project Vはプロジェクト全体の枠組み、V2Rayはその中核ツールです。V2Flyがコミュニティによるメンテナンスを引き継ぎ、XrayはV2Rayから分岐した独立系コアとして開発されています。クライアント選びでは、まずサーバー側のプロトコル、トランスポート、安全性の設定を確認し、クライアントが実際に使用するコアと照らし合わせましょう。デスクトップやAndroid向けクライアントを選ぶ方や、「リンクはインポートできるのに接続できない」という方に向けて解説します。

プロジェクト・コア・クライアントを区別する

日常会話で「V2Rayをインストールする」と言う場合、GUIクライアントの導入を指すこともあれば、コアプログラムのセットアップを指すこともあります。この2つは別の階層です。クライアントはサブスクリプションやノード一覧、システムプロキシ、画面操作を管理します。コアは設定を読み込み、接続を確立し、DNS問い合わせやルーティングルールを処理します。サブスクリプションサービスはノード情報を提供するもので、コアそのものではありません。

トラブルの原因を調べる際は、何を指しているのかを明確にしましょう。ウィンドウが開くのは、クライアントの画面が動作していることしか示しません。サブスクリプションを更新できても、確認できるのは配布URLにアクセスできたことだけです。コアが起動するか、接続先とのハンドシェイクが成功するか、アプリの通信がローカルプロキシに流れているかは、それぞれ個別に確認する必要があります。

名称階層主な役割
Project Vプロジェクト体系ネットワーク通信ツールを中心とするプロジェクトと設計の枠組み。
V2Ray / V2Fly中核ツールとメンテナンスコミュニティV2FlyコミュニティがV2Rayコアと関連プロジェクトの開発・保守を担います。
Xray独立したコアの分岐V2Rayから分岐し、プロトコルやトランスポート機能を独自に開発しています。
v2rayNデスクトップクライアントノードとサブスクリプションを管理し、バージョンや設定に応じたコアを起動します。
v2rayNG / v2flyNGAndroidクライアントXrayまたはV2Flyのコアを使用し、Android端末でプロキシを管理します。

Project Vから分かれた2つのコア

Project Vの初期開発では、V2Rayの設定体系とモジュール化の考え方が形作られました。インバウンド、アウトバウンド、ルーティング、DNSはそれぞれ異なる役割を担い、すべての動作をひとつの「プロキシスイッチ」にまとめる設計ではありません。現在の2つのコアの設定にも、こうした共通の背景が見られます。

  1. Project VとV2Rayの始まり:V2RayはProject Vの中核ツールです。VMessプロトコルと、組み合わせ可能なトランスポートやルーティングの設定は、初期のエコシステムを理解する手がかりになります。
  2. V2Flyコミュニティによるメンテナンス:V2FlyはV2Rayコアの開発・保守を続けています。「V2Flyコア」は通常、同コミュニティがメンテナンスするV2Rayを指し、V2Flyという名前の接続プロトコルがあるわけではありません。
  3. Xrayは2020年に分岐:XrayはV2Rayから分かれ、その後独自に開発されています。VLESS、XTLS関連のフロー制御、REALITYなどの機能は、対応する分岐とバージョンごとに確認してください。共通の出自だけを根拠に、対応状況を判断することはできません。

「旧ソフトの名前が変わって新ソフトになった」という一直線のアップグレード関係ではありません。V2FlyとXrayには、それぞれ異なるバージョン、設定資料、リリースサイクルがあります。一方の分岐で追加された項目が、もう一方でもJSONを読み込めるというだけで互換になるわけではありません。同じ名前の項目でも、許容値や動作は各コアのドキュメントで確認してください。

プロトコル互換性は設定一式で確認

VMessとVLESSはプロトコル名、WebSocketはトランスポート方式、TLSとREALITYは別途確認が必要な安全性設定です。それぞれ異なる要素です。「VLESSに対応」とあっても、あらゆるVLESSの組み合わせが使えるとは限らず、両端の設定を自由に置き換えられるわけでもありません。

サブスクリプションURLはノード情報を配布する手段であり、互換性を保証するものではありません。クライアントがアドレスやポートを解析できても、拡張パラメーターを認識できない場合があります。インポート後もノードの編集画面で重要な項目が保持されているか確認し、接続ログを確認してください。

選定の順序:サーバー側の設定を確認してからコアを選ぶ

サーバーがVLESS + REALITYを要求する場合は、まずXrayを使う構成を確認しましょう。既存の設定がVMess + WebSocket + TLSなら、現在のコアで要件を満たせるか項目ごとに確認すれば十分です。名前が新しくなったという理由だけで、設定一式を移行する必要はありません。

3つのクライアントの選び方

デスクトップでは、Windows、macOS、Linuxとプロセッサーのアーキテクチャに合わせて、v2rayNの配布パッケージを選びます。コアの選択肢、画面構成、プラットフォーム機能はバージョンによって異なる場合があります。特定のWindows版のメニュー画面から、ほかのプラットフォームも同じだと判断しないでください。

Android版の違いはより明確です。v2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。名前が似ていても、画面だけを変えたアプリではありません。ノードが必要とする機能がどちらのコアに属するかは、画面の使い勝手よりも選択を左右する重要なポイントです。

v2rayNG:Android向けXray構成

おすすめ

このカードでおすすめするのは、Android端末でXrayの機能を必要とするノードを使う場合です。インポート後もREALITY、フロー制御、トランスポートの各設定を確認し、ノード名にあるプロトコルの略称だけで判断しないでください。

おすすめの用途:Xrayの機能が必要なノードにAndroid端末から接続する場合。

v2rayN:デスクトップの設定管理

Windows、macOS、Linuxのデスクトップでノードとサブスクリプションを管理します。実際に起動するコアは、配布版、コアの設定、ノードの種類によって変わるため、起動ログで確認してください。

おすすめの用途:デスクトップのシステムプロキシ、サブスクリプションのグループ分け、ルーティングの管理。

v2flyNG:Android向けV2Fly構成

V2Flyの設定や機能範囲に合わせて運用する環境に適しています。既存ノードを移行する前に、現在のコアがプロトコルの組み合わせに対応しているか確認してください。特に、Xray専用のパラメーターをそのまま流用しないでください。

おすすめの用途:V2Flyのサーバーと設定ルールをすでに利用しているAndroid端末。

ここでの選択は速度ランキングではありません。スループットや遅延は、回線、サーバーの負荷、トランスポート設定、ローカルネットワークにも左右されます。同じ条件で測定していない限り、コアの名前だけから性能差を一定の割合で推定することはできません。

デスクトップとAndroidで同じサブスクリプションを使う場合

同じサブスクリプションを複数の端末で使うことはできますが、サブスクリプションの形式と各ノードの組み合わせが両方の端末でサポートされている必要があります。端末ごとのローカル待ち受けポート、システムプロキシの状態、アプリごとの設定は通常共有されません。これらはクライアント側の動作です。

設定例:ノード情報は共用し、ローカルの接続設定は端末ごとに管理

デスクトップ:v2rayN
  • サブスクリプションをインポートしたら、選択中のノードが実際にどのコアを使っているか確認します。
  • ノードを起動し、システムプロキシまたはアプリ内プロキシの設定を確認します。
  • ローカルの待ち受けアドレス、ポート、ルーティングモードを記録します。
Android:v2rayNG
  • 同じサブスクリプションをインポートし、使用するノードのトランスポートと安全性設定を確認します。
  • 初回起動時に、システムVPN接続の許可を確認します。
  • アプリごとのプロキシを有効にする場合は、対象アプリが想定した範囲に含まれているか確認します。

サブスクリプションを共用すれば再入力の手間を減らせますが、両方の端末で個別に更新が必要です。ノード一覧、ルーティングルール、プロキシの状態が自動で完全に一致するわけではありません。

たとえば、デスクトップアプリのプロキシを127.0.0.1:10808に手動設定しても、クライアントが実際にそのポートで待ち受け、アプリ側でSOCKSまたはHTTPを正しく選んでいる場合にのみ機能します。ここでの10808は確認用の例であり、すべてのバージョンで同じ既定値を使う必要はありません。トラブルシューティングのために、待ち受けアドレスを安易に0.0.0.0へ変更しないでください。ローカルプロキシにアクセスできる範囲が広がるおそれがあります。

ルーティングは2つの階層に分けて考えます。システムプロキシまたはAndroidのVPN接続は、どの通信をクライアントに取り込むかを決めます。routing.rulesは、コアに入った通信をどのアウトバウンドへ送るかを決めます。ノードには接続できるのに特定のアプリだけ失敗する場合は、すぐにコアを変更せず、接続の入口とアプリごとの対象範囲を確認してください。

インポートから接続までの確認手順

移行前に元のクライアント設定を保存し、まず1つのノードで最小限の接続を確認します。サブスクリプション、ルーティング、DNS、コアのバージョンを同時に変更すると、ログのエラーと変更内容を結び付けにくくなります。

  1. 実行環境を記録:OS、クライアントのバージョン、コア名とコアのバージョンを記録します。実際に起動したプログラムを確認するには、v2rayNのコア起動ログが重要な手がかりになります。
  2. ノード設定を確認:サーバーアドレス、接続先ポート、プロトコル、ユーザー識別子、トランスポートのパス、安全性設定を確認します。接続先ポートとローカルプロキシのポートは別の項目です。
  3. 起動結果を確認:address already in useが表示されたら、まず重複して起動しているプロセスを終了するか、競合しているローカル待ち受けポートを変更します。このエラーはサーバーへの接続前に発生しています。
  4. 通信の入口を確認:デスクトップではシステムプロキシまたはアプリの手動プロキシ設定を確認します。AndroidではVPNが起動しているか、対象アプリが除外されていないかを確認します。
  5. 複雑なルールを戻す:基本の接続ができたら、カスタムDNS、ルーティングによる振り分け、サブスクリプションの更新設定を一つずつ戻し、変更のたびにログを確認します。

クライアント選びと移行に関するよくある質問

v2rayNをインストールすれば、必ずV2Flyを使っていることになりますか?

いいえ。まずノードを起動し、ログに表示されるコアの名前とバージョンを確認してください。クライアント名だけでは使用中のコアは分かりません。切り替える場合は、現在の配布版で選べるコアを確認し、ノードとの互換性も改めて確認してください。

VLESSリンクをインポートできたのに接続できないのはなぜですか?

ノードの編集画面を開き、トランスポート、安全性設定、サーバー名、フロー制御を順番に確認します。REALITYを使う場合は、公開鍵とショートIDも確認してください。その後、コアのバージョンとログを調べます。「インポート成功」だけでは、拡張パラメーターが正しく適用されたとは限りません。

Xrayに切り替える場合、既存のVMessノードを作り直す必要がありますか?

通常はサーバー設定を維持したまま、新しいコアが既存の設定一式をサポートしているか確認してからインポートしてテストします。ノードのプロトコルをVMessからVLESSに勝手に変更しないでください。サーバー側で対応する変更を行わずにクライアントの項目だけ変えても、移行は完了しません。

同じサブスクリプションがデスクトップでは使えるのにAndroidでは使えない場合、まず何を確認すればよいですか?

まず両方で同じノードを選んでいるか確認し、コアのバージョンと重要な設定を比較します。設定が一致している場合は、AndroidのVPN許可、アプリごとの対象範囲、端末の時刻を確認してください。デスクトップで接続できても、その環境での接続が使えることしか証明できません。

最終的な選択は、検証できる条件で判断しましょう。対象プラットフォームで動作すること、コアがノードの設定一式に対応していること、接続の入口が正しく設定されていること、ログに設定エラーやハンドシェイクエラーがないことが重要です。分岐の系譜を理解する目的は調査範囲を絞ることであり、分岐名を接続品質の保証とみなすことではありません。設定項目の意味は設定リファレンスを、初めて接続する方は使い方ガイドを参照してください。

クライアントとインストーラー