XrayとV2Flyのコア比較:プロトコル対応、更新ペース、選定のポイント

VLESSやREALITYなどの対応プロトコル、設定互換性、更新ペース、コミュニティの保守状況を比較し、ノードのプロトコルから最適なコアを選ぶ実践的な判断基準を解説します。

この記事の要点

まずノードのプロトコルとトランスポートパラメータを確認し、そのうえで Xray と V2Fly のどちらを使うか決めます。REALITY や XTLS Vision のパラメータを含むノードは Xray を優先し、VMess、WebSocket、TLS が中心の既存サブスクリプションでは両方のコアを試します。共有リンク、クライアントログ、実際の接続結果を確認すれば、コア名だけに頼らず選択できます。

XrayとV2Flyはそれぞれ何を解決するのか

Xray と V2Fly はいずれも Project V に関連する技術体系に由来し、インバウンド、アウトバウンド、DNS、ルーティングルール、多様なプロキシプロトコルを扱えます。基本的な設定概念にも共通点が多く、inbound でローカル通信を受け、outbound でリモートサーバーへ接続し、routing ルールで出口を決めます。ただし、両者は独立して保守されているプロジェクトです。プロトコル拡張、フィールド定義、デフォルト動作、リリースペースが完全に同じだと考えてはいけません。

Xray を選ぶ際の要点は、新しいプロトコルとトランスポートの組み合わせです。VLESS、REALITY、XTLS Vision などのパラメータを含むノードは、通常 Xray エコシステムを前提に構成されています。デスクトップでは v2rayN、Android では v2rayNG を利用できます。クライアントが設定を生成して Xray コアを呼び出すため、ユーザーはサブスクリプションのインポート、ノード選択、システムプロキシまたは VPN モードの有効化を行うだけで、完全な JSON を手書きする必要はありません。

V2Fly の主な価値は、V2Ray 系設定の継続的な保守と既存設定との互換性にあります。VMess、WebSocket、TLS、TCP が中心のノードでは、V2Fly も検討できる実行コアです。Android で V2Fly の利用が明確に必要な場合は v2flyNG を選び、実行ログで実際に読み込まれたコアと設定を確認してください。

Xray コア

推奨

VLESS、REALITY、XTLS Vision など、Xray エコシステムでよく使われる組み合わせを優先的に処理し、VMess ノードの継続利用にも適しています。

適している用途:新しいサブスクリプション、日常利用のメイン環境、REALITY が必要なノード

V2Fly コア

V2Ray の設定体系を軸に継続的に保守されており、VMess、WebSocket、TLS など既存ノードやルールの検証に適しています。

適している用途:既存設定、VMess ノード、V2Fly が明示的に指定された環境

プロトコルとトランスポートパラメータからコアを判断する

最も早い判断材料は、サブスクリプションから生成されたノード詳細です。まずクライアントのノード編集画面を開き、アドレス、ポート、プロトコル、トランスポート方式、セキュリティ方式、フロー制御の各フィールドを記録します。ノード名にある「高速」「中継」などの表記だけで判断しないでください。これらのメモはコアのハンドシェイクには関係ありません。

VLESS だからといって、すべての実装をそのまま置き換えられるわけではありません。セキュリティ方式が REALITY か、フロー制御が xtls-rprx-vision か、トランスポート層が TCP、gRPC、その他のどれかを確認してください。共有情報に REALITY の公開鍵、ショート ID、serverName、Vision のフロー制御が含まれている場合は Xray を優先し、これらのフィールドを完全な状態で保持します。

ノードの組み合わせ 優先するコア 確認が必要なフィールド よくある結果
VLESS + REALITY + Vision Xray 公開鍵、ショート ID、SNI、フィンガープリント、flow フィールドが欠けていると、通常はハンドシェイク段階で失敗します
VLESS + TLS + gRPC まずサーバー側の要件に合わせて選択 serviceName、SNI、ポート、TLS 設定構造は近くても、拡張機能は項目ごとの確認が必要です
VMess + WebSocket + TLS Xray または V2Fly UUID、Host、Path、SNI、ポート 同じネットワーク環境で接続テストを行い、比較するのに適しています
VMess + TCP Xray または V2Fly UUID、alterId、暗号化方式、ポート 古い設定では、各フィールドが現在もサポートされているか特に確認してください
10808
例:SOCKS ローカルポート
10809
例:HTTP ローカルポート
10回
推奨する連続テスト回数
3秒
1回の接続タイムアウトの目安

サブスクリプションに VMess しか表示されない場合は、同じネットワーク環境で実際の接続を10回テストします。毎回いったん既存の接続を切断し、対象ノードへ接続して同じテスト先にアクセスし、成功回数、最初のレスポンスまでの時間、ログのエラーを記録してください。遅延差が20〜30ミリ秒程度なら、それだけでコアを決める材料としては不十分です。連続した成功率とページ表示の安定性を重視しましょう。

設定に互換性があっても、そのまま入れ替えられるとは限らない

両方のコアが構造化設定を使用し、インバウンド、アウトバウンド、DNS、ルーティングを表現できるとしても、フィールドが同じなのは表面的な互換性にすぎません。各フィールドが使えるかどうかは、コアのバージョン、プロトコル実装、トランスポートモジュールにも左右されます。完全な設定を別の実行コアでそのまま動かすと、未知のフィールド、アウトバウンドの初期化失敗、起動はするものの接続ハンドシェイクに失敗するといった問題が起こる可能性があります。

クライアント間の移行には、完全な JSON よりサブスクリプションリンクのほうが適しています。サブスクリプションサービスは通常、VMess または VLESS の共有情報を出力し、クライアントが自身のコアに応じて最終設定を生成します。移行時はまず元のサブスクリプションをインポートし、クライアントのキャッシュディレクトリをコピーしないでください。更新後は3つのノードを無作為に確認し、プロトコル、セキュリティ方式、SNI、トランスポート方式、ポートが失われていないことを確認します。

  1. 元の設定を保持する。現在のサブスクリプション設定をエクスポートするか、サブスクリプションアドレスを記録し、まだ動作しているノード一覧を上書きしないでください。
  2. 実際のコアを確認する。v2rayN では「設定」→「パラメータ設定」を開き、コア関連の項目を確認します。v2rayNG または v2flyNG では「設定」を開き、バージョン情報と実行ログを確認してください。
  3. 設定を再生成する。移行先のクライアントでサブスクリプションをインポートして更新し、対象コアに合わせてクライアントにフィールドを生成させます。
  4. まず1つのノードで試す。プロトコルフィールドが完全なノードを1つ選び、接続、DNS 解決、ウェブアクセスをテストしてから一括移行します。
  5. 最後にルーティングを戻す。基本接続が正常になってから、ドメイン、IP、プロセス、アプリごとのルールを追加します。コアとルーティングの問題を同時に切り分ける事態を避けられます。
{
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks"
    }
  ],
  "routing": {
    "domainStrategy": "AsIs"
  }
}

上記の断片は、ローカル SOCKS インバウンドとルーティングポリシーのみを示しており、リモートの認証情報は含みません。テスト時はブラウザーまたはデバッグツールを 127.0.0.1:10808 に向け、クライアントが HTTP プロキシを同じ SOCKS ポートに誤設定していないことも確認してください。HTTP インバウンドを別に設定する場合は 10809 を使用し、2つのポートが他のプロセスに占有されていないか確認します。

更新ペースと保守方法が選択に与える影響

更新が速いからといって、接続が自動的に安定するわけではありません。新バージョンでプロトコルパラメータが追加されたり、ハンドシェイクの問題が修正されたり、基盤依存が調整されたりする一方、古い設定の境界的なフィールドが問題として表面化することもあります。実際の利用では、まず新バージョンが現在の問題を解決するか確認し、動作中の環境をバージョン表示だけで即座に置き換えないようにしましょう。

Xray は通常、エコシステム内のプロトコル拡張をより早く取り込みます。サーバー側が REALITY や新しい Vision の動作を採用している場合、クライアントのコアもサービス提供者が求めるバージョンに到達している必要があります。一方、V2Fly は独自の方針で V2Ray の設定、トランスポート、プラットフォーム機能を保守しています。両者のリリース番号に単純な大小関係はなく、数字が大きいほうが高機能とは判断できません。

クライアントのバージョンとコアのバージョンも分けて記録してください。v2rayN、v2rayNG、v2flyNG は画面、サブスクリプション、ルーティングの入口、システムネットワークの制御を担当し、コアは最終設定を解析して接続を確立します。トラブルシューティングでは少なくともクライアントのメジャーバージョン、コアのバージョン、ノードのプロトコル、エラー発生時刻を記録します。「最新版」とだけ書いても問題は再現できません。

推奨構成:プロトコルに合わせてデスクトップとAndroidを統一

デスクトップ版 v2rayN
  • REALITY と Vision ノードには Xray を使用
  • 「設定」→「パラメータ設定」でローカルポートを確認
  • 更新後の回帰テスト用に、検証済みノードを一組残す
Android版 v2rayNG
  • 同じ Xray 対応サブスクリプションをインポート
  • アプリごとのプロキシとローカル DNS の設定を確認
  • 接続に失敗したら、まず実行ログを確認

サーバー側が V2Fly を明示的に要求する場合は、Android で v2flyNG に切り替えて個別に検証してください。2種類のコアが生成した完全な設定ファイルをそのまま入れ替えないでください。

ノードの種類に合わせて実際の構成を選ぶ

初めて使う場合は「プロトコル優先」の順序で進めます。まずサブスクリプション内で最も多いノードの種類を確認し、そのうえでクライアントを決めます。主なノードが VLESS + REALITY なら、デスクトップは v2rayN、Android は v2rayNG を選びます。Android のサブスクリプションが V2Fly 用に明確に生成されている場合は v2flyNG を使い、最も単純な VMess またはサーバー指定ノードからテストを始めてください。

既存ユーザーは、コア名だけを理由に頻繁に移行する必要はありません。現在の VMess + WebSocket + TLS ノードが長期間安定しているなら、既存環境をそのまま使えます。サーバー側のプロトコル更新、設定フィールドの未認識、要件を満たさないバージョン、REALITY の必要性が生じた場合にのみ、対応する Xray 構成へ切り替えます。

ノードに REALITY または Vision が含まれる

推奨

Xray の構成をそのまま採用し、公開鍵、ショート ID、SNI、フィンガープリント、flow を項目ごとに保持してください。フィールドを削除しないでください。

適している環境:デスクトップの v2rayN、Android の v2rayNG

ノードの中心が VMess

まず現在使えているコアを維持し、同じノード、同じネットワーク、同じテスト先で成功率を比較します。

適している用途:既存サブスクリプション、互換性の検証

サブスクリプションで V2Fly が明示されている

サブスクリプションの説明に従って V2Fly 環境を使用し、Xray 固有のパラメータを似たフィールドへ無理に変換しないでください。

適している環境:Android の v2flyNG

10分で判断する手順

  1. ノード詳細を開き、プロトコル、ポート、トランスポート、セキュリティ方式、SNI、flow を記録します。
  2. REALITY、ショート ID、xtls-rprx-vision が見つかったら、Xray を選択します。
  3. VMess しかない場合は、まず現在のコアをテストし、移行のためだけに移行しないでください。
  4. 接続後にログを確認し、unknown field、failed to listen、connection refused、timeout がないことを確認します。
  5. ウェブアクセス、DNS 解決、サブスクリプション更新、ルーティング分岐を検証し、その組み合わせを日常の設定にします。

connection refused と判断したら、まず方向を切り分けます。ログにリモートアドレスとサーバーポートへの接続拒否が表示される場合は、ノード側のポートがリッスンしていない、アドレスが誤っている、サーバー側に異常があるといった原因が考えられます。ローカルの 127.0.0.1:10808 に接続できない場合は、コアが起動しているか、ポートが一致しているか、システムプロキシが古いポートを指していないかを確認してください。

よくある選択の疑問とトラブルシューティング

コアの選択に関する問題は、サブスクリプションのキャッシュ、ポート競合、ルーティングルールと混同されがちです。トラブルシューティングでは、まず最小構成を作ります。ノードを1つだけ残し、カスタムルーティングを無効にし、デフォルト DNS を使用して、システム時刻が正確であることを確認してください。最小構成で接続できたら、機能を1つずつ戻します。

同じ VMess ノードが2つのコアで使える場合、どちらを選ぶべき?

同じネットワークで10回連続して接続し、成功回数、最初のレスポンスまでの時間、切断状況を記録します。結果が近い場合は、現在の安定した環境を維持してください。サブスクリプションに REALITY ノードが含まれるなら、Xray に統一するのが無難です。

VLESS をインポートするとノードは表示されるのに、接続すると失敗する場合は?

ノード編集画面を開き、アドレス、ポート、UUID、セキュリティ方式、SNI、フィンガープリント、公開鍵、ショート ID、flow の順に確認します。REALITY ノードは重要なフィールドが1つ欠けただけでも、ハンドシェイク段階で失敗することがあります。

クライアントを切り替えたらサブスクリプションのノード数が減った場合は?

まずサブスクリプションを手動で更新し、サブスクリプショングループとフィルター条件を確認します。特定のプロトコルのノードだけが減っている場合は、更新ログに未対応フィールドの表示がないか確認し、サブスクリプション提供元に対象コアの形式を問い合わせてください。

コアのログにポートが使用中と表示された場合は?

重複して起動しているクライアントを停止し、SOCKS ポート 10808 と HTTP ポート 10809 を確認します。ポートを変更する場合はシステムプロキシの設定も同時に更新し、コアが新しいポートをリッスンしているのにブラウザーが古いポートへアクセスする状態を避けてください。

アップグレード後に以前のルーティング分岐が機能しなくなった場合は?

まずグローバルプロキシに戻して基本接続を確認し、その後、ドメインルール、IP ルール、アウトバウンドタグの対応を調べます。変更後に設定を再読み込みし、ログでルールが想定した出口に一致したことを確認してください。

最終的な選択は、次の1つのルールにまとめられます。サーバー側のプロトコルがコアの下限を決め、クライアントの機能が操作方法を決め、実測結果が長期利用するかどうかを決めます。REALITY と Vision は Xray を優先し、一般的な VMess 設定はまず既存環境で検証し、V2Fly を明示的に要求するサブスクリプションには V2Fly を使います。クライアント名、1回の遅延、バージョン番号だけで結論を出さないでください。

V2Ray クライアントをダウンロードプラットフォームに合うインストーラーを選択