この記事は、デスクトップまたはAndroidのクライアントを選んでいる方、サブスクリプションのプロトコル項目が分かりにくい方、XrayとV2Flyの間で設定を移行したい方に適しています。読み終える頃には、2つのコアの関係、VLESS・VMess・REALITYとトランスポート層の組み合わせ、ノードに応じたv2rayN・v2rayNG・v2flyNGの選び方が分かります。
コア・クライアント・サブスクリプションを整理する
XrayとV2Flyはいずれもネットワークプロキシのコアです。コアは設定の解析、アウトバウンド接続の確立、インバウンドポートの処理、DNSとルーティングルールの実行を担います。一方、v2rayN・v2rayNG・v2flyNGはグラフィカルインターフェースを備えたクライアントです。クライアントにサブスクリプションを読み込んだ後、実際にプロトコルのハンドシェイクとトラフィック転送を行うのは、ノード一覧の画面ではなくコアです。
両者はProject Vの技術系譜に関係していますが、現在はそれぞれ独立して保守・リリースされているプロジェクトです。V2FlyはV2Rayの名称や設定思想、互換性の方向性を引き継ぎ、v5設定体系へ発展しました。一方、Xrayは近いコード基盤から進化を続け、VLESS・XTLS・REALITYなどの組み合わせでより明確な機能範囲を築いています。Xrayを単純に「V2Rayの新バージョン」と捉えるのは正確ではありません。両者は同じリリース系列ではないためです。
- コア層:JSON設定を読み込み、VMess・VLESS・Trojan・Shadowsocks・SOCKS・HTTPなどのプロトコルと、それぞれのトランスポート設定を処理します。
- クライアント層:サブスクリプション管理、ノードの絞り込み、システムプロキシ、ログ確認、コアプロセスの起動・停止を担当します。
- サブスクリプション層:ノードのアドレス、ポート、ユーザー識別子、トランスポート方式、セキュリティ層、サーバー名などの接続情報を保持します。
- ルーティング層:ドメイン、IP、ポート、アプリのトラフィックに応じて、直接接続・プロキシ・ブロックを決定します。ノードのプロトコルを自動的に変更することはありません。
XrayとV2Flyの主な違い
日常的な選択で重要なのは、抽象的な「性能の高さ」を比べることではなく、対象のコアが設定項目を完全に認識できるかを確認することです。一般的なVMess・WebSocket・TLS・SOCKS・HTTPの構成は比較的互換性の範囲が広く、VLESS・XTLS Vision・REALITYを含む場合は、Xrayがより直接的な選択肢になります。V2Flyの強みは、従来のV2Ray設定体系、v5設定への発展、関連する運用環境との継続性にあります。
Xrayコア
おすすめVLESS・XTLS Vision・REALITYなど、現在よく使われる新しい設定の組み合わせを重点的にサポートし、VMess・Trojan・Shadowsocksなどの一般的なプロトコルにも対応します。
適した用途:日常利用のメイン環境、VLESSノード、REALITY設定
V2Flyコア
V2Rayの設定モデルを引き継ぎ、v5設定体系を提供します。V2Flyを前提にルーティング・DNS・インバウンドルールを構築済みの環境に適しています。
適した用途:既存のVMess環境、V2Fly v5設定、互換性の維持
| 比較項目 | Xray | V2Fly |
|---|---|---|
| リリース関係 | 独立して保守・リリース | 独立して保守・リリース |
| 主なプロトコル | VLESS、VMess、Trojan、Shadowsocks | VMess、Trojan、Shadowsocks、SOCKS、HTTP |
| 特徴的な機能 | XTLS VisionとREALITYの組み合わせ | V2Ray設定の継承とv5設定体系 |
| Android向けグラフィカルクライアント | v2rayNG | v2flyNG |
| 移行時の確認点 | flow、security、realitySettingsを確認 | 設定バージョン、プロトコル項目、トランスポート項目を確認 |
結論:まず設定への対応状況を確認し、速度はその後に比較する
サブスクリプションにVLESS、flow=xtls-rprx-vision、security=realityが含まれる場合は、まずXrayを選びます。すでにV2Fly v5設定と安定したVMessノードを使っている環境では、直接移行するよりV2Flyを継続利用する方が手間を抑えられることが多いでしょう。
プロトコル名が同じでも、設定がそのまま共通とは限らない
2つのノードにVMessと書かれていても、設定をそのまま入れ替えられるとは限りません。完全な接続設定には、トランスポート方式、TLS設定、サーバー名、パス、Host、フィンガープリント、マルチプレクス方針なども含まれます。クライアントへの読み込み時に重要な項目を1つでも無視すると、「ノードはあるのに接続できない」「遅延テストがタイムアウトする」「ログで再試行が続く」といった問題が起こります。
VLESSはこの点をよく示しています。VLESSはプロトコル層の名称で、REALITYはセキュリティとハンドシェイクに関する設定です。TCP・WebSocket・gRPCはトランスポート層の選択肢に当たります。一般的な設定では、VLESS + TCP + REALITY + Visionのように各層を組み合わせます。移行時はserverName、publicKey、shortId、fingerprint、flowなどの項目を保持し、サーバーアドレス・ポート・ユーザー識別子だけをコピーしないでください。
{
"address": "server.example",
"port": 443,
"protocol": "vless",
"security": "reality",
"flow": "xtls-rprx-vision",
"serverName": "www.example.com",
"fingerprint": "chrome"
}
- VMess:ユーザー識別子、alterIdの互換設定、トランスポート方式、TLS、WebSocketパスを重点的に確認します。
- VLESS:ユーザー識別子に加えて、flow、セキュリティ層、サーバーが要求するトランスポート項目を確認します。
- REALITY:serverName、publicKey、shortId、ブラウザフィンガープリントの項目を重点的に確認します。重要項目が1つでも欠けると、ハンドシェイクに失敗する可能性があります。
- ルーティングルール:コアが接続に成功しても、ルーティングが想定どおりとは限りません。ドメインルール、IPルール、最終的なアウトバウンドの向き先も確認してください。
更新ペースが違っても、新しい方が必ず適しているとは限らない
XrayとV2Flyはそれぞれ独自のバージョン系列を持ち、リリース頻度や機能の実装時期も同期していません。クライアントを更新しても、コアまで同時に更新されるとは限りません。グラフィカルインターフェース、コアファイル、サブスクリプション形式が別々に変わる場合もあります。そのため、トラブルシューティングではクライアントのバージョン系列、コアの種類、ノードのプロトコルを分けて記録し、「最新版に更新済み」とだけ書かないようにしましょう。
安定稼働している場合は、動作する設定を1つ保存してからクライアントを更新し、元のノードをテストするのが適切です。ログにunknown field、failed to parse config、unsupported securityが表示される場合は、設定項目とコアの対応状況が一致していないことが多いでしょう。設定の読み込みには成功しても接続がタイムアウトする場合は、ネットワーク、ドメイン解決、ポート、サーバーの状態を引き続き確認してください。
ポート番号も調査記録に含める必要があります。たとえばデスクトップ環境でローカルSOCKSの入口を10808、HTTPの入口を10809に設定している場合、ブラウザや他のツールは対応する種類のポートに接続しなければなりません。HTTPクライアントをSOCKSポートに向けると、コアが起動していないと誤認しがちです。ポート番号はあくまで例であり、実際の値はv2rayNの「設定」→「パラメータ設定」ページで確認してください。
結論:アップグレード前に3項目を記録する
クライアントのバージョン系列、現在のコア名、利用可能なノード1つの完全なプロトコル構成を保存します。アップグレード後は同じノードをまず3回再テストし、その後でサブスクリプションを更新すると、バージョンの問題とノードの変動を切り分けられます。
v2rayN・v2rayNG・v2flyNGの選び方
Windowsのデスクトップ環境では、まずv2rayNを検討します。サブスクリプショングループ、システムプロキシ、ルーティングルール、遅延テスト、ログ確認に対応し、Xrayを使う環境向けの操作機能も充実しています。サブスクリプションを読み込んだら、ノードの詳細を開いてプロトコルとトランスポート項目を確認し、「設定」→「パラメータ設定」でローカルの待受ポート、ログレベル、システムプロキシ関連の項目を確認できます。
Androidでは、サブスクリプションがVLESS・REALITY・Xray関連の設定を中心としているならv2rayNGが適しています。V2Fly環境を明確に運用している場合、V2Fly v5設定を使う場合、または既存のV2Flyサーバーと揃える必要がある場合は、v2flyNGを選べます。2つのグラフィカルインターフェースが似ていても、コアの能力が同じとは限りません。読み込みに成功しても、すべての項目が保持されるとは限りません。
おすすめ構成:デスクトップとAndroidで同じプロトコル体系を使う
デスクトップ版(v2rayN)
- VLESSとREALITYには、まずXrayコアを使う
- 「設定」→「パラメータ設定」でローカルポートを確認する
- サブスクリプション更新後、固定ノードを3回再テストする
Android版(v2rayNG)
- 同じXray互換サブスクリプションを読み込む
- 初回接続時にVpnServiceの許可を確認する
- 必要に応じてアプリごとのプロキシを有効にし、ルーティングを確認する
同じサブスクリプションだからといって、同じクライアントの使用を強制されるわけではありません。ただし、両端で同じプロトコル対応を使うと、項目の欠落や移行時のミスを減らせます。
v2flyNGが適しているケース
- サーバー側と設定生成の手順が、明確にV2Flyを基準としている。
- 既存のサブスクリプションが、長期検証済みのVMessやその他のV2Fly互換ノードを中心としている。
- V2Fly v5設定をすでに作成しており、その構造や項目に依存している。
- チームとして、モバイル端末を既存のV2Flyテスト環境に合わせる必要がある。
クライアントの画面に慣れているという理由だけで、別のコア向けの特殊な設定を無理に読み込むのはおすすめしません。まずプロトコルを識別し、次にコアを選び、最後にクライアントの操作性を比べるのが安全です。サブスクリプションに複数種類のノードが含まれる場合は、2つのサブスクリプショングループを作り、「Xray」と「V2Fly」と名前を付けると、更新後に同じ一覧へ混在するのを防げます。
別のコアへ移行する手順
移行は実行ファイルを1つ置き換えるだけではありません。アドレス、ポート、ユーザー識別子は比較的保持しやすい一方、トランスポート層、セキュリティ層、DNS、ルーティング、ローカルのインバウンドは抜けやすい項目です。手動移行の前に現在の設定をエクスポートするかサブスクリプションの配信元を保存し、まず構成が単純なノードで接続テストを行い、最後に複雑なルーティングを戻してください。
- 元の環境を記録:クライアントのバージョン系列、コア名、ローカルの待受ポート、システムプロキシモード、現在利用できるノードを記録します。
- プロトコル構成を確認:VMess・VLESS・その他のどのプロトコルかを確認し、TCP・WebSocket・gRPC・TLS・REALITYなどの関連項目を記録します。
- 移行先のクライアントに読み込む:サブスクリプションまたは完全な共有情報を優先し、アドレスとポートだけをコピーしないでください。
- 複雑なルーティングを一時的に無効化:基本的なプロキシ経路で初回接続を行い、ログに設定解析エラーがないことを確認します。
- DNSと分割ルーティングを戻す:ドメイン・IP・アプリのルールをグループごとに追加し、変更するたびに再接続します。
- 相互検証を行う:同じノードの遅延を3回テストし、直接接続先とプロキシ経由の接続先にアクセスして、最終的なアウトバウンドがルールどおりか確認します。
| 現象 | まず確認する項目 | 対処の方向性 |
|---|---|---|
| 読み込み後に項目が空になる | クライアントがサブスクリプション形式を認識しているか | 完全な共有情報、または対応するクライアントを使う |
| 未知の項目と表示される | その項目が別のコアに属していないか | 対応するコアへ切り替え、安全関連の項目を不用意に削除しない |
| 遅延テストがすべてタイムアウトする | DNS、ポート、システム時刻、サーバーの状態 | ログで最初に失敗した箇所を確認する |
| ブラウザは使えるが、他のツールでは失敗する | SOCKSとHTTPのポート種別 | 10808・10809などの実際の待受設定を確認する |
| 一部のドメインがプロキシを経由しない | ルーティングの順序と最終ルール | 具体的なルールを包括的なルールより前に置く |
よくある選択の疑問
コアの選択に、ノード設定から切り離した唯一の正解はありません。プロトコルへの対応、サーバーの構成、クライアントのプラットフォーム、保守コストが結果を左右します。以下の質問で候補をすばやく絞り込めます。
VMessノードには必ずV2Flyが必要ですか?
必須ではありません。XrayとV2Flyはいずれも一般的なVMess構成を処理できますが、トランスポート方式、TLS、WebSocketパス、その他の設定項目を確認する必要があります。VMessという名称を認識できても、すべての拡張項目が完全に一致するとは限りません。
VLESSノードでは、どのコアを優先すべきですか?
ノードにXTLS Vision、REALITY、publicKey、shortIdなどの項目がある場合は、Xrayを優先してください。その他の組み合わせは、設定の提供元が互換性の対象を明確に示している場合に限って検討します。
コアを変更すれば遅延を直接下げられますか?
コアはプロトコルの実装やデータ処理に影響しますが、ネットワーク距離、回線の混雑、サーバー負荷、パケットロスの方が直接的な要因になりやすいです。同じ端末・同じノード・同じネットワークで3回連続してテストし、ログと実際のアクセス結果を合わせて判断してください。
v2rayNGでは使えるサブスクリプションが、v2flyNGでは使えない場合は?
まずノードを展開して、プロトコルとセキュリティ項目を確認します。REALITY、Vision、Xray固有の設定が含まれている場合は、v2rayNGを使い続けてください。一般的なVMess設定だけであれば、サブスクリプションの解析、トランスポート経路、TLSのサーバー名、ローカルネットワークの権限を確認します。
同じ端末に2つのクライアントを残せますか?
比較テスト用に残すことはできますが、同時に起動するローカルプロキシまたはVpnServiceのセッションは1つだけにしてください。2つのクライアントが10808など同じポートを同時に待ち受けると、後から起動した方がポートの競合で失敗する可能性があります。
選択は次の判断手順にまとめられます。まずノードのプロトコルとセキュリティ層を確認し、次にサーバーが明確に対応しているコアを確認します。その後でクライアントのプラットフォームを確定し、最後に画面や操作の好みを比べます。VLESS・REALITYを中心に使う方は、通常Xrayとv2rayNGを選びます。V2Fly v5設定と安定したVMess環境をすでに運用している方は、V2Flyとv2flyNGを継続利用するのが適しています。