v2rayNv2rayNGv2flyNGの選び方|3クライアントの機能と対応プラットフォームを比較

対応プラットフォーム、コア系列、サブスクリプション管理、ルーティング機能で3つのクライアントを比較。デスクトップとAndroidの推奨やv2flyNGへ移行すべきケースを解説します。

3つのクライアントは名前こそ似ていますが、用途は同じではありません。v2rayNはWindows、macOS、Linuxのデスクトップ環境向け、v2rayNGとv2flyNGはAndroid向けです。後者2つは画面構成や操作手順が近い一方、主な違いはコア系列にあります。v2rayNGはXrayコア、v2flyNGはv2flyコアを使用します。選ぶときは、まず端末のプラットフォームを確認し、次にノードのプロトコルを照合しましょう。画面上のボタンを一つずつ比べるより、効率的に判断できます。

この記事の要点

デスクトップ端末ならv2rayN、Androidの日常利用ならXrayコアを採用するv2rayNGを優先します。v2flyコアが必要な場合、既存のVMess設定を維持したい場合、または既存のv2fly環境を再現したい場合に限り、v2flyNGを選ぶとよいでしょう。以下では、サブスクリプション、ルーティング、ポート、移行の具体的な判断方法を紹介します。

まず対応プラットフォームで候補を絞る

プラットフォームは最も明確な選定条件です。Windows、macOS、Linuxのデスクトップでサブスクリプションを管理し、システムプロキシを切り替え、リアルタイムログを確認したいなら、候補はv2rayNに絞られます。サーバー一覧、サブスクリプションのグループ、ルーティング設定、コアのログを1つのデスクトップ画面で管理でき、マウスとキーボードで操作しやすく、数十件のノードもまとめて管理できます。

Androidではv2rayNGとv2flyNGから選びます。どちらもサブスクリプションや個別の共有リンクを読み込め、AndroidのVPNインターフェースを通じて特定アプリまたは全通信を処理できます。名前に「NG」が付いているからといって、同じアプリの別テーマだと考えてはいけません。サブスクリプションにXray専用の転送パラメータが含まれる場合、コアの違いが設定を起動できるかどうかに直結します。

v2rayN

デスクトップではサーバー一覧、サブスクリプションのグループ、システムプロキシ、ログ確認をメイン画面に集約し、複数ノードの管理や細かなルーティングに対応します。

対応:Windows、macOS、Linuxのデスクトップ端末

v2rayNG

おすすめ

Xrayコアを採用し、一般的なVMess、VLESS、Reality設定に対応。Androidでの日常的なサブスクリプションとの互換性も比較的広いクライアントです。

対応:Androidのメイン端末、新しいサブスクリプション設定

v2flyNG

v2flyコアを採用し、操作方法はv2rayNGに近い設計です。既存のv2fly設定や従来型のVMess利用環境を主な対象とします。

対応:Androidでv2fly設定を再利用したい場合

コア系列がプロトコルと転送パラメータの対応を左右する

クライアントの画面は設定の編集と保存を担いますが、実際に接続を確立するのは基盤となるコアです。v2rayNは対応するコア選択肢の中で、Xray系を使って一般的な設定を処理できます。v2rayNGもXrayを中心としたクライアントです。一方、v2flyNGは実行層にv2flyを使用するため、設定の提供元、サーバー側、既存ルールがv2flyを前提として構築された環境に適しています。

VMess、VLESS、WebSocket、gRPC、TLS、Realityは同じ階層の用語ではありません。VMessとVLESSはプロキシプロトコル、WebSocketとgRPCは転送方式、TLSとRealityは接続の安全性やハンドシェイクのパラメータに関係します。サブスクリプション内の1つのノードには複数の階層のパラメータが組み合わされることが多いため、クライアントがすべてを正しく認識できなければなりません。ノード名に「高速」や「新プロトコル」と書かれているかだけで判断しないでください。

確認項目 v2rayN v2rayNG v2flyNG
主なプラットフォーム Windows、macOS、Linux Android Android
主なコアの方向性 Xrayのデスクトップ管理 Xray v2fly
一般的なVMessノード 対応 対応 対応
VLESSとReality 優先候補 優先候補 読み込み前にコアの対応状況を確認
デスクトップのシステムプロキシ メニューから操作可能 非対応 非対応
Androidのアプリ振り分け 非対応 対応 対応

結論:まずノードのパラメータを確認し、Androidのコアを決める

サブスクリプションにsecurity=reality、Realityの公開鍵、または短い識別子のパラメータが含まれる場合は、v2rayNGを優先してください。既存の設定が明確にv2flyで生成され、従来型のVMess、WebSocket、TLSが中心なら、v2flyNGを検討します。

バージョン番号もプロトコルの対応状況とあわせて確認しましょう。この記事で操作確認に使用した安定環境は、v2rayN 7.12.x、v2rayNG 1.10.x、v2flyNG 1.10.xです。バージョン番号は記事内の画面や機能入口を確認するための基準であり、3つのプロジェクトが同じコア機能を持つことを示すものではありません。古いバージョンで新しいフィールドを解析できない場合は、不明なフィールドを手動で削除するのではなく、まずクライアントを更新してからサブスクリプションを再読み込みしてください。

サブスクリプション管理の違いは、デスクトップの一括操作とモバイルの簡略化された手順に表れる

v2rayNは一括管理に向いています。一般的な手順は「サブスクリプション」→「サブスクリプション設定」を開き、グループを新規作成してサブスクリプションURLを入力し、その後「サブスクリプション」→「すべて更新」を実行します。更新が完了すると、サーバー一覧にグループごとにノードが表示されます。遅延テスト、絞り込み、並べ替えを使えば候補を効率よく絞れます。仕事用、テスト用、予備の3つに分けている場合も、グループ管理によって誤ったノードへの切り替えを防げます。

v2rayNGとv2flyNGは、タッチ操作で少ない手順で完了できる設計です。通常は右上のメニューから「サブスクリプション設定」を開き、URLを追加してメイン画面に戻り、「サブスクリプションを更新」を実行します。ノードが多い場合は、現在選択しているサブスクリプショングループを先に確認してください。「更新に成功したのに一覧に目的のノードがない」という状況は、別のグループを更新していただけというケースがよくあります。

  1. まずサブスクリプションURLを保存:先頭がhttps://になっているか確認し、コピー時に改行や末尾の空白を含めないでください。
  2. 次に手動で更新:URLを追加しただけではノード一覧は自動生成されません。初回追加後は必ず一度更新を実行してください。
  3. 使用するノードを選択:デスクトップではダブルクリックするか使用サーバーに設定し、Androidではノードをタップして選択状態にします。
  4. 最後にプロキシを起動:v2rayNではシステムプロキシのモードも確認します。Androidでは接続ボタンをタップし、接続状態を確認してください。
3グループ
メイン、予備、テスト用のサブスクリプションに分ける
30秒
モバイル回線で通常の更新タイムアウトを確認する目安
10808
一般的なローカルSOCKSまたは混合ポート
1件
トラブルシューティングでは、既知の正常なノードを1つ残す

ルーティングとローカルポートの実際の違い

v2rayNの強みは、デスクトップでルーティングを編集しやすいことです。よく使う入口は「設定」→「パラメータ設定」で、システムプロキシのモードはトレイメニューまたはメイン画面のシステムプロキシメニューから切り替えます。ルールは通常、上から順に照合され、最初に一致したルールが適用されます。そのため、LANへの直接接続、中国本土のドメインへの直接接続、特定ドメインのプロキシ、最終的なフォールバックを明確な順序で並べてください。

Androidではアプリごとの振り分けをより直接的に設定できます。v2rayNGとv2flyNGでは、どのアプリの通信をプロキシ接続に通すかを指定でき、ブラウザーや特定のツールだけにプロキシを使わせたい場合に便利です。ドメインとIPのルールは引き続きコアが処理し、アプリの振り分けはシステム通信がコアに入る前に行われます。両者は代替関係ではありません。あるアプリを除外すると、そのアプリ内のドメインルールはプロキシルーティングを通らなくなります。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

上記の構成は、プライベートアドレスを直接接続し、指定したドメイン集合に一致するリクエストも直接接続するという2つの一般的な目的を表しています。完全なJSONを読み込む前に、クライアントがカスタム設定モードになっているか確認してください。通常のサブスクリプションノードを画面から自動生成する場合、JSON全体をノードURLの入力欄に貼り付けてはいけません。ルール内のoutboundTagは既存の出力タグとも一致している必要があり、一致しないとログに対応する出力が見つからないというエラーが表示されます。

  • v2rayNのポート確認:「設定」→「パラメータ設定」→「基本設定」を開き、ローカルの待受ポートを確認します。一般的な設定では10808が使われますが、変更している場合は画面に表示された値を優先してください。
  • v2rayNGのポート確認:「設定」→「ローカルポート」を開き、他のローカルサービスがそのポートを使用していないことを確認します。
  • v2flyNGのポート確認:同様に設定画面でローカルポートと振り分け項目を確認します。設定を移行する際、以前のクライアントのポートが自動的に引き継がれるとは限りません。
  • ログの確認:address already in useが表示されたら、まずローカルポートを変更します。ハンドシェイクがタイムアウトする場合は、ノードのアドレス、ネットワーク、転送パラメータを重点的に確認してください。

結論:複雑なデスクトップルーティングにはv2rayN、Androidのアプリ振り分けにはv2rayNG

複数のdomain、ip、geositeルールを管理する必要がある場合は、デスクトップ画面のほうが編集や見直しに向いています。モバイルでは少数のルールとアプリの切り替えを中心にすると、複雑なJSONをタッチ操作で誤って変更するリスクを抑えられます。

v2rayNGからv2flyNGへ乗り換える価値があるケース

多くのAndroidユーザーにとって、画面が似ているという理由だけでクライアントを変更する必要はありません。移行にはコストがあり、サブスクリプショングループ、ローカルルール、アプリの振り分けリスト、カスタムDNS設定を改めて確認する必要があります。切り替える価値があるのは、設定の管理者がv2flyコアを明確に要求している場合、または既存のVMess設定がv2fly環境で長期間検証されている場合です。

切り替える前に、現在のクライアントに登録されているサブスクリプションURLと重要な設定を記録し、2つの接続を同時に起動しないでください。Androidでは、この種の接続が同時にシステム通信を引き継げるのは1つだけです。もう一方のクライアントでノードが選択済みと表示されても、データを送受信しているとは限りません。移行後はまず1つのノードでテストし、その後アプリの振り分けとカスタムルーティングを段階的に戻します。

サブスクリプションの大半がVLESSとRealityの場合、Androidではどちらを選ぶべきですか?

v2rayNGを優先してください。読み込み後にノードの詳細を開き、アドレス、ポート、転送方式、サーバー名、Realityパラメータがすべて揃っているか確認してから接続し、リアルタイムログを確認します。

VMessとWebSocketを使い続けていますが、v2flyNGから乗り換える必要はありますか?

現在のノードが安定して接続でき、サブスクリプションの更新も正常で、振り分けルールにも問題がなければ、そのまま使い続けて構いません。現在のコアが認識できないフィールドがサブスクリプションに追加された場合や、管理側がプロトコルを明確に変更した場合にのみ、移行を検討してください。

2つのAndroidクライアントを同時に残しておけますか?

それぞれをインストールして設定を保存できますが、テスト時は一度に1つだけ起動してください。切り替える前に現在の接続を切断し、もう一方のクライアントを開きます。これにより、古い接続状態を新しいクライアントのテスト結果と取り違えるのを防げます。

サブスクリプション更新後にノード数が0になった場合はどうすればよいですか?

まず現在のグループとサブスクリプションURLを確認し、更新時のメッセージを確認します。タイムアウトが表示された場合は、既知の正常なノードに一度接続してから、サブスクリプション設定でプロキシ経由の更新を有効にして再試行します。形式エラーが返る場合は、サブスクリプション提供元に内容の形式を確認してください。

デスクトップとAndroidで同じサブスクリプションを使えますか?

通常は使えますが、それぞれの端末に個別に読み込む必要があります。サブスクリプションに複数のプロトコルが含まれる場合は、両方の端末で非対応ノードを確認してください。デスクトップのシステムプロキシ設定とAndroidのアプリ振り分けリストは、サブスクリプションと一緒には同期されません。

3つのクライアントの最終選択リスト

すぐに結論を出したい場合は、端末のプラットフォーム、ノードのプロトコル、ルーティングの複雑さを順番に当てはめてください。まずプラットフォームで不適切な候補を除外し、プロトコルでコアを決め、最後に操作画面の好みを比較します。この順番なら、対応していないプラットフォームで存在しない機能を探し続ける事態を避けられます。

  1. Windows、macOS、Linux:v2rayNを選びます。デスクトップでのサブスクリプショングループ管理、ノードの一括管理、システムプロキシの切り替え、詳細なログによるトラブルシューティングに適しています。
  2. Androidで、サブスクリプションにVLESS、Reality、または新しいXrayパラメータが含まれる場合:v2rayNGを選び、初回読み込み後にノード詳細が完全か確認します。
  3. Androidで、設定の管理元がv2flyコアを明確に使用している場合:v2flyNGを選び、VMess、転送方式、TLS、ルーティングの各フィールドを重点的に確認します。
  4. アプリごとの振り分けが必要:v2rayNGとv2flyNGからコアの要件に合うものを選び、設定画面でアプリのリストを設定します。
  5. 大量のdomain、ip、geositeルールが必要:v2rayNのデスクトップ環境で編集、並べ替え、ルールの一致ログを確認する方法を優先します。

クライアントを決めたら、初回接続は最小限のテストだけ行います。サブスクリプションを1つ読み込み、ノードを1つ選び、デフォルトのルーティングを維持したままログを開いて対象サイトにアクセスします。基本接続を確認してから、カスタムDNS、アプリの振り分け、複雑なルーティングを追加してください。一度に1つの変数だけ変更すれば、問題が発生した際にノード、コア、ポート、ルールのどれが原因かをログから正確に判断できます。

V2Rayクライアントをダウンロード Windows、macOS、Android、Linux