Xray-coreとV2Fly-coreの違い:XTLS・REALITY対応と設定の互換性

Xray-coreとV2Fly-coreの成り立ちを整理し、XTLS VisionやREALITYなどXray独自の機能を比較。両コア間で同じ設定を使う際に確認すべき項目も解説します。

この記事の概要

コア選びでは、クライアント画面の名称ではなく、ノードが必要とするプロトコル・トランスポート・セキュリティ層を確認することが重要です。v2rayNでコアを切り替えたい方や、v2rayNGとv2flyNGを比較したい方に向けて、VLESS・Vision・REALITYの違いから設定項目、データファイル、ローカルポートの確認方法まで解説します。設定チェックと接続ログで切り替え結果を検証しましょう。

成り立ち:クライアント・コア・ノード設定の関係

V2FlyはV2Rayを継続的に開発するコミュニティプロジェクトで、そのコアプログラムは一般にV2Fly-coreと呼ばれます。Xray-coreは2020年にV2Rayのコードを基盤として分岐し、その後は独自の機能開発とリリースを続けています。共通の起源を持つため設定構造には似た部分がありますが、新機能やデフォルト動作、項目名まで常に同じとは限りません。

v2rayNはデスクトップクライアントです。サブスクリプション管理やノード編集、設定生成を行い、選択したコアを起動します。プロキシ接続を実際に確立するのはコアのプロセスです。Android版ではv2rayNGがXrayコア、v2flyNGがV2Flyコアを使用します。クライアント名が似ていても、対応するノード機能が同じとは限りません。

ノードをインポート 設定を生成 コアで検証 ルーティングを判定 アウトバウンドでハンドシェイク

サブスクリプション内の共有リンクは、どのコアでもそのまま実行できる完全な設定ではありません。クライアントがノード情報を対応するコアのアウトバウンド設定に変換し、ローカルのインバウンド、DNS、ルーティングを補います。サブスクリプションをインポートできても、リンク形式を認識したことを示すにすぎません。起動できるか、ハンドシェイクが完了するかは、生成された設定とサーバー側の要件をそれぞれ確認してください。

機能を比較:VLESS・XTLS Vision・REALITYは別の階層

VLESSはプロキシプロトコル、VisionはXrayでVLESSと組み合わせるフロー制御方式、REALITYは接続のセキュリティ層です。よくある「VLESS + TCP + REALITY + Vision」は、実際には4種類の設定を組み合わせています。REALITYをVLESSの別名と捉えたり、VLESSだから必ずXrayが必要だと判断したりしないでください。

機能・設定項目Xray-coreV2Fly-core切り替え時の確認ポイント
VMess・VLESSの基本プロトコル対応対応トランスポートとセキュリティ層も確認
Trojan、Shadowsocks対応対応暗号化方式や拡張機能は個別に確認が必要
一般的なTCP・WebSocket・TLS対応対応パス、リクエストヘッダー、SNIなども一致させる
XTLS Vision対応XrayのVision flowには非対応flowを確認
REALITY対応XrayのREALITYには非対応securityと鍵のパラメーターを確認
DNS・ルーティング独自の実装と拡張機能がある独自の実装と拡張機能があるアウトバウンドのノードを置き換えるだけでは移行できない

Visionは通常、ユーザーオブジェクトのflow: "xtls-rprx-vision"で指定します。securityに「Vision」と設定するわけではありません。REALITYは通常、streamSettings.security: "reality"と対応するrealitySettingsで指定します。VisionはTLSまたはREALITYと組み合わせるのが一般的です。WebSocketノードにVision flowを安易に追加しないでください。

判断のポイント:代替できない設定を確認してからコアを選ぶ

サーバーがREALITYまたはxtls-rprx-visionを要求する場合は、対応するXrayを選んでください。設定を無理に起動させるために項目を削除してはいけません。クライアント側の項目を削除しても、サーバー側のハンドシェイク要件は変わりません。

設定の互換性:フロー制御・セキュリティ層・トランスポートを確認

以下の2つの例は、パラメーター確認用であり、接続設定一式ではありません。1つ目はXray独自機能を使うノードの重要項目、2つ目は両コアで一般的に共通する項目を示しています。接続先アドレスや認証情報、セキュリティ設定は、実際のサーバー設定またはサブスクリプションを確認してください。ノード名から推測することはできません。

VLESS + REALITY + Vision

プロトコル
vless
トランスポート
TCP。具体的な項目名はコアのバージョンによって異なります
セキュリティ層
reality
Flow
xtls-rprx-vision
サーバーポート
443(例)

サーバーから指定されたSNI、フィンガープリント、鍵のパラメーター、shortIdをそのまま使用し、対応する組み合わせを扱えるXrayに任せます。

VMess + WebSocket + TLS

プロトコル
vmess
トランスポート
ws
セキュリティ層
tls
WebSocketのパス
/ws(例)
VMessの設定
alterId: 0(AEADを使用)

どちらのコアにも対応する機能があります。接続にはパス、Host、SNIをサーバー設定と一致させる必要があります。

古い解説で単に「XTLS」と呼ばれている設定は、旧方式を指す場合があり、現在のVisionとは異なります。移行時には実際のflowの値とセキュリティ層を確認し、過去の設定を新しいバージョンにそのままコピーしないようにしてください。クライアントを更新した後は、クライアントのバージョン番号だけでなく、実際に起動したコアのバージョンも確認しましょう。

v2rayNでコアを切り替える:バックアップ後に最小構成で検証

v2rayNはバージョンによってメニュー名やコアの選択場所が異なる場合があります。まず「設定」→「パラメーター設定」でコア関連の項目を探してください。ノードの種類ごとにコアを選ぶバージョンでは、画面に表示される「Coreタイプ」などの項目を確認します。すべてのプロトコルを一括で別のコアに切り替えたうえで、DNSやルーティング、システムプロキシまで同時に変更するのは避けてください。

  1. 現在の状態を記録:クライアント設定をバックアップし、クライアントのバージョン、ログに表示されるコアのバージョン、選択中のノード、ローカルの待ち受けアドレスとポートを記録します。機密性の高いサブスクリプションURLはローカルだけに保存してください。
  2. 共通対応ノードを選ぶ:まずはVMess + WebSocket + TLSなど、両方のコアが対応するノードで検証します。REALITYノードしかない場合、V2Flyへの切り替えを同条件でテストすることはできません。
  3. 変更は1項目ずつ:対象プロトコルのコア選択だけを変更し、接続を停止してから再起動します。新しいプロセスが起動したことを確認し、ログで実際のコアを確かめてください。古いプロセスがポートを使用し続けている可能性があります。
  4. ローカルの接続口を確認:アプリのプロキシ方式とポートは変えずに、実際にWebページへアクセスします。遅延テストで数値が返っても、ブラウザーがシステムプロキシ経由で接続できるとは限りません。
  5. 機能を段階的に戻す:基本接続が成功したら、カスタムルーティング、DNS、その他の詳細設定を1つずつ戻し、その都度テストします。互換性の問題を特定しやすくなります。
127.0.0.1
ローカルのループバック待ち受けアドレスの例
10808
ローカルプロキシポートの例
443
リモートサーバーポートの例

上記の数値はローカルの接続口とリモートの接続先を区別するための例であり、クライアントの固定デフォルト値ではありません。実際のポートは現在の設定を確認してください。ローカルで待ち受けるHTTP、SOCKS、混合プロキシの種類も合わせて確認が必要です。リモートサーバーが443を使っていても、ブラウザーのシステムプロキシをローカルの443に設定するわけではありません。

起動・接続のトラブル対処:設定チェックに通っても接続成功とは限らない

設定全体を手動で管理している場合は、まずコア付属の設定チェックを実行できます。以下はXrayとV2Fly v5でよく使われるコマンドラインの例です。client.jsonは、ローカルに保存済みの設定ファイルを指します。それ以外のバージョンでは、ヘルプコマンドで引数を確認してください。クライアントが一時的に生成したファイルをオフラインで検査する場合は、先にコピーしてバックアップします。

xray version
xray run -test -config client.json

v2ray version
v2ray test -c client.json

設定チェックでは、構文エラーや一部の無効な項目、非対応の組み合わせを検出できますが、接続先に到達できることや認証情報が正しいことまでは確認できません。コアの起動後は実際に接続し、アウトバウンドのハンドシェイクとリクエストが完了するかを確認します。以下では失敗した段階ごとに原因を分類し、すべてを「ノードが使えない」と決めつけないようにしています。

症状まず確認する項目次に行うこと
設定の読み込み直後に終了する項目の型、プロトコル名、flow、セキュリティ層最初に表示された設定エラーを確認し、現在のコアの対応範囲を調べる
ポートが使用中と表示される古いコアプロセスやクライアントの多重起動重複したプロセスを停止し、待ち受けポートを確認してから再起動する
起動するがハンドシェイクに失敗するSNI、認証情報、REALITYのパラメーター、システム時刻元のノード設定と項目ごとに照合し、ルーティングは先に変更しない
基本ノードは使えるが、一部のドメインに接続できないDNSポリシー、ルーティングルール、データファイル基本ルーティングで一度検証し、その後ルールを1つずつ戻す
クライアントのテストは成功するが、ブラウザーでは失敗するシステムプロキシ、ブラウザー独自のプロキシ設定アプリが現在のローカル待ち受けポートに接続しているか確認する

ルーティングで使うgeosite:やgeoip:は、データファイルの内容と読み込み先にも依存します。両方のコアが同じルール構文を認識しても、ローカルのデータに該当するカテゴリがあるとは限りません。移行時にはdomainStrategy、DNSサーバー、アウトバウンドのタグ、最終フォールバックルールも合わせて確認してください。確認しないと、起動できてもルーティング結果が変わることがあります。

よくある質問:コアの選び方と性能の見方

REALITYノードを通常のTLSに変更すれば、V2Flyで使えますか?

クライアント側の設定を変えるだけでは使えません。通常のTLSとREALITYではハンドシェイクの条件が異なるため、サーバー側に対応する接続口とパラメーターが必要です。対象のコアに対応したノード設定を入手してインポートテストを行ってください。securityの値を別の名前に変えるだけでは解決しません。

v2rayNGでエクスポートしたノードをv2flyNGにインポートしても接続できないのはなぜ?

まずノードの詳細を開き、セキュリティ層がREALITYか、フロー制御がVisionか、トランスポートが両方のコアで共通対応かを確認してください。Xray専用機能が含まれる場合は、その組み合わせに対応するクライアントを使います。該当しない場合は、インポート後もパス、SNI、ポートが保持されているか確認しましょう。

Xrayに替えれば必ず速くなりますか?

そうとは限りません。比較する際は、サーバー、回線、テスト対象、プロキシの接続口を同じ条件にします。事前に接続を安定させてから、同じ時間だけダウンロードするテストを3回以上行い、CPU使用率、再送回数、失敗回数も確認してください。異なるプロトコルのノードで得た結果を、コアの違いだけに結び付けることはできません。

2種類のコアを同時に起動してテストできますか?

可能ですが、ローカルの待ち受けポートを別々にし、システムプロキシがどちらの接続口を使うか明確に指定してください。再現性を高めるには、1つ目のコアを停止してポートが解放されたことを確認してから、他の設定を変えずにもう一方を起動する順番でテストします。

選び方の基本:サーバーの対応状況を優先し、再現可能な設定を残す

REALITYまたはVisionが必要ならXrayを選びます。両方に対応するプロトコルの組み合わせを使う場合は、実際のバージョンでの設定チェック、接続結果、保守のしやすさを基準に選んでください。検証済みの設定を残しておくと、コア・ノード・ルーティングを同時に変更するより安定してトラブルに対処できます。

v2rayN ダウンロード