XrayとV2Flyのコアの違い|開発の経緯・プロトコル対応・クライアントの選び方

XrayとV2Flyの成り立ちを整理し、VLESSやREALITYの対応状況を比較。v2rayNGとv2flyNGの選び方も解説します。

この記事の要点

コアを選ぶときは、クライアント名より先にノードの設定を確認しましょう。VLESS + REALITYやXTLS Visionを使う場合は、対応するXray環境が適しています。既存のV2Fly設定で接続できているなら、名前が違うという理由だけで移行する必要はありません。この記事ではクライアント、コア、プロトコル、トランスポートを分けて解説し、PC・Androidでの選び方や設定確認、トラブルシューティングの手順を紹介します。

開発の経緯:XrayとV2Flyとは

Project Vは、ネットワーク通信ツールや関連仕様からなるエコシステムで、V2Rayはその中核プロジェクトです。V2Flyコミュニティはv2ray-coreのメンテナンスを継続しています。一方、Xray-coreは2020年にv2ray-coreから分岐し、独自のプロトコルやトランスポート実装を発展させてきました。両者には共通のコードベースに由来する歴史がありますが、同じプログラムの別デザインではありません。また、バージョン番号をそのまま比較することもできません。

コアは接続の確立、プロトコル処理、ルーティングやDNSルールの適用を担います。クライアントはノードの表示やサブスクリプションの保存、設定画面の提供を行い、設定をコアに渡して動作させます。そのため、画面に項目が表示されていても、実際に起動するコアがその設定を解釈できるとは限りません。反対に、コアが機能に対応していても、クライアントが正しい設定を生成する必要があります。

プロトコル対応:VLESSとREALITYは別物

VMess、VLESS、Trojan、Shadowsocksはプロキシプロトコル、TCP、WebSocket、gRPCはトランスポート方式です。TLSとREALITYは接続のセキュリティ層やハンドシェイクに関わります。XTLS Visionは、特定の組み合わせで使うXrayのフロー制御方式です。これらをまとめて「プロトコル名」と捉えると、コアを切り替える際に本当に必要な互換条件を見落としやすくなります。

設定・機能XrayV2Fly選択前の確認事項
VMess対応対応認証パラメーター、トランスポート方式、TLS設定を一致させる
基本的なVLESS対応基本機能に対応Xray独自の拡張すべてに対応するとは限りません
VLESS + REALITY対応XrayのREALITY設定には非対応サービス名、公開鍵、Short IDなど、クライアント側に必要な設定
XTLS Vision該当する組み合わせに対応XrayのVisionフロー制御には非対応ノードが要求するflow値とトランスポートの組み合わせ
Trojan、Shadowsocks対応対応具体的な方式、拡張機能、トランスポート対応は個別に確認が必要

基本的なVLESSにはコンテンツ暗号化が含まれないため、適切なセキュアトランスポートで保護する必要があります。VLESS + TLSとVLESS + REALITYは、自由に入れ替えられる設定ではありません。サーバー側がREALITYを使っている場合、クライアントのセキュリティ設定をTLSに変更しても、通常はハンドシェイクに失敗します。自動的に互換接続できるわけではありません。

クライアントの選び方:ノードに合わせてコアを選ぶ

ノードの条件を無視して「最速のコア」を決めることはできません。同じ回線でも、混雑状況、サーバー負荷、トランスポート設定、ローカルネットワークによって接続の状態は変わります。コア名だけから速度を断定したり、REALITYならどのネットワークでも必ず接続できると考えたりしないでください。

Xrayコアを使う構成

おすすめ

REALITYまたはVisionが必要な設定には、この記事ではこの構成をおすすめします。Androidではv2rayNGを使用します。PCでv2rayNを使う場合は、対象のノードが実際にXrayで処理されることを確認してください。機能の要件に合っていることが理由であり、速度を実測した結果ではありません。

適しているユーザー:サーバーがVLESS + REALITYやXTLS Visionを明示的に要求している場合。

V2Flyコアを使う構成

利用可能なV2Fly設定、ルールファイル、運用手順がすでにある場合は、そのまま使い続けられます。Androidではv2flyNGが該当します。移行前に、別のコアにしかない機能が本当に必要かを確認してください。クライアント名が違うというだけで設定を作り直す必要はありません。

適しているユーザー:現在のノードがV2Flyと互換性があり、既存の設定手順を維持したい場合。

サブスクリプションにVMess、Trojan、VLESS + REALITYが混在している場合は、全体を「共通対応」と決めつけず、ノードごとに確認してください。クライアントへのインポートに成功したということは、サブスクリプション内の一部またはすべての内容を認識したというだけです。すべてのノードで接続テストが完了したことを意味しません。

インポートから移行まで:設定を確認してから接続テスト

コアを移行する前に、サブスクリプションの取得元と手動追加した設定をバックアップし、現在接続できるノードのプロトコル、トランスポート、セキュリティ設定、ローカルの待ち受けポートを記録してください。JSON設定全体を別のコアにそのままコピーするのは避けましょう。開発の経緯が共通でも、設定形式が常に同じとは限りません。特にDNS、ルーティング、トランスポートの項目を確認してください。

  1. サブスクリプションの設定画面を確認。v2rayNでは「サブスクリプショングループ」→「サブスクリプショングループの設定」、v2rayNGでは右上のメニューにある「サブスクリプショングループの設定」が一般的な入口です。画面名はバージョンによって異なる場合があるため、インストール済みのバージョンを確認してください。サブスクリプションURLはグループのURL欄に入力し、個別ノードのサーバーアドレス欄には入力しません。
  2. ノードの詳細を確認。サーバーアドレス、ポート、ユーザーID、トランスポートの種類、セキュリティの種類、サービス名を確認します。REALITYノードでは、公開鍵、Short ID、フィンガープリントなど、サーバーが要求するパラメーターも確認してください。アドレスとユーザーIDだけをコピーしないようにしましょう。
  3. 実行中のコアを確認。デスクトップでは起動ログに表示されるコア名と起動エラーを確認します。Androidでは、まずv2rayNGとv2flyNGのどちらをインストールしているか確認してください。サブスクリプショングループを切り替えても、コアは切り替わりません。
  4. ノードを1つずつ検証。必要な項目がそろったノードを1つ選んで起動し、ログを確認してから、実際にアクセスしたいWebサイトを開きます。遅延テストに成功しても、特定のテストリクエストが通っただけで、すべてのアプリがプロキシ経由になったわけではありません。
  5. 最後にルールを戻す。基本的な接続を確認できたら、DNS、ルーティング、アプリごとの設定を移行します。一度に変更するのは1つの要素だけにし、元に戻せる設定を残してください。

PCとAndroidの設定例:同じ取得元でも個別に検証

PC:v2rayN
  • 信頼できるサブスクリプションをインポートし、ノードの設定項目がそろっているか確認します。
  • REALITYノードが対応するXrayコアで実行されていることを確認します。
  • 接続できてから、システムプロキシとルーティングを設定します。
Android:v2rayNGまたはv2flyNG
  • プロトコルの要件に合ったクライアントを選びます。
  • 同じ取得元からインポートした後、個別に更新してテストします。
  • VPN接続のリクエストを許可し、アプリごとの対象範囲を確認します。

同じサブスクリプションを使っていても、両方の端末の設定が自動で同期されるわけではありません。ノードの内容はサブスクリプションと更新時刻によって異なります。ローカルのルーティングやアプリごとの設定は、それぞれの端末で管理してください。

ポートとプロキシの入口:コアが動いてもアプリが接続しているとは限らない

サーバー側のポートとローカルの待ち受けポートは、役割が異なります。以下ではポートの位置を説明するために443と10808を例にしますが、共通の初期値でも実測値でもありません。サーバー側のポートはノードの提供元に従い、ローカルポートはクライアントの現在の設定に合わせてください。

443
リモート接続ポートの例:サーバーの待ち受けポートと一致させる
10808
ローカルプロキシポートの例:クライアントが実際に待ち受けているポートを確認

たとえば、アプリが127.0.0.1:10808に接続する設定でも、クライアントが別のポートで待ち受けていれば、リモートノードに問題がなくても接続できません。また、そのポートがSOCKS専用の場合、アプリからHTTPプロキシとして利用することはできません。SOCKSとHTTPの混在待ち受けに対応した設定では、クライアントの表示に従ってください。

よくある質問:インポート成功、ハンドシェイク失敗、コアの切り替え

v2flyNGでVLESSノードをインポートできるのに接続できないのはなぜ?

まずノードの編集画面を開き、セキュリティの種類とflowを確認してください。基本的なVLESSとVLESS + REALITYでは必要な機能が異なります。ノードがREALITYやVisionを要求する場合は、対応するv2rayNGに切り替え、各設定項目を確認してください。セキュリティ設定だけを別の項目に変えても解決しません。

Xrayに切り替えた後、以前のJSON設定をそのまま使えますか?

一概には言えません。まず元のファイルを保存し、クライアントでノード単体の共有リンクを再インポートして、最小構成で動作を確認してください。JSON全体を移行する必要がある場合は、使用中のコアの設定形式に合わせて項目を1つずつ確認します。未知の項目や解析エラーが出たらログを手がかりにし、複数の項目を続けて削除して試すのは避けてください。

REALITYのハンドシェイクに失敗します。コアが古いのでしょうか?

バージョンごとの機能は確認項目の1つにすぎません。端末の時刻、サーバーアドレスとポート、公開鍵、Short ID、サービス名、フィンガープリント、flowを順番に確認してください。設定が一致していると確認できたら、信頼できる配布元からクライアントを更新します。画面側のプログラムだけを更新しても、古いコアが起動したままでは解決しない場合があります。

ノードのテストは成功するのにブラウザーが開けない場合、まず何を確認すればよいですか?

まず、システムプロキシまたはAndroidのVPNがブラウザーの通信を取り込んでいるか確認し、次にローカルポートとルーティングを確認してください。ログにドメイン名の解決失敗が表示された場合は、DNSを個別に調べます。コア、DNS、ルーティングを同時に切り替えると、どの変更が影響したのか判断しにくくなります。

選択手順は次のとおりです。まずノードの設定項目をすべて確認し、次に必要なコアの機能を特定してクライアントを選び、最後にプロキシの入口とルーティングを検証します。安定して使えているVMessなどの互換設定なら、名前を変えるためだけに環境全体を移行する必要はありません。REALITYやVisionが必要な場合は、インポートの成功だけで互換性を判断せず、要件に合ったXray環境を使ってください。

v2rayNをダウンロードOSとインストール形式を選択