XrayとV2Flyのコアの違い|フォークの経緯・機能・クライアントの選び方

XrayがV2Flyから分岐した経緯や、VLESSフロー制御、REALITY、設定の互換性を比較。v2rayNGとv2flyNGの選び方も解説します。

この記事の要点

ノードが要求するプロトコル、トランスポート、安全設定を確認し、それらの項目に対応したコアを選びましょう。一般的なVMessノードは、名称だけで優劣を判断する必要はありません。REALITYや特定のVLESSフロー制御が指定されている場合は、Xrayの対応状況を優先して確認してください。v2rayN、v2rayNG、v2flyNGを比較している方や、「インポートできたのに接続できない」という方に向けた記事です。

分岐の経緯:プロジェクトの関係とクライアント名は別

Project VのV2Rayプロジェクトは、後にV2Flyコミュニティが引き継いで開発を続けています。一般にV2Flyコアと呼ばれるものは、この系統のv2ray-coreを指します。Xrayは2020年に関連コードを基盤として独立し、別のコアとして開発が続いています。共通のルーツはありますが、その後追加されたトランスポートやセキュリティ機能、設定項目に互換性があるとは限りません。互換性を判断する際は、ノードのリンクに「V2Ray」と書かれているかではなく、実際に動作しているコアを確認しましょう。

GUIクライアントはサブスクリプションのインポート、サーバー一覧の表示、システムプロキシの切り替えなどを担当します。コアは設定に従って接続を確立し、トラフィックを処理します。v2rayNはデスクトップ向けGUIクライアントですが、実際に利用できる機能は、呼び出しているコアとそのバージョンにも左右されます。Android版ではv2rayNGがXrayコア、v2flyNGがV2Flyコアを使用します。クライアントを変えるとコアも変わる場合があるため、同じリンクでも動作が異なることがあります。

2020
Xrayが独立して開発を始めた年
2系統
確認が必要なコアの系統
3層
プロトコル、トランスポート、安全設定を順に確認

この3層はバージョンの優劣を表すものではありません。VLESSノードを例にすると、VLESSはプロキシプロトコル、TCPはトランスポート方式、TLSやREALITYは接続時の安全設定です。「VLESSに対応」と確認しただけでは、ノードで指定されたフロー制御やセキュリティパラメーターにも対応しているとは限りません。

機能の違い:サーバー設定を確認してから互換性を判断

VMessとWebSocket、TLSを組み合わせた構成は、どちらの系統でも長く使われている一般的な組み合わせです。接続できるかどうかは、サーバー設定、クライアントのコアのバージョン、各項目の入力内容が一致しているかによっても変わります。VLESSも一括りにはできません。標準的なVLESS設定と、Xray固有のフロー制御を含む設定では、必要な機能が異なります。リンクやサブスクリプションにxtls-rprx-visionやrealityなどの項目がある場合、自由に削除できるメモとして扱わないでください。

ノード設定選び方の目安インポート後の確認項目
VMess + WebSocket + TLSどちらのコアも候補になります。実際のバージョンとサーバー設定を確認してください。アドレス、ポート、パス、Host、TLSドメイン。
標準的なVLESS + TCP + TLS「VLESS」という名称だけで判断せず、使用するバージョンが設定全体に対応しているか確認してください。ユーザーID、トランスポート方式、TLSドメイン、証明書関連の設定。
VLESS + Visionフロー制御このフロー制御に対応したXrayコアを優先してください。flowの値がサーバーの指定どおりか。
VLESS + REALITYREALITYに対応したXrayコアを優先してください。通常のTLS設定では代用できません。公開鍵、Short ID、ターゲットドメイン、フィンガープリントなどの項目。

表中の「優先」は、設定が一致しない可能性を下げるための目安であり、速度を保証するものではありません。たとえば、サーバーの待ち受けポートが443なら、クライアントにも同じポートを設定します。ただし、それだけでノードがTLSを使用していると判断したり、REALITYのパラメーターが正しいと保証したりはできません。サブスクリプションに重要な項目が一つでも欠けていれば、サーバーとして表示されても接続できないことがあります。

結論:ノードの設定項目に合わせてコアを選ぶ

サブスクリプションでREALITYやxtls-rprx-visionが明示されている場合は、まずXrayコアを利用できるか確認し、その後にネットワークを調べましょう。一般的なVMessノードなら、トラブルシューティングのためにすぐコアを変更せず、まず設定値とルーティングを確認してください。

クライアントの選び方:デスクトップとAndroidで確認

デスクトップでv2rayNを使う場合は、まず実行中のコアを確認し、ノードの設定項目に対応しているか判断しましょう。「v2rayNにリンクをインポートできる」ことは、「現在のコアがリンク内のすべての設定に対応している」ことを意味しません。Androidでは、必要な機能を基準に候補を絞れます。v2rayNGはXray、v2flyNGはV2Flyに対応します。選んだ後も、アプリのバージョン、サブスクリプションの内容、サーバー側の要件を確認してください。

Xrayコア:v2rayNまたはv2rayNG

おすすめ

ノードでREALITYやVisionなどXray固有の機能を使う場合は、まずこちらのコアで設定を確認してください。一般的なVMessノードにも使えますが、接続結果は実際の設定値によって異なります。

おすすめの用途:サブスクリプションにXray固有の項目がある場合、またはデスクトップとAndroidの設定をまとめて確認したい場合

V2Flyコア:v2flyNG

V2Flyコアの機能を前提に管理されているノードに適しています。既存のVMessなどの設定を引き続き使う場合は、現在のコアで認識できない項目がサブスクリプションに含まれていないか確認してください。

おすすめの用途:サーバー設定がV2Fly向けで、既存のノードが安定して接続できている場合

同じサブスクリプションに一般的なノードとREALITYノードが含まれている場合、前者が接続できるからといって、すべてのノードに互換性があるとは限りません。サーバーの詳細を1件ずつ開き、プロトコル、トランスポート方式、安全設定、フロー制御を記録しましょう。そのうえで、必要な項目がそろったノードを1件テストします。サブスクリプション全体を何度も切り替えるより、問題を特定しやすくなります。

複数のデバイスで同じサブスクリプションを使う:設定項目を漏れなく確認

サブスクリプションのリンクで取得できるのはサーバー一覧であり、異なるコア向けにすべての設定項目を書き換えてくれるわけではありません。デスクトップとAndroidで同じサブスクリプションを使う場合は、まず両方でテストするノードを1つ決め、インポート後の項目をそれぞれ確認してください。プロバイダーがノードのポート、トランスポートパス、安全設定を変更した場合は、両方のクライアントでサブスクリプションを更新する必要があります。一方で手動修正しても、もう一方には反映されません。

設定例:ノードの機能に合わせて両方の端末を設定

デスクトップ:v2rayN
  • 使用中のコアがノードの要件に合っているか確認します。
  • サブスクリプションを更新したら、ノード名だけでなくサーバーの詳細も確認します。
  • まずノードを1件だけテストし、その後システムプロキシとルーティングを確認します。
Android:v2rayNGまたはv2flyNG
  • REALITYまたはVisionが必要な場合は、v2rayNGを優先して確認します。
  • v2flyNGを使う場合は、コアの機能に合ったノードを選びます。
  • 同じサブスクリプションを更新したら、プロトコル、ポート、安全設定を照合します。

同じサブスクリプションURLを使えば同じノード一覧を取得できますが、接続できるかどうかは各ノードの設定項目を個別に確認する必要があります。

ルーティングによる振り分けは別の設定です。クライアントがサーバーに接続できても、特定のサイトへの通信がルールによって直接接続に設定されている場合があります。v2rayNでは「設定」→「パラメータ設定」を開き、ローカルプロキシ関連の項目を確認してから、現在のシステムプロキシモードとルーティングルールを確認してください。ブラウザーにローカルSOCKSプロキシを個別に設定している場合は、クライアントに表示された待ち受けポートとも照合します。よく使われる10808を、画面に表示される実際の値の代わりに設定しないでください。

コアの変更やノードの移行時に確認する順序

v2flyNGからv2rayNGへ移行するときや、v2rayNでコアを変更するときは、まず既存のサブスクリプションURLと、接続できることが分かっているノードを1つ残して比較対象にします。サブスクリプション、ルーティング、DNS、ローカルプロキシポートを同時に変更しないでください。接続が回復しても、どの変更が有効だったのか分からなくなります。一項目ずつ変更してテストすれば、設定の互換性とローカルプロキシの問題を切り分けられます。

  1. インポート内容を確認:ノードの詳細を開き、サーバーアドレス、ポート、ユーザーID、トランスポート方式、パス、安全設定を一項目ずつ照合します。REALITYノードでは公開鍵、Short ID、ドメイン、フィンガープリントも確認し、Visionノードではフロー制御の値を確認してください。
  2. コアの対応状況を確認:ノードに必要なコアが動作していることを確認し、対応していない項目の警告が表示されていないか確認します。リンクをインポートできたというだけでは、一部の設定を読み取れたことしか分からず、接続に必要な項目がすべてそろっているとは限りません。
  3. ローカルプロキシを確認:まずクライアント内で接続をテストします。クライアントでは接続できるのにブラウザーがつながらない場合は、システムプロキシの有効・無効、ブラウザーのプロキシ設定、ローカルSOCKSポートが画面の表示と一致しているかを確認してください。
  4. 最後にルーティングを確認:アクセスできる宛先とできない宛先がある場合は、ルーティングルールで対象がプロキシ経由か直接接続かを確認し、DNS設定も調べます。振り分けの問題をすべてコアの違いのせいにしないでください。

ログを確認すると原因を絞り込めることもあります。「未対応の設定項目」と表示された場合は、まずコアとそのバージョンを確認します。接続タイムアウトならアドレス、ポート、現在のネットワークを、ハンドシェイクの失敗ならサーバーが要求する安全設定も確認してください。同じエラーメッセージでも原因は異なることがあるため、ノードの詳細と直近の変更履歴をあわせて確認しましょう。

結論:一度に変更するのは一つの層だけ

まずノードを固定してコアを確認し、接続をテストしてから、システムプロキシ、ルーティング、DNSを確認します。この順序なら、XrayとV2Flyの互換性の境界を判断しやすくなり、ローカルの振り分け問題をノードの故障と誤認するのも防げます。

コア選びで重要なのは、どちらの名称が新しいかではなく、現在のノードがどの設定項目を必要としているかです。既存のV2Fly設定が安定して動いているなら、そのまま使い続けてもよいでしょう。REALITYや特定のVLESSフロー制御を使う場合は、それらに対応するXrayコアを選び、サーバーの情報と項目ごとに照合してください。デスクトップではv2rayNが現在呼び出しているコアを確認し、Androidではv2rayNGとv2flyNGのコアの違いに応じて選ぶと、問題を切り分けやすくなります。

クライアントのダウンロードを見る