XrayコアとV2Flyコアの違い|VLESS・XTLS・REALITYの対応状況を比較

XrayとV2Flyの開発経緯や、プロトコル・通信方式・設定の互換性を比較。クライアントでコアを切り替える際の注意点も解説します。

この記事の概要

まずサーバー側の要件を確認してから、使用するコアを選びましょう。VLESS、通信方式、TLS/REALITY、flowはそれぞれ異なる設定項目です。プロトコル名だけでは互換性を判断できません。v2rayNでコアを切り替える方や、Androidでv2rayNG・v2flyNGを選ぶ方に向けて、設定項目の確認方法、切り替え手順、接続できない場合の調査手順を解説します。

2つのコアとクライアントの関係

V2FlyコミュニティはV2Rayコアをメンテナンスしています。一方、Xray-coreはV2Rayプロジェクトから分岐した別の開発ラインです。設定の歴史には共通点がありますが、その後のプロトコル実装、通信機能、設定項目はそれぞれ独自に進化しています。XrayをV2Flyの画面として捉えたり、JSONのプログラム名だけを変えれば動くと考えたりするのは誤りです。

クライアントは、サブスクリプションやサーバー一覧、システムプロキシの管理、設定の生成を担当します。コアは実際の接続やプロトコル処理、ルーティングを担います。v2rayNはデスクトップ向けクライアントで、利用できるコアはインストールしたパッケージやクライアントのバージョン、設定生成機能によって異なります。Androidではv2rayNGがXrayコアを、v2flyNGがV2Flyコアを使用します。これらは同じアプリの別スキンではありません。

この3つがすべて満たされる必要があります。インポートに成功しただけでは、クライアントが共有情報を認識したことしか分かりません。サーバーが一覧に表示されても、コアの接続が確立したとは限りません。互換性の問題が起きたら、まずインポート時に設定項目が失われていないか、次に起動時の解析エラーがないかを確認し、最後にリモート側とのハンドシェイクを調べましょう。

VLESS・XTLS・REALITYとは

VLESSはプロキシプロトコルです。XTLS VisionはXray系のフロー制御機能で、設定値にはxtls-rprx-visionがよく使われます。REALITYは別の接続セキュリティ機構です。これらは1つのサーバー設定に共存できますが、自由に置き換えられる「プロトコルボタン」ではありません。VLESS自体は通信を完全に暗号化するものではないため、VLESSという名称だけでTLSが有効だとは判断できません。

機能XrayコアV2Flyコア確認するポイント
VMess対応対応認証情報・セキュリティ設定・通信方式が一致していること
VLESSの基本プロトコル対応実装あり。対応状況は使用するバージョンと設定形式によって異なります基本プロトコルに対応していても、Xray独自の拡張機能に対応するとは限りません
XTLS VisionVLESSの対応フロー制御を利用可能Xray Visionの設定をそのまま使うことはできませんflowをサーバー側の要件に合わせる
REALITY対応XrayのREALITY設定をそのまま実行することはできませんセキュリティ方式、サーバー名、公開鍵パラメーター、短いID
WebSocket + TLS一般的な組み合わせに対応一般的な組み合わせに対応パス、Host、サーバー名、証明書の検証

そのため、「V2FlyはVLESSにまったく対応していない」という説明は大ざっぱすぎます。一方で、「VLESSに対応していれば、どのVLESSサーバーにも接続できる」というわけでもありません。REALITYやVisionを含む共有リンクは、Xrayの機能とクライアントの対応状況を基準に判断しましょう。vless://で始まるというだけで結論を出さないでください。

結論:securityとflowを確認してからコアを選ぶ

サーバーがREALITYまたはxtls-rprx-visionを明示的に要求する場合は、その設定を正しく生成できるXray対応クライアントの組み合わせを選びましょう。通常のVMessや一般的なTLS通信であれば、既存の設定とメンテナンス上の要件を比べて選べます。

サーバーの要件に合わせてコアを選ぶ

以下の推奨は、REALITYまたはVisionを使うサーバーに接続する場合を前提としています。速度ランキングではなく、Xrayに切り替えれば同じ回線の遅延が下がるという意味でもありません。回線品質、サーバー負荷、通信方式の組み合わせ、ローカルネットワークが結果に影響します。同じ条件で測定しなければ、性能の向上率は示せません。

Xrayコア

おすすめ

サーバーがVLESS + REALITYまたはVisionを要求する場合は、Xrayを使った設定環境を優先しましょう。デスクトップではv2rayNに利用可能なXrayコアがインストールされているか確認し、Androidではv2rayNGを選びます。インポート後に重要な設定項目が保持されているかも確認してください。

おすすめのケース:サーバーがREALITYやVisionを明示的に要求する場合、または利用可能なXray設定がすでにある場合。

V2Flyコア

既存のV2Fly設定やVMess、一般的なWebSocket + TLSサーバーを使っている場合は、そのまま継続して利用できます。移行前に実際の設定を確認しましょう。コアの名称が異なるという理由だけで、すべてのサーバーやルーティングルールを作り直す必要はありません。

おすすめのケース:既存の設定がV2Flyに依存しており、サーバーがXray固有の機能を要求しない場合。

古い資料にある「XTLS」は、以前の設定方法を指していることがあります。Visionの設定にそのまま適用しないでください。サブスクリプションの提供元が「VLESS対応」としか記載していない場合は、通信方式、セキュリティ方式、フロー制御の値も確認する必要があります。情報が足りない状態で、コアを何度も切り替えてサーバー設定を推測するのは避けましょう。

設定の互換性:項目ごとにチェック

共有リンクはクライアント間で設定値を受け渡す形式であり、コア向けの完全な設定ファイルではありません。サブスクリプションをインポートすると、クライアントは値を内部データに変換し、コアが実行する設定を生成します。いずれかの段階で項目が欠けると、「リンクはインポートできたのに起動しない」「起動するのに接続できない」といった問題が起こります。

確認箇所主な項目確認・設定方法
サーバーアドレスとポートaddress、portサーバーから指定された値を使用します。443はよく使われるポートですが、必須ではありません
ユーザー認証とフロー制御id、flow認証情報を確認し、Visionではサーバーが指定するフロー制御値を設定します
トランスポート層streamSettings.network実際に使うコアのバージョンが認識するトランスポート名で設定します。別の開発ラインの設定を機械的にコピーしないでください
接続のセキュリティstreamSettings.securitytlsとrealityを区別し、互いに置き換えない
サーバー名serverNameサーバー側で許可されている名前を指定します。接続先アドレスと同じとは限りません
REALITYのパラメーターrealitySettings内の公開鍵パラメーターとshortId現在のクライアントとコアが対応する項目名を確認し、提供元の資料と照合して値を設定します
WebSocketリクエストwsSettings.path、headers.Hostパスとリクエストヘッダーを保持します。ドメイン名とポートだけをコピーしないでください

カスタムJSONは通常のサーバー設定より慎重に扱う必要があります。どちらのコアにもinbounds、outbounds、routingがあっても、内部の項目や既定の動作、ルールデータへの依存関係が異なる場合があります。まず元のファイルをバックアップし、移行先のコアで設定を解析できるかテストしてください。「JSONの構文が正しい」ことと「コアの設定として有効」であることは別です。

v2rayNのコア切り替えとAndroidアプリの選び方

v2rayNでは、画面によってメニューの場所が変わる場合があります。一般的な設定場所は「設定」→「パラメーター設定」→「Coreタイプ設定」です。プロトコルごとのコア割り当てを確認し、すべてのサーバーが一括で切り替わると思い込まないようにしましょう。使用中のバージョンに該当項目がない場合は、インストールしたパッケージが対応するコアの種類を確認してください。サーバーのプロトコル選択でVLESSをVMessに変更してはいけません。

  1. 元に戻せる設定を残す。サーバー情報とサブスクリプション情報をバックアップし、現在使えるサーバー、コア名、ローカルの待ち受けポートを記録します。初回のテストでは、ルーティング、DNS、セキュリティ設定を同時に変更しないでください。
  2. プログラムが実行できるか確認する。使用するコアがインストール済みで、OSとプロセッサーアーキテクチャに対応しているか確認します。Windows、macOS、Linux向けの実行ファイルは相互に使えません。
  3. プロトコルごとの割り当てを変更する。Coreタイプ設定で対象プロトコルに使うコアを確認し、保存後にコアを再起動します。カスタム設定では、指定されたコアの種類も個別に確認してください。
  4. 起動ログを確認する。実際に起動したコアとバージョンを確認します。まず設定項目の解析エラーがないことを確認してから、リモート接続を調べましょう。起動失敗を回線の問題と取り違えないようにしてください。
  5. プロキシとアプリを個別にテストする。ローカルのSOCKSポートが10808の場合、テストツールもそのポートに接続します。HTTPポートが必ず10809だと思い込まず、ローカルの設定を確認してください。

設定手順:デスクトップでは割り当てを確認し、Androidではコアに合ったアプリを選ぶ

デスクトップ:v2rayN
  • パラメーター設定で、プロトコルとコアの対応関係を確認します。
  • 設定を保存してコアを再起動し、ログで実際に動作しているプログラムを確認します。
  • 切り替え中は、既存のDNS、ルーティング、ローカル待ち受け設定を維持します。
Android:v2rayNG / v2flyNG
  • Xrayの機能が必要な場合は、v2rayNGを選びます。
  • V2Fly設定を引き続き使う場合は、v2flyNGが実際に対応している機能を確認します。
  • 同じサブスクリプションをインポートした後、設定項目を確認し、システムVPNの使用許可も確認します。

同じサブスクリプションURLを使えても、生成される設定や利用できるサーバーが同じとは限りません。どちらの環境でも実際に接続できるか確認してください。

切り替え後に接続できない場合:エラーの段階ごとに確認

「設定の解析 → ローカル待ち受け → サーバーへの接続 → ハンドシェイク認証 → ルーティングとDNS」の順に調べます。前の段階で問題が解決していないうちに、次の設定を変更しないでください。エラー周辺の設定項目とアウトバウンドのタグを記録します。他の人に相談する前に、サブスクリプションURL、認証情報、サーバー側の機密情報を削除してください。

切り替え後にunknown fieldと表示されます。サーバーに問題がありますか?

多くの場合、これはサーバーに接続する前の設定解析段階で発生します。まずログで使用中のコアを確認し、エラーに表示された項目が別のコア系統のものではないか調べてください。クライアントでサーバー設定を保存し直して設定を生成するか、互換性のないカスタムJSONを直接コピーしないようにしましょう。

同じVLESSリンクなのに、V2Flyに切り替えると接続できないのはなぜですか?

サーバーの編集画面を開き、REALITYが有効になっていないか、フロー制御がxtls-rprx-visionになっていないか確認してください。これらが必要な場合は、その組み合わせに対応するXrayコアに戻します。起動を無理に通すためにセキュリティ設定を削除しないでください。

コアは正常に起動しますが、ログでハンドシェイク失敗が続く場合は?

サーバーアドレス、ポート、認証情報、サーバー名、REALITYの公開鍵パラメーターと短いIDを1つずつ確認し、端末の時刻が正確かも確認してください。WebSocket + TLSを使う場合は、パスとHostも調べます。一度に変更するのは1種類の設定だけにし、保存してから再テストしてください。

ログにaddress already in useと表示されます。コアを変える必要がありますか?

まずローカルの待ち受けポートを確認します。たとえば設定が10808の場合、そのポートを使用中の他のプロセスを終了するか、パラメーター設定でローカル待ち受けポートを変更し、アプリのプロキシ設定も合わせて更新してください。これはポートの競合であり、XrayとV2Flyのプロトコルの違いが原因ではありません。

最終的には、使用するコアが設定を解析できること、待ち受けが正常に始まること、サーバーとのハンドシェイクが完了すること、実際のアプリの通信が想定どおりにルーティングされることを確認します。ブラウザーだけが使えず、プロキシ接続テストが正常な場合は、システムプロキシとブラウザーの設定を調べましょう。一部のドメインだけ接続できない場合は、DNSとルーティングルールを確認してください。すべての問題を「コアの選び間違い」と決めつけないでください。

v2rayNクライアントをダウンロード