Androidクライアントは、まずノードの要件を確認し、必要な設定にカーネルとクライアントが対応しているかを見極めましょう。VLESS、REALITY、XTLS Visionが必要なら、Xrayコアを採用したv2rayNGが有力です。動作確認済みのV2Fly設定を使っている場合は、v2flyNGを選べます。この記事では、プロトコル・通信方式・セキュリティ層・サブスクリプション形式を整理し、インポート内容の確認方法と同条件でのテスト手順を紹介します。クライアント名だけで性能を判断するのは避けましょう。
Project V・V2Fly・Xray:プロジェクトとクライアントを区別する
V2RayはProject Vエコシステムのネットワークプロキシツールです。コアは受信接続を処理し、ルーティングやDNSを制御して、送信接続を確立します。V2FlyはV2Rayの開発を引き継ぐコミュニティプロジェクトです。一方、Xrayは2020年にV2Ray関連のコードを基に独立したプロジェクトとして分岐しました。共通の起源を持つものの、その後の機能、設定項目、リリース方針は別々に進化しています。名称が似ているからといって、完全に互換性があるとは限りません。
Android向けのv2rayNGとv2flyNGはクライアントであり、プロトコルではありません。サブスクリプション管理、ノード編集、ログ表示、Android VPN接続などの機能を提供し、実際のプロキシ接続は組み込まれたコアが処理します。この記事では、v2rayNGがXrayコア、v2flyNGがV2Flyコアを使う前提で説明します。実際の機能は、インストールしたパッケージに含まれるコアのバージョンや、クライアント画面の対応状況にも左右されます。
- プロジェクト層:Project V、V2Fly、Xrayはプロジェクトや技術エコシステムを指し、サブスクリプションURLではありません。
- コア層:プロトコル、セキュリティ機能、通信方式、ルーティング設定を実行できるかどうかを決めます。
- クライアント層:共有リンクの解析方法、ノードの編集方法、通信を取り込む方法を決めます。
- サーバー層:実際に利用できるプロトコルの組み合わせを決めます。クライアントを変えても、サーバーの設定は自動では変わりません。
デスクトップ向けのv2rayNもクライアント層に属します。デスクトップで使えているノードはAndroid設定の参考になりますが、ローカルの待ち受けポート、システムプロキシ設定、ルーティングファイルのパスをそのままAndroidに流用することはできません。確認すべきなのはサーバーアドレス、プロトコルのパラメーター、通信設定です。画面上で同じノード名が表示されているかどうかではありません。
プロトコルと通信方式の違い:ノード名だけでは互換性を判断できない
ノードには少なくとも、プロトコル、通信方式、セキュリティ層の3つの要素があります。たとえばVMessはプロキシプロトコル、WebSocketは通信方式、TLSはセキュリティ層です。VLESSとREALITYも同じ種類のものではありません。前者はプロキシプロトコル、後者はXrayのセキュリティ機能です。共有リンクがvless://で始まるというだけでは、クライアントを選ぶには情報が足りません。
| ノードまたは設定の要件 | Xray系 | V2Fly系 | 確認ポイント |
|---|---|---|---|
| VMess + WebSocket + TLS | 一般的な組み合わせに対応 | 一般的な組み合わせに対応 | パス、Host、TLSサーバー名、認証情報を確認 |
| VLESS + REALITY | 必要な機能に対応するXrayのバージョンを選ぶ | プロトコル名が同じでも、この組み合わせに対応するとは限らない | 公開鍵、shortId、サーバー名、サーバー側の要件を確認 |
| XTLS Visionのフロー制御 | Xray系の機能 | 同等機能の代替としては使えない | クライアントとサーバーのflow設定を一致させる |
| V2Fly固有の通信方式または設定項目 | そのまま読み込めるとは限らない | 対応するコアのバージョンで検証する | クライアントの編集画面とインポート機能の対応状況も確認 |
| ドメイン・IPアドレス・受信条件によるルーティング | ルーティング機能に対応 | ルーティング機能に対応 | ルール形式、評価順、ルール用リソースを安易に流用しない |
VLESSという名称だけでXray専用と決まるわけではありません。確認すべきなのは、通信方式・セキュリティ層・フロー制御との組み合わせです。REALITYノードには、その組み合わせに対応したXrayクライアントを使ってください。REALITYを通常のTLSに置き換えたり、flowを削除して無理に保存したりしても、サーバーが別のハンドシェイク方式を受け入れるようにはなりません。
結論:設定一式でクライアントを選ぶ
ノードの詳細画面で、プロトコル、通信方式、security、flowを確認します。REALITYまたはxtls-rprx-visionが含まれる場合は、これらの項目に対応したv2rayNGのビルドを選びましょう。別のコアに合わせるために設定項目を削除するのは避けてください。
v2rayNGとv2flyNG:利用中のノードに合わせて選ぶ
サブスクリプション提供元がXray、REALITY、Visionの利用を明示している場合、選ぶべき系統はほぼ決まります。一般的なVMessノードだけなら、どちらのクライアントでも使える可能性があります。その場合は、インポートの正確さ、接続の安定性、日常の操作性を比べましょう。コアの名称だけで、どちらが必ず速いと判断することはできません。
v2rayNG:Xray機能を使う
おすすめこの記事ではREALITYやVisionノードを主に使う場合、まず選びたいクライアントです。インポート後は重要な項目を確認してください。ノードが画面に表示されても、すべての設定が正しく保持されたとは限りません。
おすすめの用途:サーバーがXray機能を明示的に要求する場合や、VLESS + REALITYを使うAndroidユーザー。
v2flyNG:V2Fly設定を使う
V2Flyの設定が明確で、ノードの組み合わせが検証済みの環境に適しています。クライアントに組み込まれたコアのバージョンと設定画面を確認しましょう。特定の通信方式が共有リンクですべて表現されているかにも注意が必要です。
おすすめの用途:既存のV2Flyサーバー設定、動作確認済みのVMessノード、確立された運用手順。
v2flyNGをすでに使っていて接続が安定し、ノードにXray固有の要件がないなら、「新しいコア」という理由だけで移行する必要はありません。v2rayNGを使っている場合も、一般的なVMessノードのためだけに別のクライアントを追加する必要はありません。再現・調査しやすい設定を一つ維持するほうが、内容の異なるルーティング設定を複数管理するより有益です。
サブスクリプションと共有リンク:インポート後に設定項目を確認
サブスクリプションはクライアントが管理する設定情報の取得元であり、コア設定の最上位キーではありません。通常、サブスクリプションURLから複数の共有リンク、またはクライアントが読み込める設定データを取得します。Base64はよく使われるエンコード形式にすぎず、暗号化ではありません。また、2つのクライアントで同じ結果になる保証もありません。1つのサブスクリプションに複数のプロトコルのノードが含まれることもあるため、利用できるかどうかはノードごとに確認してください。
- URLの種類を確認する。
https://で始まるサブスクリプションURLは、サブスクリプション管理画面に登録します。vmess://またはvless://で始まる個別の共有リンクは、共有リンクまたはクリップボードからインポートします。Web上の契約ページをサブスクリプションURLとして登録しないでください。 - 更新後にノードの詳細を開く。v2rayNGでは通常、メイン画面のメニューから「サブスクリプショングループ設定」を開き、URLを追加してサブスクリプションを更新します。メニュー名はバージョンによって異なる場合があります。ノード名が一覧に表示されたことだけでなく、ノードの詳細まで確認してください。
- 接続先と認証情報を確認する。サーバーアドレス、ポート、UUIDまたはパスワードを照合します。通信方式、WebSocketのパス、Host、TLSサーバー名も確認し、アドレスだけをコピーしてハンドシェイクに必要な設定を見落とさないようにしてください。
- Xray固有の設定項目を確認する。REALITYノードでは公開鍵、shortId、サーバー名、サーバー側が要求するフィンガープリントを確認します。Visionノードではflowも確認してください。設定項目が空、または値が一致しない場合は、自分で推測して入力せず、有効な設定を再取得しましょう。
- ログを確認してから接続する。未知のプロトコル、未知の通信方式、設定の解析エラーが出た場合は、まずコアの機能とインポート機能の対応状況を確認します。設定が読み込まれているのにハンドシェイクに失敗する場合は、各項目、端末の時刻、サーバーの状態を確認してください。
完全な設定に含まれるルーティング、DNS、送信タグは、個別の共有リンクでは表現できない場合があります。両方のクライアントに同じノード名が表示されていても、一致しているのはサーバー接続情報だけで、ルーティング方針が異なる可能性があります。同じサブスクリプションを使えば二重入力は減らせますが、実際に動作する設定が完全に同じだとは限りません。
接続の確認:サーバーポート・ローカルプロキシ・Android VPNを区別する
ポートは用途ごとに区別してください。サーバーポートはリモートサーバーへの接続に使い、ローカルのSOCKSまたはHTTPポートは端末内のアプリからの接続に使います。Android VPNの許可は、クライアントがアプリの通信を取り込めるかどうかを決めます。以下の3つの数値は用途を示す設定例です。両クライアントの全バージョンにおける既定値でも、実測結果でもありません。
たとえばノードがサーバーの443番ポートへの接続を要求し、ローカルSOCKSの待ち受けポートが10808なら、ノード側の443を10808に変更してはいけません。ローカルの待ち受けが実際に有効で、接続方式が合っている場合に限り、アプリから127.0.0.1:10808を利用できます。一般的なAndroidアプリはクライアントのVPNモードで通信を取り込むため、アプリごとにプロキシポートを手入力する必要はありません。
- 手順1:システムの許可を確認する。接続を開始したら、Android VPNの許可が完了しているか確認します。クライアントを切り替えてテストする前に、もう一方のクライアントを停止してください。停止しないと、Android VPNセッションが切り替わり、ノードが使えないと誤認するおそれがあります。
- 手順2:対象アプリを確認する。アプリごとのプロキシ設定を有効にしている場合は、ブラウザーが対象に含まれているか確認します。一覧が「含める」設定なのか「除外する」設定なのかにも注意してください。意味は正反対です。
- 手順3:ルーティングとDNSを確認する。アクセス先がルールによってプロキシ経由になっているか、ドメイン名を解決できるかを確認します。IPアドレスには接続できてもドメイン名で失敗する場合は、すぐにコアを変更せず、まずDNSの経路を調べてください。
- 手順4:実際にアクセスできるか確認する。動作確認済みのHTTPSページを開き、ログと照らし合わせて接続結果を確認します。遅延テストで数値が表示されても、それは特定のテストが成功したことを示すだけで、すべてのアプリ通信がプロキシを通っているとは限りません。
どちらのコアもルーティングによる通信の振り分けに対応していますが、ルールが適用されるかどうかは、ドメイン情報の可視性、DNS設定、ルールの順序にも左右されます。異なる送信タグを含む設定をそのまま流用すると、プロキシ経由にすべき通信が別の送信先に流れることがあります。設定の階層については詳細設定を参照し、クライアント設定とコアの設定項目をそれぞれどこで変更するか確認してください。
同じ条件で比較する:ネットワークの変動をコアの性能差と混同しない
「コアを変えたら速くなった」という結果は、ノードやルーティング、テスト時刻の違い、接続の再利用、キャッシュの変化による可能性があります。両方のクライアントで同一のプロトコル構成をサーバーがサポートしている場合に限り、公平に比較できます。REALITYノードを別のプロトコルに変更して比較し、その結果をコアの性能差と結びつけてはいけません。
- 両方のクライアントのバージョンと、組み込まれたコアのバージョンを記録します。サーバー側のプロトコル、通信方式、セキュリティ層も記録し、「最新版」という表現で具体的なバージョンの記録を省略しないでください。
- 同じWi-Fiまたはモバイルネットワークを使い、テスト中に切り替えないでください。端末のバッテリー残量と温度を近づけ、バックグラウンドでの大容量データ転送を停止します。
- ノード、DNS、アプリごとの対象範囲、ルーティングルールを統一します。同じHTTPSページを交互にテストし、各クライアントで少なくとも5回実施してください。最速の結果だけを残すのは避けましょう。
- 接続の成功回数、ページの表示状況、遅延テストの種類、連続転送時の状態をそれぞれ記録します。短時間の接続は正常でも長時間の転送で切断する場合は、ログと照らし合わせて原因を調べてください。単一の遅延値だけでは判断できません。
- 失敗を再現できる手順を記録します。一方のクライアントだけで解析に失敗する場合は、まずインポート機能を確認してください。両方でハンドシェイクに失敗する場合は、サーバー側と共通のネットワーク環境を優先して調べます。
結論:違いが生じている層を特定してから移行を判断
同じノードでインポート結果だけが異なる場合は、設定項目を修正するか、互換性のあるインポート方法を使います。設定が一致していてエラーを再現できる場合は、クライアントとコアのバージョンを中心に調べてください。同条件での記録がないなら、偶然の速度変化を選定基準にしないでください。
デスクトップとAndroidの併用:同じ取得元を使い、各端末で個別に確認
デスクトップでv2rayN、Androidでv2rayNGまたはv2flyNGを使う場合、サービス提供者が認める端末数や接続制限の範囲内で、同じサブスクリプションを利用できます。更新されるのは取得元の設定内容です。現在選択中のノード、ルーティングルール、DNS、アプリごとの対象一覧は、それぞれ確認してください。
設定方針:ノードの取得元をそろえ、プラットフォームごとの違いを保つ
デスクトップ:v2rayN
- 使用中のコアが、ノードに必要な機能に対応しているか確認する。
- デスクトップアプリの要件に応じて、システムプロキシまたはTUNを設定する。
- ローカルの待ち受けポートと送信先ルーティングを確認する。
- サブスクリプションの更新後、現在のノードが引き続き使えるか確認する。
Android:v2rayNGまたはv2flyNG
- まずプロトコルの組み合わせ全体に合わせてクライアントを選ぶ。
- Android VPNの許可とアプリごとの設定を個別に行う。
- ネットワーク切り替え後の再接続とDNSの動作を確認する。
- 更新後はノード数だけでなく、重要な設定項目も確認する。
同じサブスクリプションを使えば入力作業は減りますが、各プラットフォームでの接続確認は別途必要です。一度に変更する設定を一つに絞ると、原因を追跡しやすくなります。
最終的な判断は2つです。Xray固有の機能が必要なら、該当する設定項目に対応したv2rayNGを選びます。V2Flyの設定を使っていて、動作確認済みならv2flyNGを選びます。両方が対応する一般的なプロトコル構成だけを使う場合は、正確にインポートできるか、安定して通信を取り込めるか、同条件で再現性のあるテストができるかを基準にしてください。プラットフォームや画面表示の違いはクライアント比較、用語の意味は用語集で確認できます。