Androidでv2rayNGとv2flyNGのどちらを選ぶかは、まずノードが必要とするプロトコルやトランスポート設定を確認し、クライアントがその設定を保持できるかで判断します。クライアント・コア・プロトコルの違いを整理し、REALITY、Vision、通常のTLSの関係や、サブスクリプション移行時と接続できない場合の確認手順を解説。VMessノードを問題なく使えている方も、乗り換えが必要か判断できます。
1. Project V、V2Fly、Xrayの関係
Project Vは、ネットワークプロキシツールを中心とするプロジェクト群で、V2Rayはその中核ソフトウェアです。V2FlyコミュニティはV2Rayの開発・保守を引き継いでいます。クライアントのコア選びでいう「V2Flyコア」は、通常、このプロジェクトが保守するV2Rayコアを指します。一方、Xrayは2020年にV2Rayのコードを基に分岐し、その後、独自の機能と設定の進化を続けています。
コードの出自が共通でも、現在の設定をそのまま相互に使えるとは限りません。どちらもインバウンド、アウトバウンド、ルーティングなどの基本概念や一部の共通プロトコルを備えていますが、新機能やフィールド名、設定形式は異なる場合があります。Xrayで読み込める設定が、V2Flyでもそのまま使えるとは限りません。
- クライアント:サーバー一覧、サブスクリプションの読み込み、QRコードのスキャン、システム連携などを提供します。この記事ではAndroid向けのv2rayNGとv2flyNGを比較します。デスクトップ向けはv2rayNです。
- コア:設定を読み込み、接続を処理します。v2rayNGはXray、v2flyNGはV2Flyを使用します。v2rayNで使えるコアは、インストールしたバージョンと実際の設定を確認してください。
- プロトコルとトランスポート:VMessやVLESSはプロキシプロトコル、TCPやWebSocketなどはトランスポート方式です。TLSやREALITYは、さらに別の層にある接続のセキュリティ設定です。
2. VMess、VLESS、REALITY、XTLSの対応範囲
ノード名に「V2Ray」とあるかどうかだけでは、互換性を判断できません。ノードには少なくともアドレス、ポート、認証方式、トランスポート設定が含まれ、TLSやREALITYのパラメーターが加わる場合もあります。サブスクリプションのグループ名は単なるラベルで、プロトコル対応状況を示すものではありません。
| 項目 | Xray系 | V2Fly系 | 選ぶ際の確認点 |
|---|---|---|---|
| VMess | 対応 | 対応 | トランスポート、TLS、パス、サーバー側の設定も確認してください。プロトコル名だけを合わせても不十分です。 |
| VLESS | 対応。関連する拡張機能も利用可能 | VLESSを実装。具体的な組み合わせはコアとクライアントの対応状況を確認 | 通常のVLESSと、REALITYやVisionを組み合わせた構成は別物です。 |
| REALITY | 対応。互換性のあるバージョンが必要 | XrayのREALITY設定には非対応 | ノードでREALITYが必要な場合は、この記事で取り上げるAndroidクライアントではv2rayNGを選びましょう。 |
| XTLS Vision | xtls-rprx-visionのフロー制御に対応 |
このXrayのフロー制御には非対応 | サーバー側で指定されたflowを保持してください。フィールドを削除して互換性を確保しようとしてはいけません。 |
| WebSocket + TLS | 該当する設定に対応 | 該当する設定に対応 | コア名だけで判断せず、パス、Host、SNI、証明書を確認してください。 |
VLESS自体にトランスポートの暗号化機能はなく、「VLESSを使っている」からTLSも有効だとは限りません。また、REALITYはVMessやVLESSと並ぶプロキシプロトコルではありません。Xrayの設定ではトランスポートのセキュリティ設定にあたり、VLESSやVisionと組み合わせて使われることが多いものの、それぞれ異なる設定レイヤーの名称です。
XTLSは技術の進化の流れを指し、古い資料にあるXTLSの設定が現在のノードでも使えるとは限りません。flow=xtls-rprx-visionを使う場合は、サーバー側が指定した組み合わせ全体を設定してください。古い手順を参考に、トランスポートのセキュリティ設定をそのままxtlsに変更するのは避けましょう。クライアントにノードが表示されても、コアがすべてのパラメーターを受け付けたとは限りません。
結論:まずsecurityとflowを確認し、その後クライアントを比較
サブスクリプションのノードにsecurity=realityまたはflow=xtls-rprx-visionが含まれる場合は、v2rayNGを優先してください。VMess + WebSocket + TLSだけなら、現在使えているクライアントをそのまま使いましょう。コア名だけを理由に乗り換える必要はありません。
3. Androidではv2rayNGとv2flyNGのどちらを選ぶ?
用途が重なる2つのクライアントですが、「新しいコアほど速い」「古いプロトコルほど安定」といった決めつけだけで選ぶことはできません。実際の通信状況は、サーバーの負荷、接続ネットワーク、DNS、ルーティング、トランスポートの組み合わせにも左右されます。同じネットワークとサーバーで比較テストをしていない限り、速度差を一概に示すことはできません。
v2rayNG · Xrayコア
おすすめAndroid端末に新規インストールし、ノードでREALITYまたはVisionが必要な場合におすすめです。インポート後、サーバー編集画面でトランスポートのセキュリティ、フロー制御、サーバー名、公鍵関連のパラメーターを確認し、変換時に設定が欠落していないかチェックしてください。
おすすめの用途:VLESS + REALITY、Vision、およびXrayが明示的に必要なノード。
v2flyNG · V2Flyコア
既存の設定をV2Fly系で管理していて、現在のノード構成が正常に動作している場合は、そのまま使い続けられます。VMessなど共通プロトコルでもトランスポートのパラメーターは確認してください。REALITYを含むリンクをインポートしても、非対応の機能が使えるようになるわけではありません。
おすすめの用途:既存のV2Fly設定、互換性を確認済みのVMessノード、設定の再現。
上記のおすすめはプロトコル要件に基づくもので、あらゆる端末を対象にした性能ランキングではありません。現在のv2flyNGが正常に起動し、目的のサイトにアクセスでき、ルーティングも想定どおりで、サブスクリプションにXray専用機能が含まれていないなら、目的のない移行より既存設定を維持するほうが管理しやすいでしょう。一方、サーバー側でREALITYが必須なら、非対応の設定を何度も変更するのではなく、互換性のあるクライアントに切り替えてください。
4. ノードの各フィールドを確認し、リモートポートとローカル待ち受けを区別
インポート後の最初の確認では、ポートから見ていきましょう。ここではリモートの443、ローカルのSOCKS待ち受け10808、HTTP待ち受け10809を例に、それぞれの役割を説明します。後者2つは設定例であり、すべてのクライアントやバージョンで同じポートが有効になるとは限りません。
リモートポートはノードの提供元が指定するもので、サーバーの待ち受けポートと一致している必要があります。ローカルポートは端末上のアプリからの接続を受け付けるためのもので、リモートポートと同じである必要はありません。AndroidのVPNモードはシステムのVPNインターフェースを通じて通信を処理するため、「すべてのアプリがローカルの10808に手動で接続する」とは限りません。待ち受け範囲を変更すると、ほかの端末から接続できるかどうかにも影響します。トラブルシューティングのために、安易にLANからの接続を許可しないでください。
- プロトコルと認証:VMessとVLESSのどちらかを確認し、ユーザーIDがすべて入力されているか確かめます。2つのプロトコルの編集画面を、同じように使えるフォームと考えてはいけません。
- トランスポート:TCPかWebSocketかを確認します。WebSocketではパスとHostもチェックしてください。フィールドを空欄にしてよいかどうかは、サーバー側の設定に従います。
- 通常のTLS:SNIとサーバー証明書の要件を確認してください。証明書の検証を無効にする方法を、長期的な解決策にしてはいけません。
- REALITY:サーバー名、サーバー側から指定された公鍵、Short ID、フィンガープリントの設定を確認してください。リンク内の
pbk、sid、sniは共有用パラメーターです。コアのJSONフィールドと同じ名前とは限りません。 - Vision:
flowがサーバー側の設定と一致していること、現在のコアがそのトランスポート構成に対応していることを確認してください。エラーを消すためにフロー制御の設定を削除してはいけません。
5. パソコンとAndroidで同じサブスクリプションを使う2つの方法
デスクトップでv2rayN、スマートフォンでAndroid向けクライアントを使う場合、同じノード提供元を利用できますが、両端末の実行設定が完全に一致するとは限りません。通常、サブスクリプションで更新されるのはサーバー情報です。システムプロキシ、VPN接続、アプリごとの設定、DNS、ローカルルーティングルールは、各端末で個別に管理します。
ノードの機能に合わせてデスクトップとAndroidのクライアントを選ぶ
方法A:ノードにREALITYまたはVisionが含まれる場合
- デスクトップではv2rayNを使い、互換性のあるXrayコアで設定が動作することを確認します。
- Androidではv2rayNGを使い、同じ提供元の互換性のあるサブスクリプションをインポートします。
- 両端末でセキュリティ設定と接続中のサーバーを確認し、実際にアクセスできるかテストします。
方法B:動作中のV2Fly設定を使い続ける場合
- デスクトップでは、現在のv2rayNバージョンで選択できるコアを確認します。
- Androidではv2flyNGを引き続き使い、ノードの構成が両端末でサポートされていることを確認します。
- ルーティングとDNSの設定は端末ごとに記録し、ルールの違いをコアの違いと混同しないようにします。
同じサブスクリプションで共有できるのはノードの提供元です。更新頻度、接続中のサーバー、端末ごとのルールはそれぞれ確認してください。
実際に移行するときは、新しいクライアントにサブスクリプションを追加して更新し、対象のノードを1つ編集して各フィールドを確認します。以前のクライアント設定も記録しておきますが、テスト中はプロキシの入口を1つだけ有効にしてください。Androidでは通常、同じユーザー環境で有効にできるVPNサービスは1つです。2つのクライアントがVPNインターフェースを交互に取得すると、接続結果を正しく比較できなくなります。
- 共有QRコードやサブスクリプションURLに接続情報が含まれる場合があります。公開の掲示板やフォーラムには投稿しないでください。
- サブスクリプションの更新で、サーバー項目に手動で加えた変更が上書きされることがあります。長期的に残したい変更は別途記録してください。
- デスクトップでシステムプロキシ、AndroidでVPNモードを使う場合、通信を処理する範囲が異なることがあります。ブラウザー上の表示だけで比較しないでください。
6. インポートできても接続できない場合:4つの層を順に確認
「サーバー一覧にノードが表示された」というだけでは、クライアントが解析または保存できたことしか分かりません。接続が確立したとは限りません。設定が起動できるかを確認してから、リモート接続、ハンドシェイク、通信のルーティングを順に調べましょう。一度に変更する設定は1種類に絞ると、どの変更が効果をもたらしたか分かりやすくなります。
- コアの起動を確認:クライアントのログを開き、まず設定の解析エラーや起動エラーを確認します。未対応フィールドや未知のフロー制御が表示された場合は、DNSを変更するのではなく、コアの対応状況とバージョンを確認してください。
- リモートへの到達性を確認:サーバーのアドレスとポートに誤りがないか確認し、接続タイムアウト、接続拒否、ドメイン名の名前解決失敗を区別します。それぞれ問題の層が異なるため、すべてを「プロトコルの問題」として扱うことはできません。
- ハンドシェイクのパラメーターを確認:TLS関連のエラーでは端末の時刻、SNI、証明書を確認します。REALITYの場合は、サーバー名、公鍵、Short IDを調べてください。サーバー側のパラメーターが分からない場合は、ノードの提供元に確認し、手当たり次第に組み合わせを試さないでください。
- 通信の処理と振り分けを確認:コアが起動しているのにアプリが直接接続する場合は、VPNの許可、アプリごとの対象設定、バイパスルール、DNSを確認します。デスクトップでは、v2rayNのシステムプロキシが有効か、対象アプリがシステムプロキシを使う設定かを確認してください。
2つのコアを比較するなら、少なくとも端末、接続ネットワーク、サーバー、プロトコルとトランスポートの組み合わせを同じにして、接続結果を記録してください。ネットワークの切り替え、出口の違い、ルーティングルールの違いは、いずれも別の要因になります。接続テストで得た1回の遅延だけでダウンロード速度を判断することはできず、あらゆる環境で特定のコアのほうが速いと証明することもできません。
結論:エラー発生時の状態を記録してから、コアを変えるか判断
クライアントとコアのバージョン、プロトコル、トランスポート、個人情報を伏せた最初の関連エラーを記録してください。REALITYやVisionが非対応ならv2rayNGに切り替えます。証明書、アドレス、ルーティングの問題なら該当する設定を先に修正してください。クライアントを変えても自動的に解決するとは限りません。
7. クライアント選びでよくある質問
VMessノードを使っています。すべてVLESSに切り替える必要はありますか?
プロトコル名だけを理由に切り替える必要はありません。まず、現在のノードで接続や保守に問題がないか確認してください。VLESSに変更するには、サーバー側でも対応する接続先と認証情報を用意する必要があります。クライアントのプロトコル欄をVLESSに変えるだけでは使えません。トランスポート、セキュリティ層、ルーティングの設定も合わせて確認してください。
v2flyNGでVLESSリンクをインポートできれば、REALITYにも接続できますか?
そうとは限りません。共有リンクを解析できることと、コアが該当機能を実装していることは別です。VLESSの基本対応だけでは、REALITYやVisionに対応していることにはなりません。これらが必要な場合は、互換性のあるXray系を選び、インポート後のフィールドも確認してください。
v2flyNGからv2rayNGに移行すると、ルーティングルールも引き継がれますか?
通常のノード共有やサブスクリプションには、端末側のルーティング、DNS、アプリごとの設定、VPNオプションがすべて含まれるわけではありません。移行前にこれらの設定を個別に記録し、移行後に1つずつ戻してください。サーバー一覧が同じでも、通信の振り分け結果は異なる場合があります。設定全体をインポートするときは、形式とコアの互換性も確認してください。
デスクトップでは接続できるのにAndroidではできません。Androidのコアが古いのでしょうか?
まず両端のコアのバージョンとノードの各フィールドを比較し、次にネットワーク環境を比べてください。デスクトップは有線、スマートフォンはモバイルデータ通信を使っている場合があり、DNS、IPv6の経路、VPNのアプリ別ルールも異なることがあります。こうした違いを除外してから、具体的なコアの機能が原因かどうか判断してください。