Androidでは、まずノードの要件に合わせてコアを選び、その後にクライアントの設定を比較します。サブスクリプションにVLESS、REALITY、または指定のXTLS Visionが含まれる場合は、Xray搭載のv2rayNGを優先しましょう。既存のVMess設定がV2Fly環境で作成されたものなら、v2flyNGを使い続ける選択肢もあります。この記事では、プロトコルの項目、サブスクリプションのインポート、ルーティング設定の移行という3つの観点から確認方法を説明します。「インポートできた」ことと「接続できた」ことは別々に確認してください。
コアとクライアント:まず役割の違いを確認
Project Vは、関連するプロキシ技術やツールのエコシステムです。その中でもV2Rayは重要なプロジェクトの一つです。V2Flyコミュニティはv2ray-coreの保守を引き継ぎ、Xray-coreはその技術を基に2020年に分岐したコアプロジェクトです。両者には共通する設定の流れがありますが、その後の機能や項目の解釈、リリース時期はそれぞれ独自に進化しています。名前だけを変えた同一のプログラムではありません。
コアは接続プロトコル、トランスポート、セキュアハンドシェイク、DNS、ルーティングを処理します。クライアントはサブスクリプション管理、ノード編集、サービスの起動、OSのネットワーク機能との連携を担います。Android版ではv2rayNGがXrayコアを、v2flyNGがV2Flyコアを使用します。クライアント画面に項目があっても、すべての世代のコアがその機能に対応しているとは限りません。反対に、コアが機能に対応していても、クライアントの画面に入力欄が用意されているとは限りません。
- クライアントのバージョン:サブスクリプションの解析、編集画面、Android VPNサービスとの連携方法を左右します。
- コアのバージョン:設定項目が認識されるか、どのハンドシェイクやトランスポートの実装が使われるかを左右します。
- サーバー設定:クライアントに入力するプロトコル、セキュリティ方式、トランスポートのパラメーター、認証情報を決めます。
- サブスクリプションの形式:これらのパラメーターをクライアントに正しく渡せるかを左右します。不足しているサーバー情報を自動で補うものではありません。
トラブルシューティングでは、アプリとコアのバージョンを別々に記録してください。まずアプリの「バージョン情報」を確認し、次にサービス起動ログでコアのバージョンを調べます。画面にアプリのバージョンしか表示されていない場合、それをコアのバージョンと判断しないでください。デスクトップ版v2rayNもクライアントとコアの2層構成です。端末間で比較するときは、アプリ名ではなく、対象ノードが実際に使っているコアを比べましょう。
プロトコルの互換性:VLESS、REALITY、トランスポートを個別に確認
プロトコル名は確認項目の一つにすぎません。ノードにはトランスポートやセキュリティ層、追加パラメーターも含まれます。たとえばVMessとWebSocket・TLSの組み合わせや、VLESSとREALITY・指定のflowの組み合わせです。正しく接続するには、クライアントがこれらすべてに対応している必要があります。次の表は選定の目安です。実際のバージョンで機能を確認する代わりにはなりません。
| 設定要件 | Xray / v2rayNG | V2Fly / v2flyNG | 確認する項目 |
|---|---|---|---|
| VMess + WebSocket + TLS | 主な対応状況 | 主な対応状況 | UUID、パス、Host、SNI、セキュリティ設定 |
| 基本的なVLESS接続 | 主な対応状況 | プロトコル名だけで非対応と決めつけず、コアとクライアント画面の実装を確認 | トランスポート、セキュリティ層、利用可能な項目の組み合わせ |
| VLESS + REALITY | 優先候補。コアのバージョンも確認 | そのまま置き換えられる同等の選択肢ではない | serverName、公開鍵パラメーター、shortId、フィンガープリントの設定 |
| XTLS Vision | サーバーの指定に従ってflowを設定 | flowの項目をコピーしても同等の対応にはならない | xtls-rprx-visionが明示的に必要か |
| カスタムJSON設定 | Xrayの設定仕様に沿って確認 | V2Flyの設定仕様に沿って確認 | 設定形式、項目の階層、アウトバウンドのタグ、リソースファイル |
VLESSとREALITYは同じものではありません。VLESSはプロキシプロトコル、REALITYは接続時に使うセキュリティ機構です。Visionは特定のデータ処理方式に関わります。セキュリティ方式をTLSに変えたり、flowを削除したり、REALITYのパラメーターを消したりしても「互換モード」にはなりません。ハンドシェイクの条件が変わるため、サーバー側に対応する接続設定がなければ、変更後も接続できません。
結論:パラメーターの組み合わせ全体でコアを選ぶ
ノードがREALITYまたはxtls-rprx-visionを要求する場合は、まずv2rayNGを選び、使用中のコアがその組み合わせに対応しているか確認してください。VMessなど両方で使える機能だけなら、サブスクリプションの解析や端末側の設定を比べれば十分です。名前を変えるだけのために移行する必要はありません。
Androidでの選び方:メインと代替の使い分け
新しく設定する場合は、まずv2rayNGを選ぶのが一般的です。Xrayでよく使われるVLESSやREALITYの設定に対応し、こうしたサブスクリプションを使う際のパラメーター変換を減らせます。これは互換性を重視した推奨であり、あらゆるネットワークで通信速度が速くなるという意味ではありません。遅延やスループットは、サーバーの負荷、通信事業者の経路、トランスポート、端末の性能にも左右されます。コアの名前だけで一律に順位を付けることはできません。
v2rayNG:Xray系
おすすめVLESS、REALITY、またはVisionが必要な設定を含むサブスクリプションに適しています。インポート後はノード名だけで判断せず、トランスポート、セキュリティ設定、flowも確認してください。
おすすめの用途:Androidの普段使い、Xrayの機能が明確に必要なノード
v2flyNG:V2Fly系
既存のV2Fly設定の手順を使っていて、現在の接続が安定し、プロトコルのパラメーターにも対応している環境に適しています。設定を引き継ぐ前に、保守元とサーバー側の要件を確認してください。
おすすめの用途:既存のV2Fly設定を継続、共通プロトコルとの互換性を検証
現在v2flyNGでVMessノードが正常に動作していて、新しいプロトコルが不要なら、ひとまずそのまま使えます。サブスクリプションにREALITYノードが追加された場合は、新しい設定だけをv2rayNGで試せばよく、先に旧アプリや既存のルーティング設定を削除する必要はありません。2つのアプリにそれぞれ設定を保存できますが、通常、AndroidでVPN接続を使用できるアプリは同時に1つだけです。テスト時は、もう一方のアプリの接続を先に停止してください。
サブスクリプションの移行:一覧に表示されても設定が完全とは限らない
サブスクリプションURLは設定を取得するための入口であり、異なるコア間の互換性を保証するものではありません。取得データには、個別ノードの共有リンク、エンコードされたリンク一覧、特定の設定形式などが含まれる場合があります。解析できても、ノード名やサーバーアドレスだけで、新しいセキュリティパラメーターが取り込まれないことがあります。「ノード一覧が表示された」ことと「コアのハンドシェイクが成功した」ことは、別々に確認してください。
- 元の設定を保存:現在のプロトコル、トランスポート、セキュリティ方式、DNS、アプリ別ルールを記録します。サブスクリプションURLにアクセストークンが含まれることがあるため、バックアップを公開スクリーンショットやログに載せないでください。
- サブスクリプショングループを追加:v2rayNGの「サブスクリプショングループ設定」で項目を追加し、元のサブスクリプションURLを入力して保存します。ホーム画面に戻って「サブスクリプションを更新」を実行してください。メニューの位置はバージョンによって異なる場合があるため、同じ名称の機能を探してください。
- ノードの編集画面を開く:アドレス、ポート、UUID、トランスポートの種類、セキュリティ設定を一つずつ確認します。WebSocketではパスとHost、TLSではSNIを確認してください。REALITYでは公開鍵関連のパラメーターとshortIdも確認します。
- flowを確認:サーバーがVisionを明示的に要求する場合は、クライアントに
xtls-rprx-visionが保持されているか確認してください。警告を消すために、この項目を安易に空欄にしないでください。 - 起動してログを確認:まず設定を読み込めることを確認し、次にハンドシェイクの完了を確認します。最後に実際のWebページと、プロキシが必要なアプリで動作をテストしてください。DNS、ルーティング、プロトコルを一度に変えず、1回の検証で変更する項目は一つに絞りましょう。
ポートと認証:具体的な項目からエラーを特定
ローカルプロキシのポート、サーバーの待ち受けポート、プロトコルの認証パラメーターは、それぞれ異なる階層の設定です。以下では例として2つのポートとVMessのパラメーターを取り上げます。ポート番号はあくまで例で、すべての環境の初期値ではありません。実際の設定では、クライアントの設定とサーバーから提供された情報を使用してください。
ローカルのSOCKS入口が127.0.0.1:10808の場合、これは端末内のアプリが接続するためのものです。リモートノードの「サーバーポート」に入力してはいけません。同様に、サーバーのポートが443でも、必ずTLSを使うとは限りません。ポート番号は待ち受け位置を示すだけで、実際のセキュリティ方式は設定によって決まります。Android VPNモードを使うアプリの通信では、通常、このSOCKSアドレスを個別に入力する必要はありません。
VMess AEADの設定では、通常alterId=0を使います。古い手順に記載された0以外の値をそのまま使わず、サーバーが提供する現在の設定を再インポートしてください。この値はVMess用であり、VLESSに「互換パラメーター」として追加するものではありません。
- 不明な項目や設定の解析エラーが表示される:まず設定形式とコアのバージョンを確認します。まだネットワーク接続の確認段階ではありません。
- 接続拒否やタイムアウトが表示される:まずサーバーアドレス、待ち受けポート、ネットワーク経路を確認します。証明書が原因だとすぐに決めつけないでください。
- 証明書の検証失敗が表示される:システム時刻、SNI、証明書の対応関係を確認し、証明書の検証は有効のままにしてください。
- 接続済みなのに一部のアプリが使えない:認証情報をすぐに変更せず、アプリ別プロキシ、DNS、ルーティングルールを確認してください。
ルーティングと複数端末:設定を再利用できる範囲
どちらのコアでも、ドメインやIPなどの条件に基づいてルーティングできます。ただし、同じ名前のルールがあっても、設定ファイル全体をそのまま移行できるとは限りません。ルールが参照するアウトバウンドのタグが存在すること、ドメイン・IPデータを読み込めること、DNSの名前解決方針が意図したマッチング結果につながることを確認してください。移行時は、まず最小限の設定でノードに接続できることを確認し、その後でルーティングを戻すと、すべてのルールを一度に読み込むより問題を特定しやすくなります。
移行手順:ノード設定をそろえてから、端末側のルールを戻す
デスクトップ:v2rayN
- 現在のノードで使っているプロトコル、トランスポート、コアを記録する。
- システムプロキシまたはTUNが実際に制御している範囲を確認する。
- カスタムDNSとルーティング設定を個別に保存する。
Android:v2rayNGまたはv2flyNG
- 同じサブスクリプションをインポートし、セキュリティとトランスポートの項目を再確認する。
- 「設定」→「アプリ別プロキシ」で対象アプリを確認する。
- まず最小限のルールでテストし、その後ドメインとIPのルーティングを戻す。
同じサブスクリプションから同じノード情報を取得できても、システムプロキシ、VPN権限、アプリ別リスト、ローカルのルーティング設定すべてが自動で同期されるわけではありません。
アプリ別プロキシの設定は特に注意して再確認してください。「選択したアプリのみプロキシ」と「選択したアプリを除外」は、動作が正反対です。新しいクライアントが接続済みなのにブラウザーの通信が想定した経路を通らない場合は、まずリストのモードとブラウザーが選択されているかを確認し、その後でドメインルールを調べます。テスト中は古いクライアントのVPNサービスを停止し、現在のシステム接続を新しいコアの動作と取り違えないようにしてください。
結論:新しいプロトコルが不要なら、名前だけを理由にコアを変える必要はない
既存のV2Fly設定で安定しているなら、そのまま使いましょう。REALITYまたはVisionが必要な場合はv2rayNGに切り替えてください。移行が完了したかどうかは、パラメーターがそろっていること、ハンドシェイクに成功すること、対象アプリとルーティングが期待どおりに動作することを基準に判断します。サブスクリプション一覧に表示されただけでは完了とは言えません。