Androidではアプリ名の新旧ではなく、ノードの要件に合わせてコアを選びましょう。VLESS + REALITYやXTLS Visionが必要なら、Xrayコアを使うv2rayNGが第一候補です。V2Fly向けと明示された設定がある場合は、v2flyNGを検討してください。この記事ではプロジェクト・コア・クライアントの違いを整理し、プロトコル構成の確認項目と、デスクトップからAndroidへ設定を移す際のチェック手順を紹介します。
Project V・V2Fly・Xrayの関係
Project Vは、ネットワークプロキシツールと関連コンポーネントから成るプロジェクトです。V2Rayはその中核ソフトウェアです。コアは設定の読み込み、インバウンド・アウトバウンド接続の確立、プロトコル処理、ルーティングを担います。一方、クライアントはノード一覧やサブスクリプション管理、設定画面を提供します。両者は別のレイヤーにあり、画面が似ていても同じコアが動作しているとは限りません。
V2FlyはV2Rayの開発を引き継いだコミュニティプロジェクトです。Xray-coreはV2Rayから派生し、その後プロトコルやセキュリティ層、トランスポートの実装を独自に進化させてきました。両者には共通の歴史や概念がありますが、現在のXray用設定ファイルを、あらゆるバージョンのV2Flyで読み込めると考えることはできません。
- v2rayN:デスクトップクライアントです。設定を確認するときはノードの種類だけでなく、実際に使用しているコアとそのバージョンも確認してください。クライアント名だけでV2Flyが動作しているとは判断できません。
- v2rayNG:Xrayコアを使用するAndroidクライアントです。Xray関連のプロトコル構成が必要なノードに適しています。
- v2flyNG:V2Flyコアを使用するAndroidクライアントです。V2Flyに対応することが確認済みの設定や利用環境に適しています。
プロトコル対応は構成全体で確認
互換性を判断するには、「プロトコル」「トランスポート」「セキュリティ層」「フロー制御」の4項目に分けて確認しましょう。VLESSはプロトコル、WebSocketはトランスポート、TLSとREALITYはセキュリティ層に関する設定、xtls-rprx-visionはフロー制御の値です。「VLESS対応」という情報だけで確認を終えると、接続を左右する重要な項目を見落とすおそれがあります。
| 設定の組み合わせ・機能 | Xrayコア | V2Flyコア |
|---|---|---|
| VMess + WebSocket + TLS | 一般的な構成に対応。パスとホスト名の確認が必要 | 一般的な構成に対応。パスとホスト名の確認が必要 |
| 基本的なVLESS設定 | 対応。利用できる構成はコアのバージョンによって異なる | 対応する構成もありますが、すべてのXray拡張機能に対応するとは限りません |
| VLESS + REALITY | 該当機能に対応したバージョンを選び、必要な項目を設定 | この種の設定に対応する代替にはなりません |
| XTLS Visionのフロー制御 | サーバー側の要件とflowの値を確認 |
XrayのVision設定をそのまま移行することはできません |
| 完全なJSON設定 | 対応するバージョンの設定形式を使用 | 対応するバージョンの設定形式を使用。Xrayとの相互互換性は保証されません |
VMess、VLESS、Trojanなどの名称から分かるのはプロトコルの種類だけで、トランスポートの構成まで同じとは限りません。ノードで指定されたWebSocketパス、TLSサーバー名、フィンガープリントなども、クライアント側で正しく設定する必要があります。両方のコアが同じプロトコルに対応していても、項目が一つ抜ければハンドシェイクに失敗することがあります。
結論:まずsecurityとflowを確認し、Androidクライアントを選ぶ
ノードにsecurity=realityの指定がある場合や、flow=xtls-rprx-visionが必要な場合は、v2rayNGを選び、内蔵Xrayがその設定に対応しているか確認してください。セキュリティ層やフロー制御の項目を削除して、v2flyNGで動かそうとするのは避けましょう。
Android版の選び方:v2rayNGとv2flyNG
既存の設定に特別な制約がなく、一般的な形式の共有リンクを幅広く扱いたい場合は、まずv2rayNGを試すとよいでしょう。これはXrayの機能対応範囲を踏まえた選択であり、あらゆるネットワークで常に速いという意味ではありません。設定の提供元がV2Flyを指定している場合や、検証済みのV2Flyネイティブ設定がある場合は、対応する実行環境を使いましょう。
v2rayNG:Xrayコア
おすすめREALITYやVisionなど、Xray関連機能が必要なノードに使用します。インポート後はノードの編集画面を開き、セキュリティ層、サーバー名、フロー制御を確認してください。ノード名だけで設定を判断しないようにしましょう。
おすすめのケース:初めてインストールする、ノードでXrayが明示されている、デスクトップで同種のXray設定を使っている
v2flyNG:V2Flyコア
V2Fly向けと明示された設定に使用します。VMess + WebSocket + TLSのノードが正常に動作しているなら、ブランチ名が異なるという理由だけで移行する必要はありません。また、それだけで常に互換性が高いと判断することもできません。
おすすめのケース:V2Fly設定をすでに使っている、V2Flyネイティブ設定の動作を確認したい
比較のために両方のアプリをインストールする場合は、VPN接続を同時に起動せず、1回につき1つのアプリだけを使ってください。AndroidのVPNサービスの制御、アプリごとのルール、バックグラウンド制限は、実際の通信に影響します。アプリを切り替えた後に結果が変わった場合は、コアの違いを疑う前に、どちらのサービスが動作中か確認しましょう。
- 通常のVMessノードのみ:どちらのコアでも要件を満たす可能性があります。まずは動作確認済みの設定をそのまま使いましょう。
- REALITYが明示されている:必要な機能に対応するv2rayNGを選び、同じ設定をv2flyNGで代用しないようにしましょう。
- ネイティブJSON設定しかない:まず対象のコアと設定形式のバージョンを確認してからクライアントを選びましょう。拡張子だけを見てインポートしないでください。
設定の確認:ポート・項目・インポート結果
コアの違いだけが原因とは限りません。サーバーアドレス、ポート、ユーザーID、トランスポートのパス、セキュリティ層のいずれかが一致しないと、「インポートはできたのに接続できない」ことがあります。以下のポートはトラブルシューティング用の例で、すべてのノードやクライアントの初期値ではありません。実際の値はノード編集画面と端末側の設定で確認してください。
リモートポート443はサーバー上のサービスを指し、ローカルの127.0.0.1:10808は端末上でアプリが待ち受けるアドレスです。ノードのサーバーポート欄にローカルポートを入力しても、接続先が正しくなるわけではありません。AndroidのVPNモードでは通常、システムの仮想ネットワークインターフェースが通信を処理するため、アプリごとにこのローカルポートを手入力する必要もありません。
- まずインポート方法を確認。v2rayNGのメイン画面で「+」→「クリップボードからインポート」を選び、共有リンクを取り込みます。メニューの表記はバージョンによって多少異なります。サブスクリプションURLはサブスクリプショングループに登録し、単一ノードの共有リンクとして扱わないでください。
- 次にノード編集画面を確認。アドレスとポートが元の設定と一致しているか確認します。VMessノードではユーザーID、WebSocketノードではパスとHost、TLSノードではサーバー名を確認してください。
- REALITYは個別に確認。公開鍵、shortId、サーバー名、フィンガープリントなどを提供元の指示どおりに設定します。項目名はバージョンによって異なる場合があるため、TLSの設定方法をそのまま当てはめず、一つずつ確認してください。
- 最後にVPNの動作を確認。接続を開始したら、システムのVPN許可が完了しているか確認します。一部のアプリだけで問題が起きる場合は、コアをすぐに変更せず、アプリごとのプロキシ設定、ルーティング、DNSを確認しましょう。
デスクトップとAndroid:同じサブスクリプションでも設定は共通ではない
v2rayNとAndroidクライアントで同じサブスクリプションを利用できます。ただし、サブスクリプションが提供するのはノード情報であり、デスクトップのシステムプロキシやルール、Androidのアプリごとのプロキシ設定までは同期されません。サブスクリプションサービスがクライアントごとに異なる形式を出力する場合は、適切な出力形式を選んでください。同じURLならどのクライアントでもまったく同じ内容が返るとは限りません。
移行手順:ノード設定を合わせ、端末ごとの通信制御を個別に設定
デスクトップ:v2rayN
- 使用中のノードと実際に動作しているコアを記録する。
- システムプロキシの状態を確認する。ルーティングモードと混同しない。
- REALITYが必要な場合は、対応するXray設定を使っているか確認する。
Android:v2rayNGまたはv2flyNG
- ノードの要件に合わせてコアを選び、サブスクリプションをインポートする。
- 表示名だけを比べず、ノードの重要な設定項目を確認する。
- VPNの許可を済ませ、アプリごとのプロキシ設定とルーティングを別途確認する。
同じサブスクリプションを使えば入力の手間は減らせますが、両方の端末で同じノードが取得できるか、同じルールが使われるかは個別に確認が必要です。
デスクトップでは使えるのにAndroidでは使えない場合は、まず同じノードのプロトコル構成を比較し、次に利用中のネットワークを確認してください。家庭のネットワークとモバイル回線では、DNS、接続ポリシー、通信経路が異なる場合があります。まず同じWi-Fi環境で同じWebサイトを試し、設定が一致していることを確認してからネットワークを切り替えましょう。一度に複数の条件を変えないことが大切です。
- プロトコル設定は一致しているのにドメインへのアクセスだけ失敗する:DNSとドメインのルーティングルールを確認する。
- 一部のアプリだけアクセスできない:そのアプリがVPNの対象外に設定されていないか確認する。
- サブスクリプション更新後にノードが変わった:グループのURL、更新結果、サーバー側の出力形式を確認する。
よくある誤解と最終的な選び方
Xrayは必ずV2Flyより速い?
そのようには判断できません。通信速度はサーバーの負荷、ネットワーク経路、トランスポート構成、端末の性能などに左右されます。比較するときはノード、ネットワーク、接続先をそろえ、両方で正しく接続できることを確認してから実際の使用感を比べましょう。別のサーバーや異なる時間帯の測定結果を、コアの違いだけに結びつけることはできません。
V2FlyはVLESSに対応しているのに、REALITYノードをそのまま使えないのはなぜ?
VLESSはプロトコル層の一要素にすぎません。REALITYやVisionには追加機能と固有の設定仕様があり、基本的なVLESS対応だけではカバーできません。元のノードがREALITYを要求している場合、通常のTLSに変更したりflowを削除したりすると接続条件が変わるため、通常はサーバーと一致しなくなります。
サブスクリプションは更新できるのにノードへ接続できない。コアの問題?
必ずしもそうとは限りません。更新に成功したということは、サブスクリプションを取得して内容を解析できたというだけです。ノードへの接続には、サーバーへの到達、認証、セキュリティ層のハンドシェイク、ルーティングなども必要です。まずログに未対応の設定項目がないか確認し、次に認証やハンドシェイクのエラーを調べましょう。更新できたからといって設定に問題がないとは限りません。
クライアントを変えるとノードを買い直す必要がある?
クライアントとサブスクリプションサービスは別のものです。既存のサブスクリプションを引き続き使えるかどうかは、利用規約、デバイス制限、出力形式によって決まり、アプリ名によるものではありません。移行を決める前に、提供元へ対応するプロトコル構成とクライアントを確認してください。
結論:ノードの要件でコアを選び、端末側の通信制御を確認する
初めてインストールする場合で、ノードにXrayの機能が必要ならv2rayNGを選びましょう。動作確認済みのV2Fly設定がある場合は、v2flyNGをそのまま使えます。接続できない場合はプロトコル構成全体とログを確認し、接続済みなのにアプリが使えない場合はVPNの通信制御、DNS、ルーティングを調べてください。すべての問題をブランチの違いに結びつけないようにしましょう。