このツール群を理解する出発点はProject Vです。V2FlyとXrayは異なるコアの開発路線にあたり、v2rayN、v2rayNG、v2flyNGはユーザー向けの設定・接続管理を担います。本記事ではプロジェクト、コア、クライアント、プロトコルの4つに分けて解説し、デスクトップとAndroidでの選び方も紹介します。サブスクリプションを入手したものの、どのクライアントやコアを使えばよいか迷っている方に向けた内容です。
Project V、V2Fly、Xray:まずプロジェクトの関係を整理
Project Vはネットワーク通信ツールとモジュール型プロキシ機能を軸とするプロジェクトで、V2Rayはその中核を担います。「V2Ray」は日常会話ではコアのプログラムを指す場合も、ツール全体を指す場合もあります。問題を切り分けるには、使用中のクライアント、クライアントが呼び出すコア、コアが実際に読み込む設定を確認しましょう。
V2FlyはV2Rayの保守・開発を続けるコミュニティです。一般にV2Flyのコアと呼ばれるものは、同コミュニティが保守するv2ray-coreを指します。Xray-coreはv2ray-coreから派生し、その後独自の機能開発路線を築いています。両者には共通する歴史や設定の概念がありますが、新機能、設定項目、既定の動作が常に同じとは限りません。
- Project V:プロジェクトの背景と技術体系を指し、別途インストールするデスクトップクライアントではありません。
- V2Fly:コミュニティとその開発・保守路線を指します。接続機能を話題にする場合は、v2ray-coreまで明示しましょう。
- Xray:独立して開発されるコアプロジェクトです。REALITYやXTLS Visionなどの機能は、実際の対応状況を確認して設定してください。
- v2rayNなどのクライアント:サーバー情報、サブスクリプションのグループ、ルーティング設定を、コアが実行できる設定に変換します。
クライアントとコア:画面上の設定が実際の接続になるまで
クライアントは主に操作と管理を担い、サブスクリプションURLの保存、サーバー一覧の表示、システムプロキシの設定、設定ファイルの生成、コアの起動・停止を行います。コアはローカルの入口で待ち受け、ルーティングを判定し、プロトコルのハンドシェイクを実行してデータを転送します。画面が正常に開いていても、ポートの競合や設定ミスでコアが起動しないことがあります。
| クライアント | 主なプラットフォーム | コアとの関係 | 選ぶ際の確認点 |
|---|---|---|---|
| v2rayN | Windows、macOS、Linux | デスクトップで複数のコアを管理。Xrayなどの対応系統を含み、選択肢は配布版によって異なります | インストーラーのプラットフォームとアーキテクチャ、および現在の設定が呼び出すコアを確認 |
| v2rayNG | Android | Xrayコアを使用。Android側で画面表示と通信の取り込みを担当 | ノードの設定値、プロキシを適用するアプリの範囲、VPNの許可を確認 |
| v2flyNG | Android | V2Flyのv2ray-core系統を使用 | ノードが必要とする機能が、そのコアで実装されているか確認 |
v2rayNのクロスプラットフォーム版とWindowsのWPF版も、別の観点で異なります。画面の技術はウィンドウ、トレイ、プラットフォームとの連携方法を決めるもので、接続先とのハンドシェイクにVMessとVLESSのどちらを使うかを直接決めるものではありません。画面の種類を切り替えても、コアやノード設定の確認には代わりません。
Androidの通信を取り込む処理も、プロトコルコアだけで完結するわけではありません。v2rayNGとv2flyNGは通常、システムのVPNインターフェースを使ってアプリの通信を取り込み、コアに渡します。システム上でVPN接続済みと表示されても、取り込み用の経路が確立したことを示すだけで、接続先とのハンドシェイク成功までは保証しません。
切り分けの基本:クライアントを記録してからコアを確認
問い合わせる前に、クライアント名とバージョン、ログに記録されたコアのバージョン、ノードのプロトコルを控えてください。「V2Rayがつながらない」だけでは、画面、通信の取り込み、設定、接続先サービスのどこに問題があるか判断できません。
VMess、VLESS、TLS、REALITY:それぞれ別の要素
接続設定には少なくとも、プロキシプロトコル、伝送方式、セキュリティ設定が関わります。VMessとVLESSはプロキシプロトコル、WebSocketは伝送方式、TLSとREALITYは接続のセキュリティ設定に関する選択肢です。互いに置き換えられる同種の設定ではなく、名前が長いほど性能がよいというわけでもありません。
- VMess:V2FlyとXrayの両方に実装があります。接続できるかどうかは、ユーザーID、伝送方式、セキュリティ設定、サーバー側の設定が一致しているかによります。
- VLESS:プロトコル自体はペイロードを暗号化しないため、適切なセキュリティ層と組み合わせて使います。「自動的に暗号化されるVMess」と捉えるのは誤りです。
- REALITY:汎用的なTLS設定として、すべてのコアにそのまま適用できるわけではありません。VLESS + REALITYの設定を受け取った場合は、その組み合わせに明確に対応する実装を選んでください。
- Vision:XTLS関連のフロー制御機能であり、独立したサブスクリプション形式ではありません。サーバー側とクライアント側でフロー制御の設定を一致させる必要があります。
たとえばサブスクリプションがVLESS + REALITYの場合、サーバーアドレス、ポート、ユーザーID、サーバー名、公開鍵、Short ID、フロー制御などの項目を確認します。必須項目や具体的な項目名は、設定内容とコアのドキュメントに従ってください。プロトコルのプルダウンをVLESSに変えるだけで、ほかの値が自動入力されるわけではありません。
ノードの要件に合わせてv2rayN、v2rayNG、v2flyNGを選ぶ
まずOSを確認し、次にノードの要件を確認します。デスクトップではv2rayNでサブスクリプションのグループやルーティングをまとめて管理できます。Androidではv2rayNGとv2flyNGのコア機能を比較してください。以下はXrayの機能を必要とするAndroid設定を対象とした推奨であり、あらゆる用途を対象にした性能ランキングではありません。
v2rayNG
おすすめAndroidでXrayコアを使う方法です。ノードがREALITYやVisionを明示的に必要とする場合は、この系統の対応状況と実際のコアバージョンを優先して確認してください。
おすすめの用途:Androidで、ノードがXrayの機能を明確に必要とする場合。
v2flyNG
AndroidでV2Flyコアを使う方法です。既存の設定がV2Flyの機能や動作を前提に管理されている場合は、この系統を継続できます。ただし、具体的な伝送方式とセキュリティ設定は確認してください。
おすすめの用途:Androidで、動作確認済みのV2Fly設定を利用している場合。
v2rayN
デスクトップでサブスクリプション、システムプロキシ、ルーティングを管理できます。Windows、macOS、Linuxとプロセッサアーキテクチャに合ったインストーラーを選び、実行時に呼び出されるコアを確認してください。
おすすめの用途:デスクトップ環境で、サブスクリプションとルーティングをまとめて管理したい場合。
クライアント名だけで速度は判断できません。ネットワーク経路、サーバー負荷、伝送設定、ローカルでの通信取り込み方法が結果に影響します。比較する際は同じサーバー、同じネットワーク、同じテスト先を使い、一度に変える項目は一つにしてください。そうしないと、結果が違ってもコアによる差かどうか特定できません。
v2rayNの確認手順:設定画面から実行ログまで
以下の手順では、「現在の設定が実際にどのコアで実行されているか」を確認します。配布版によって設定項目の場所は異なる場合があります。該当項目が見つからないときは、別バージョンの画面を参考にせず、まずクライアントのバージョンと画面の種類を確認してください。カスタム設定では、通常のサーバー設定における既定の選択が適用されない場合もあります。
-
バージョンを記録
「ヘルプ」→「バージョン情報」でクライアントのバージョンを記録し、使用中のプラットフォームと画面の種類も控えます。コアのバージョンは起動ログで別途確認し、クライアントのバージョンと混同しないでください。
-
コアを確認
「設定」→「パラメーター設定」を開き、「Coreタイプ」に関する項目を確認します。プロトコルごとにコアを割り当てる場合は、現在のノードのプロトコルに対応する項目を確認してください。項目名や場所が異なる場合は、実際の設定画面を基準にします。
-
ノードを確認
現在のサーバーの編集画面を開き、プロトコル、アドレス、接続先ポート、伝送方式、TLSまたはREALITYの設定を確認します。サブスクリプションの元の設定を保ち、エラーを消すためにユーザーIDやセキュリティ設定を安易に変更しないでください。
-
ログを確認
現在の設定で再起動し、メイン画面のログにあるコアの起動情報とエラーを確認します。まず設定が受け付けられ、待ち受けが開始されていることを確かめてから、接続先への接続成否を判断してください。
コアを切り替えて一つのノードで接続できても、サブスクリプション内のすべてのノードで使えるとは限りません。ノードによってプロトコルや伝送方式が異なる場合があります。「同じ提供元なら設定も同じ」と決めつけず、ノードごとの要件を確認してください。
ローカルポート、システムプロキシ、ルーティングの違い
通信の入口と出口を分けて考えるため、ここではローカルポートを2つ例に挙げます。以下のポート番号は説明用に手動設定した値であり、どの配布版の既定値を示すものでもありません。対応する待ち受けを実際に設定して初めて、アプリからこれらのアドレスを利用できます。
たとえばSOCKSの入口を127.0.0.1:10808、HTTPの入口を127.0.0.1:10809に設定した場合、アプリ側でも正しいプロキシの種類を指定する必要があります。SOCKS専用の入口にHTTPプロキシのリクエストを送ると、接続先サーバーに到達する前のローカルプロトコル処理でエラーになります。バージョンによっては混合型の入口を使うため、実際の待ち受け方式に合わせて設定してください。
- システムプロキシ:システム設定を参照するアプリにプロキシアドレスを通知しますが、すべてのプログラムが利用するとは限りません。
- TUN:仮想ネットワークインターフェース経由で通信を取り込みます。ルーティング、DNS、除外ルールの影響を受けるため、すべての接続がプロキシサーバーへ転送されるわけではありません。
- コアのルーティング:コアに入った通信について、直接接続、プロキシ経由、ブロックのいずれにするかを決定します。コアに入っていない通信には、このルールは適用されません。
- 接続先ポート:サーバー側の待ち受けポートです。ローカルの例で使った10808や10809と同じである必要はありません。
切り分けの順序:まず通信の取り込みを確認し、次に出口を調べる
アプリから接続できない場合は、まずログに該当する通信が記録されているか確認します。記録がなければアプリのプロキシ設定や通信の取り込み方法を確認し、記録があればルーティング先、DNS、ハンドシェイクのエラーを調べます。関係のないサブスクリプションURLを何度も変更するのは避けましょう。
オープンソースライセンス:クライアントとコアを個別に確認
ネットワークプロトコルとオープンソースライセンスは別のものです。VMessやVLESSは通信方式を表し、MIT、MPL-2.0、GPL-3.0はコードの利用・配布条件を定めます。相互に通信できるからといって、2つのプロジェクトが同じライセンスを採用しているとは限りません。クライアントが特定のコアを呼び出していても、同梱コンポーネントすべてに同一のライセンスが適用されるわけではありません。
| プロジェクト | 主なライセンス表記 | 確認する範囲 |
|---|---|---|
| V2Fly v2ray-core | MIT | コア本体と依存ライブラリに付属するライセンス表記 |
| Xray-core | MPL-2.0 | ライセンスの対象となるファイル、および変更・再配布の条件 |
| v2rayN | GPL-3.0 | クライアントのコード、配布パッケージ、同梱コンポーネント |
| v2rayNG | GPL-3.0 | Androidクライアントと統合されたコアの個別ライセンス表記 |
| v2flyNG | GPL-3.0 | Androidクライアントと依存ライブラリのライセンス |
上の表は各プロジェクトの主なライセンスを把握するためのものです。個別の配布パッケージに含まれるLICENSE、NOTICE、依存関係一覧の代わりにはなりません。通常のインストール利用では、プラットフォーム、アーキテクチャ、ノードの要件に合うクライアントをダウンロードしてください。コードの改変や再配布を行う場合は、実際に使用するコードのバージョンごとにライセンス条件を確認し、画面に表示されるプロジェクト名だけで判断しないでください。
選び方は3段階に整理できます。まずプラットフォームを決め、次にノードが必要とするプロトコルとセキュリティ設定の組み合わせを確認し、最後にクライアントが実際に実行するコアを確かめます。サブスクリプションは情報を提供し、クライアントは管理を担い、コアは処理を実行し、ルーティングは出口を選びます。それぞれの役割を分けて考えれば、バージョンアップや接続トラブルの切り分けも根拠を持って進められます。