コアはまずノードの要件に合わせて選び、操作性はその次に検討しましょう。ノードにREALITYやxtls-rprx-visionが含まれる場合は、Xrayの対応状況を優先して確認してください。VMessや一般的なTLSのみの設定なら、名前だけを理由にコアを変更する必要はありません。デスクトップ版とAndroid版のクライアントを比較している方、インポート後に非対応と表示された方、別のコアへの移行を検討している方に向けた内容です。
分岐の経緯:V2FlyとXrayはクライアントの別テーマではない
Project Vは、関連ツールやプロトコルが発展してきたプロジェクトの背景です。V2Rayはその中で広く使われているプロキシコアです。V2FlyコミュニティはV2Rayコアと関連プロジェクトの保守を引き継いでいるため、「V2Rayコア」「V2Flyコア」という呼び方が併用されています。互換性を具体的に議論する際は、プロジェクト名、バージョン、設定形式を明記しましょう。「V2Rayを使っている」だけでは情報が足りません。
Xrayは2020年にV2Rayのコードを基に分岐し、その後は独自の方針で開発されています。分岐の背景には、当時のXTLS関連技術やプロジェクトの保守方針をめぐる意見の違いがありました。共通の出発点があるため、一部のプロトコルやルーティング項目は似ていますが、その後の機能や設定の意味には違いがあります。一方のプロジェクト向けに作成されたJSON全体を、もう一方でもそのまま使える汎用設定と考えることはできません。
- コア:プロトコルのハンドシェイク、インバウンド・アウトバウンド接続、ルーティング、DNSなどの低レベル処理を担当します。
- クライアント:ノード一覧、サブスクリプションのインポート、システムプロキシの切り替え、ログ画面などを提供し、設定をコアに渡して実行します。
- サブスクリプション:ノード情報を配布します。インポートできても、コアの機能がすべて対応しているとは限りません。
つまり、「v2rayNGにインポートできる」ことと「V2Flyで動作する」ことは別です。クライアントが共有リンクを認識できても、実行用設定の生成、コアの起動、接続先とのハンドシェイクで失敗する場合があります。
プロトコルの違い:VLESS・XTLS Vision・REALITYの役割
プロトコル名が同じでも、セキュリティ層、トランスポート方式、フロー制御の設定まで同じとは限りません。VLESSは主にプロキシプロトコルを定義するもので、単体では通信を暗号化しません。通常はTLSやREALITYなどの仕組みも必要です。XTLS Visionはフロー制御に関する方式で、REALITYは別の接続セキュリティ機構です。これらをひとまとめにして、自由に置き換えられる設定として扱わないでください。
| 設定の特徴 | Xray | V2Fly | 選ぶ際のポイント |
|---|---|---|---|
| VMess | 対応 | 対応 | トランスポート方式、TLS、時刻設定も要確認 |
| VLESSの基本プロトコル | 対応 | 基本機能に対応 | 後続の拡張機能も相互利用できるとは限らない |
| VLESS + TLS + WebSocket | 該当する組み合わせに対応 | バージョンと設定形式を確認 | パス、Host、サーバー側の要件を一致させる |
| xtls-rprx-vision | 対応 | このXrayのフロー制御方式には非対応 | flowフィールドを削除して無理に互換させない |
| REALITY | 対応 | このXrayの方式には非対応 | 該当する設定を実行できるXrayクライアントを選ぶ |
表の「対応」は、過去のすべてのバージョンで利用できることを保証するものではありません。古いコアやクライアントの共有リンク解析機能では、後から追加されたパラメーターを扱えないことがあります。トラブルシューティングでは、クライアントのバージョンと実際に動作しているコアのバージョンを両方記録してください。画面上のアプリだけを更新しても、使用中のコアファイルが更新されているとは限りません。
結論:まずノードのsecurityとflowを確認
security=realityまたはflow=xtls-rprx-visionが設定されている場合は、Xrayとクライアントの対応状況を先に確認してください。必要な機能がない場合は、対応クライアントに切り替えるか、サービス提供元から別のノード設定を入手しましょう。起動するまでパラメーターを削る方法は避けてください。
クライアントの選び方:v2rayNGとv2flyNGを比較
Android版のv2rayNGはXrayコア、v2flyNGはV2Flyコアを使用します。アプリのアイコンや名前になじみがあるかではなく、ノードの構成を基準に選びましょう。以下の推奨は、サブスクリプションにREALITYやVisionが含まれる可能性を前提としています。どのネットワークでも特定のコアが速いという意味ではありません。
v2rayNG:Xray系
おすすめサブスクリプションにVLESS + REALITYまたはVisionが含まれる場合は、まずこちらを選び、インストール済みのバージョンがすべてのパラメーターを解析できるか確認しましょう。既存のVMessノードも設定に応じてテストできます。コア名を変えるためだけにノードを買い直す必要はありません。
おすすめのユーザー:Androidで主に接続する方、サブスクリプションでXray固有の機能が明記されている方。
v2flyNG:V2Fly系
既存のノードがV2Fly向けに設定され、普段使うプロトコルで動作確認済みなら、そのまま使い続けられます。移行前にプロトコル、トランスポート方式、セキュリティ層を確認してください。あらゆるXray設定に対応する代替クライアントではありません。
おすすめのユーザー:すでにV2Flyの利用環境があり、既存の設定を維持したい方。
v2rayN:デスクトップ版の設定入口
デスクトップ版では、まず現在の配布パッケージに含まれるコアを確認し、ノードが実際にどのコアで動作しているかを確かめましょう。コアの選択場所や選べる範囲は、配布パッケージやバージョンによって異なります。クライアント名だけで判断することはできません。
おすすめのユーザー:デスクトップのシステムプロキシを使う方、実行ログやコアを確認したい方。
Androidクライアントを2つインストールして比較する場合、両方のVPN接続を同時に有効にしないでください。通常、同じユーザー環境でVPNチャンネルを使用できるアプリは1つです。後から起動した接続が先の接続を置き換え、「コアを変えたら突然切れた」と誤解することがあります。
複数端末で使う:サブスクリプションは共用できても、実行設定は端末ごとに確認
デスクトップとAndroidで同じサブスクリプションをインポートできますが、サービス提供元が利用端末数を許可しており、配信形式を両方の端末で読み取れることが前提です。ノード一覧が同じでも、ルーティンググループ、アプリごとのプロキシ設定、ローカルの待ち受けポート、DNSの動作まで引き継がれるとは限りません。
おすすめの方法:端末ごとに同じノードの全パラメーターを確認
デスクトップ:v2rayN
- 一覧の名前だけで判断せず、選択中のノードと実際に動作しているコアを確認します。
- システムプロキシの状態を確認し、ブラウザーのプロキシとアプリ独自の通信を区別します。
- 実行ログにコアの起動結果と接続エラーを記録します。
Android:v2rayNGまたはv2flyNG
- ノードでREALITYやVisionが必要かどうかに応じて、クライアントを選びます。
- 接続前にVPNの使用を許可し、テスト中はクライアントを1つだけ起動します。
- アプリごとのプロキシ設定を確認し、テストに使うブラウザーが除外されていないか確認します。
サブスクリプションの更新で取得できるのは、サービス提供元が公開した最新データです。各端末のローカルな実行設定は、引き続き個別に確認する必要があります。
デスクトップでは接続できてAndroidでは接続できない場合、まず同じノードのアドレス、ポート、トランスポート方式、セキュリティ層、フロー制御パラメーターを比較しましょう。すぐにすべての違いをコアのせいにしないでください。両端末で同じ名前の別設定ノードを選んでいたり、一方だけサブスクリプションを更新していたりする可能性があります。
ポートと設定項目:「接続できない」を確認可能な設定に分解
以下の2つのポート番号はトラブルシューティング用の例であり、すべてのクライアントに共通する既定値ではありません。リモートポートはサービス提供元が指定し、ローカルの待ち受けポートはクライアントの設定で決まります。役割が異なるため、ローカルのSOCKSポートをリモートノードのポート欄に入力しないでください。
たとえば、ブラウザーやテストツールからローカルプロキシに接続する場合、使用が確認できている127.0.0.1:10808を指定できます。その後、コアがノードのリモートポートに接続します。「アプリからローカルの入口まで」と「コアからリモートサーバーまで」は別の区間です。ローカルに接続できても、リモートとのハンドシェイクが成功したとは限りません。
- 基本接続:リモートアドレス、ポート、ユーザーID、システム時刻を確認します。VMessは時刻のずれに敏感です。TLS証明書の有効期間確認にも正確な時刻が必要です。
- トランスポート層:WebSocketノードではパスとHostを確認します。WebSocketと生のTCPの設定を混在させないでください。
- セキュリティ層:通常のTLSではサーバー名と証明書検証を確認します。REALITYではサービス提供元が指定したサーバー名、公開鍵関連のパラメーター、shortIdを確認します。
- フロー制御:サービス提供元が
xtls-rprx-visionを指定している場合は、その設定に合わせます。flowを変更しても、サーバー側のプロトコルが自動で切り替わるわけではありません。 - 実行結果:「不明なフィールド」「ハンドシェイク失敗」「接続タイムアウト」を区別し、それぞれ互換性、認証パラメーター、ネットワーク到達性を確認します。
コアの切り替え前後:変更する条件は一度に1つ
「コアを変えたら速くなった」と比較するには、同じノード、近い時間帯、同じテスト先を使う必要があります。TCPingで主に確認できるのはTCP接続の到達性であり、プロキシのハンドシェイク成功を示すものではありません。実接続テストは実際のプロキシリクエストに近い確認方法ですが、継続的なダウンロード速度やすべてのサイトでの使い勝手を保証するものではありません。
- 切り替え前にバックアップ:サブスクリプションの配布元、現在のノード設定、ルーティング、DNSの設定を保存します。スクリーンショットを共有する場合は、ユーザーIDやサブスクリプションURLを隠してください。
- 起動を確認:まずコアを起動し、ログに設定の解析エラーがないか確認します。起動に失敗した場合、設定の問題を覆い隠すためにノードを何度も切り替えないでください。
- プロキシリクエストをテスト:同じノードで実接続テストを実行し、同じブラウザーから同じ接続先にアクセスします。システムプロキシやVPNチャンネルが実際に有効か確認してください。
- ルーティングを個別に確認:接続できた後で、直接接続とプロキシのルールを確認します。特定のサイトが直接接続に振り分けられても、新しいコアが通信を処理していないとは限りません。
- 記録して元に戻す:クライアントとコアのバージョン、エラーの種類、変更した項目を記録します。結果が悪化したら元の設定に戻し、DNS、ルーティング、トランスポートの設定を同時に変更しないでください。
結論:まず互換性を確認し、その後に使い勝手を比較
現在の設定が安定して使えているなら、分岐名を理由に移行する必要はありません。REALITYやVisionが必要になった場合に、該当設定に対応するXray系を選び、同じ条件で接続を確認しましょう。コア選びだけでは、ノードの品質やネットワーク経路の問題は解決できません。
よくある質問:インポート成功、古いノード、移行の失敗
v2flyNGにVLESSリンクをインポートできるのに、接続できないのはなぜ?
まずノードの詳細を開き、REALITYやVisionが含まれているか確認してください。VLESSの基本項目を認識できても、こうした拡張機能を実行できるとは限りません。ノードの要件がコアの対応範囲を超えている場合は、対応するv2rayNGに切り替えるか、サービス提供元から別のプロトコル構成のノード設定を入手してください。
古いVMessノードはV2FlyからXrayに切り替える必要がありますか?
必ずしも必要ではありません。どちらの系統もVMessに対応していますが、実際の動作はトランスポート方式、TLS、サーバー設定、各バージョンの組み合わせにも左右されます。既存ノードが安定して動作しているなら、まず使える設定を維持しましょう。具体的なエラーが出たらログを確認してください。コアの切り替えは万能の解決策ではありません。
XrayのJSON設定一式をそのままV2Flyに渡せますか?
そのまま使えると考えないでください。一部の構造は似ていますが、拡張フィールド、トランスポート設定、バージョンごとの設定方法が異なる場合があります。移行時は移行先コアの設定形式に合わせて再構成し、まず最小限の接続を確認してから、ルーティング、DNSなどの設定を段階的に追加してください。
サブスクリプションを更新すると、クライアントに新しいコア機能が追加されますか?
いいえ。サブスクリプションの更新で新しくなるのはノード情報であり、非対応だったコアが対応するようになるわけではありません。新しいノードで新機能が必要な場合は、クライアントの解析機能とコアの実装状況をそれぞれ確認してください。更新後も、選択中のノードと実際に動作しているバージョンを再確認しましょう。
クライアントとプラットフォームの選び方
デスクトップではv2rayNを選び、Androidではノードの要件に応じてv2rayNGまたはv2flyNGを選びます。まずプロトコルとセキュリティ層の対応状況を確認し、その後にサブスクリプションのインポートと接続テストを行いましょう。