· 応用知識 · 約10分

XrayコアとV2Flyコアの違い|プロトコル対応と設定方法を比較

Project Vから派生した経緯を踏まえ、XrayとV2FlyのVLESS・XTLS・REALITY対応や設定項目の違いを解説。v2rayNGとv2flyNGの選び方も紹介します。

この記事の要点

コアを選ぶときは、名前より先にサーバー側の要件を確認しましょう。REALITYやXTLS Visionが必要なら、対応するXrayのバージョンを選びます。一般的なVMess、WebSocket、TLSを使う場合は、どちらの系統にも対応する実装があります。この記事では、すでにサブスクリプションを入手し、クライアントの選択や設定の移行を検討している方向けに、プロトコルの構成や設定項目の違い、読み込み後に重要なパラメーターが欠落していないか確認する方法を解説します。

クライアント、コア、Project Vの違い

コアは実際の接続、プロトコル処理、DNS問い合わせ、ルーティングを担い、クライアントはそれらの機能を操作するための画面を提供します。v2rayN、v2rayNG、v2flyNGはクライアント名です。Xray-coreと、V2Flyが開発するv2ray-coreがコアにあたります。クライアントとコアのバージョンは別々に管理されるため、アプリを更新してもコアが切り替わるとは限りません。

Project Vは、V2Rayを中心に形成されたツールとプロトコルのエコシステムです。V2Flyコミュニティはv2ray-coreの開発を引き継ぎ、Xray-coreは2020年に関連コードを基盤として派生し、その後は異なる方針で機能を開発してきました。共通の歴史があるためJSONの構造が似ている場合もありますが、すべての設定項目を相互に使えるわけではありません。

サブスクリプション設定 クライアントで解析 コアで読み込み ルールに基づくルーティング サーバーへ接続

この流れを理解すると、「サブスクリプションを読み込めるのに接続できない」理由も分かります。読み込みに成功したのは、クライアントがデータの一部を解析できたということにすぎません。コアがすべての機能に対応していることや、サーバーのアドレス、認証情報、通信パラメーターが一致していることまでは保証されません。

プロトコル対応を比較:VLESSとREALITYは別のもの

1つの接続は通常、プロキシプロトコル、通信方式、安全性を担うレイヤーの組み合わせで構成されます。VLESSとVMessはプロキシプロトコル、TCPとWebSocketは通信方式、TLSとREALITYは接続の安全性に関わる仕組みです。XTLS Visionは特定のフロー制御とデータ処理方式を指し、TLSのスイッチを別の名前に置き換えたものではありません。

機能Xray系V2Fly系選ぶ際の確認事項
VMess対応。TCP、WebSocket、TLSの組み合わせでよく使われます。対応。広く使われている相互接続パターンです。認証情報、通信パラメーター、サーバー側の設定が一致している必要があります。
VLESSの基本プロトコル対応し、フロー制御やセキュリティとの組み合わせも拡張されています。一部のバージョンや設定方式で対応しています。実際のビルドとクライアントの設定画面を確認してください。VLESSという名称だけで、ノード全体が使えるとは判断できません。
XTLS Vision対応バージョンではxtls-rprx-visionのフロー制御を利用できます。Xray Visionの設定をそのまま使うことはできません。クライアントとサーバーの両方が、そのフロー制御と組み合わせに対応している必要があります。
REALITY対応バージョンではREALITYを設定できます。XrayのREALITY設定をそのまま使うことはできません。サーバーの公開鍵情報、SNI、short ID、フィンガープリントの設定を確認してください。
WebSocket + TLS対応する実装があります。対応する実装があります。パス、Host、証明書名、設定形式を確認してください。

結論:専用機能を確認してからクライアントを選ぶ

サブスクリプションにREALITYまたはxtls-rprx-visionの記載がある場合は、Androidではこれらのパラメーターに対応したv2rayNGを優先しましょう。一般的なVMess + WebSocket + TLSだけを使う場合は、既存設定との互換性を比べれば十分です。名称だけを理由に移行する必要はありません。

「V2FlyはVLESSにまったく対応していない」「VLESSに対応していればREALITYにも接続できる」という説明は、どちらも断定しすぎです。前者はバージョンや実装の違いを見落とし、後者はプロトコルとセキュリティレイヤーを混同しています。古い資料にあるXTLSの旧フロー制御も、Visionと同じものとして扱えません。特に、古い値を新しい設定にそのままコピーしないでください。

設定チェック:よくある2つの構成で確認する項目

次の2つのカードは設定項目を確認するためのもので、接続可能なノードやサーバー認証情報は含まれていません。例のパス/proxyは項目の位置を示すだけです。実際のパスにはサーバー側で指定された値を設定してください。REALITYのカードは一般的なVLESS + TCP + Visionの構成例であり、すべてのVLESSでVisionを有効にする必要があるという意味ではありません。

VLESS + REALITY

プロキシプロトコル
VLESS
通信方式
TCP
セキュリティレイヤー
REALITY
Flow
xtls-rprx-vision
認証とハンドシェイク
ユーザーID、サーバーの公開鍵情報、SNI、short ID

対応するXrayバージョンの設定項目と照合してください。各パラメーターをサーバー側の設定と一致させる必要があります。

VMess + WebSocket + TLS

プロキシプロトコル
VMess
通信方式
WebSocket
セキュリティレイヤー
TLS
パスの例
/proxy
認証とハンドシェイク
ユーザーID、Host、SNI、有効な証明書

どちらのコア系統にも対応する実装がありますが、パスやドメインの項目を省略したり、別の値で代用したりしないでください。

HostとSNIは同じ値になることがよくありますが、用途は異なります。WebSocketのHostはHTTPリクエストで指定する接続先ホストの情報で、SNIはTLSハンドシェイク時に送信するサーバー名です。接続先アドレスはさらに別の項目で、最初に接続するネットワーク上の宛先を指定します。サーバー側が3つに異なる値を指定している場合、「見た目をそろえる」ために同じ値へ変更しないでください。

JSONの書き方:構造が似ていても設定全体を共用できるとは限らない

XrayとV2Flyの一般的な設定では、inbounds、outbounds、routingなどの項目名を使います。V2Flyには複数の設定バージョンや構造があり、クライアントが共有リンクを解析してから独自のコア向けJSONを生成することもあります。そのため、共有リンクが同じであること、画面上の項目が似ていること、最終的なコア設定に互換性があることは、それぞれ別の話です。

以下は従来形式のJSONにおけるstreamSettingsの一部で、WebSocketとTLSの階層を示しています。example.comは例示用に予約されたドメインであり、利用可能なサーバーアドレスではありません。入出力の設定や認証情報も含まれていないため、この断片だけでは動作しません。

{
  "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
      "serverName": "example.com"
    },
    "wsSettings": {
      "path": "/proxy",
      "headers": {
        "Host": "example.com"
      }
    }
  }
}

移行時は、サービス提供元が配布する完全なサブスクリプションを再読み込みし、生成された設定を確認するのが最も確実です。JSON全体の手動移行は、移行元と移行先のバージョン、設定形式を把握している場合に限ってください。構文チェックに通っても、設定項目が実際に反映されているとは限りません。

ポートとルーティング:ローカルの接続口とサーバー側の機能を混同しない

コアはルーティングを処理しますが、リクエストがまずコアに届く必要があります。システムプロキシの設定が適用されるのは、その設定に従うアプリだけです。TUNは仮想ネットワークインターフェースを通じて対象の通信を取り込み、通常は追加の権限を必要とします。どちらもプロキシの出力先を選ぶ設定ではなく、コアに届いたリクエストはさらにルーティングルールに従って振り分けられます。

443
TLSでよく使われる接続先ポート(固定ではありません)
10808
ローカルプロキシのポート例(設定を確認してください)
127.0.0.1
ローカルループバックアドレス。リモートサーバーではありません

これらはアドレスとポートの例であり、速度測定の結果でも、すべてのクライアント共通の初期値でもありません。アプリに127.0.0.1:10808を設定する場合は、クライアントが実際にローカルのそのポートで待ち受けていることと、接続方式がアプリの要件に合っていることを確認してください。HTTPプロキシかSOCKSかは、ポート番号だけでは判断できません。

  1. v2rayNの「設定」→「パラメーター設定」で、ローカルの待ち受け先と関連項目を確認してください。項目の分類名はバージョンによって異なる場合があるため、現在の画面を基準にしてください。
  2. システムプロキシまたはアプリのプロキシ設定が、実際に待ち受けているアドレスを指しているか確認してください。以前のクライアントのポートが残っていないかも確認しましょう。
  3. 現在のルーティングモードと、適用されるルールを確認してください。geosite:cnはドメイン分類の参照、geoip:cnはIP分類の参照で、どちらも対応するデータファイルが必要です。
  4. 別のコアに移行した後は、ルールファイルの場所、タグ名、出力先タグが引き続き対応しているか確認してください。ルーティング項目をコピーするだけでは不十分です。

「直接接続のサイトは開くが、プロキシ経由のサイトは失敗する」場合、リクエストは何らかのルールに届いているものの、プロキシの出力先に問題がある可能性があります。「クライアントを切り替えてもすべてのアプリで変化がない」場合は、まず接続口と通信の取り込み方法を確認しましょう。すぐにコアの速度が原因だと決めつけず、通信経路に沿って調べてください。

Androidでの選び方:サブスクリプションの要件を少数の設定で確認

現在のノードがXrayのREALITYやVisionを明確に要求しているなら、対応機能を備えたv2rayNGを選ぶのが簡単です。V2Fly向けに動作確認された設定をサービス側が提供している場合は、v2flyNGを使い続けても問題ありません。専用機能が不要なら、設定を完全に読み込めるか、ログを確認しやすいか、現在のルーティングを維持できるかを優先して選びましょう。

  1. 利用環境を記録:クライアントとコアのバージョン、プロトコル、通信方式、セキュリティレイヤー、TUNの有効・無効を記録します。「最新版」だけでは情報が足りません。
  2. 以前の設定を残す:移行前にサブスクリプションのグループとカスタムルーティングをバックアップしてください。機密性のあるサブスクリプションのURLを公開の場に投稿しないでください。
  3. テスト項目は1つだけ読み込む:元の設定と照らし合わせ、ポート、SNI、パス、Flow、REALITY関連の項目を確認してください。重要な項目が欠けている場合は、テストを中止してください。
  4. 複数のクライアントで同時に通信を取り込まない:別のクライアントを試す前に、現在のクライアントのプロキシ接続や仮想ネットワーク接続を停止して、接続口の競合を避けてください。
  5. 変更は一度に1項目だけ:同じネットワーク、同じサーバー、同じ宛先へのリクエストを使って結果を比較してください。DNS、ノード、ルーティングモードを同時に変更しないでください。

結論:一度の遅延測定よりプロトコルの適合性を優先

まず対象の構成が正しく読み込まれ、安定して接続できることを確認してから、同じ条件で使い勝手を比較しましょう。1回の遅延測定だけでは、特定のコアが常に速いとは証明できません。プロトコルや設定の互換性を確認する代わりにもなりません。

よくある質問:読み込み成功後のエラー、ハンドシェイク失敗、更新の順序

サブスクリプションの読み込みに成功したのに、「未対応の設定」と表示されるのはなぜですか?

クライアントが共有リンクのプロトコル形式を認識しても、拡張パラメーターをすべて変換できていない可能性があります。実際に呼び出されているコア、生成された設定、ログに最初に記録された読み込みエラーを確認してください。未知の項目や未対応の通信方式が見つかった場合は、まずバージョンを確認しましょう。エラー項目を削除して無理に起動させるのは避けてください。

REALITYで接続できない場合、証明書の検証を無効にすべきですか?

検証を無効にする方法を、一般的な解決策として使うべきではありません。まずクライアントとサーバーのバージョン、ユーザーID、公開鍵情報、SNI、short ID、フィンガープリント、システム時刻を確認してください。REALITYの認証方式は通常のTLSとは異なります。通常のTLS向けのトラブルシューティング設定を安易に使っても、問題が解決しないばかりか、本当の設定ミスを見えにくくするおそれがあります。

クライアントとコア、どちらを先に更新すればよいですか?

まず、現在のクライアントが対応するコアの範囲と更新内容を確認し、クライアントに用意された方法で更新してください。画面側で新しい設定項目を生成できない場合、コアだけを交換しても新機能を使えるとは限りません。元に戻せる設定を保存し、更新後はまず従来のノードで確認してから、新しいプロトコル構成を試してください。

VMessからVLESSに切り替えるとき、プロトコル名だけ変えればよいですか?

いいえ。サーバー側に対応するインバウンド設定が必要で、認証情報やプロトコル固有の項目も一致させる必要があります。VLESS自体は通信内容を暗号化しないため、実際の運用では適切なセキュリティを備えた通信方式と組み合わせます。名称を置き換えるだけでは移行できません。既存のサブスクリプションにREALITYの設定を追加することもできません。

v2rayNをダウンロードプラットフォームに合わせてクライアントを選択