この記事の概要

クライアントを選んでいる方、サブスクリプションをインポートした後にコアの互換性で困っている方、V2Ray・V2Fly・Xrayの違いが分からない方に適した内容です。Project、コア、クライアント、プロトコルの役割を整理し、v2rayNでCoreタイプ、ログのバージョン、待ち受けポート、実際の動作状態を確認できるようになります。

Project V、V2Ray、V2Fly、Xrayの名称と階層

Project Vは、この技術体系が初期に使っていたプロジェクト名で、V2Rayはその中でも広く知られるプロキシコアです。多くの解説では同じソフトとして扱われますが、メンテナンス系統や設定互換性、クライアント選びでは、プロジェクト名と具体的なコアを分けて考える必要があります。

V2Rayは2015年ごろから公開開発が始まり、コアプログラムがインバウンドの待ち受け、プロトコルのハンドシェイク、ルーティング判定、DNS問い合わせ、アウトバウンド接続を処理します。完全なデスクトップ画面を備えたクライアントではありません。サブスクリプション一覧、遅延テスト、トレイメニュー、システムプロキシの切り替えなどは、通常v2rayNのようなGUIクライアントが提供します。

2020年前後から従来のエコシステムはコミュニティ主導のメンテナンス段階に入り、V2Flyがv2ray-coreを引き継ぐコミュニティプロジェクト群となりました。その後、ドキュメントで見かけるV2Fly、v2fly-core、V2Ray 5.xは、通常このコミュニティ系統を指します。名称が変わっても古い設定が直ちに使えなくなるわけではありませんが、設定形式、機能モジュール、対応バージョンは継続的に進化します。

Xrayは、同じ技術的基盤から発展した別のコアファミリーです。inbounds、outbounds、routing、dnsなど、ユーザーに馴染みのある設定概念を多く引き継ぎながら、独自の機能開発サイクルを形成しています。両者には歴史的なつながりがありますが、リリースバージョン、実装の細部、利用できる機能をそのまま同一視することはできません。

2015
V2Rayプロジェクトが開発を始めた年
2020
コミュニティ版が明確になった時期
10808
一般的なローカルSOCKS待ち受けポート
10809
一般的なローカルHTTP待ち受けポート

結論:まず階層を確認し、その後で名称を比較する

「V2Ray」と書かれていたら、それがエコシステム全体の総称なのか、v2fly-coreコアなのか、クライアント内のCore選択肢なのかをまず確認しましょう。具体的なコアとバージョンまで絞り込んで初めて、プロトコル対応や設定互換性を比較できます。

コアとGUIクライアントの役割

コアは、ネットワークトラフィックを実際に処理するプログラムです。アプリケーションがローカルのSOCKSまたはHTTPポートへリクエストを送ると、コアは対象のドメイン名やIPを読み取り、ルーティング規則に従って直接接続、プロキシ、遮断のいずれかへ振り分け、VMessやVLESSなどのプロトコルに必要な接続処理を実行します。DNSの振り分け、ドメインスニッフィング、接続ログも主にコアが担当します。

GUIクライアントは、これらの機能を操作できる画面にまとめます。サブスクリプションURLを保存し、内容をノード一覧へ変換し、コア用の設定を生成してコアプロセスを起動・停止し、システムプロキシも変更します。GUIを閉じた後も動作が続くかどうかは、クライアントのトレイ設定とコアプロセスの状態によって決まり、ウィンドウの有無だけでは判断できません。

そのため、「クライアントのバージョン」と「コアのバージョン」は別の数字です。たとえばv2rayN 7.xでは、画面に表示されるバージョン番号はv2rayNのものです。実行ログに表示されるXray 25.xやv2fly-core 5.xが、現在呼び出されているコアのバージョンです。トラブル対処では、クライアントのバージョンだけでは設定項目の対応状況を判断できないことが少なくありません。

階層 主な役割 よく表示される内容 よくある症状
GUIクライアント サブスクリプション管理、ノード選択、設定生成、システムプロキシの切り替え サーバー一覧、トレイメニュー、遅延結果 サブスクリプションが更新されない、ノードが選択されていない、システムプロキシが有効になっていない
プロキシコア プロトコル接続、ルーティング、DNS解決、トラフィック転送 起動ログ、待ち受けアドレス、接続エラー 設定項目の非互換、ハンドシェイク失敗、ポート競合
サブスクリプション内容 サーバーアドレス、ポート、ユーザー識別子、通信パラメータの伝達 VMess、VLESSのノードとグループ名 項目の欠落、パラメータの期限切れ、現在のコアで認識できない

設定のポイント:「起動に成功」と表示されても、コアプロセスが動作していることを示すだけです。ログに 127.0.0.1:10808 またはクライアントで設定した実際の待ち受けポートが存在することを確認し、対象アプリがそのポートを使用しているかも確認してください。

v2rayN、v2rayNG、v2flyNGが対応するコア

v2rayNはデスクトップ向けのGUIクライアントで、幅広い設定を管理できる点が特徴です。サブスクリプション、ルーティング規則、システムプロキシ、TUNモードを管理でき、Coreタイプによって現在のノードを処理するコアを決めます。選択肢はv2rayNのバージョンによって変わるため、クライアント名だけで実際にどの系統のコアが動作しているかを断定することはできません。

v2rayNGはAndroid向けのクライアントで、一般的なリリースではXrayコアを使用します。画面からVMessやVLESSのノードをインポートすると、共有パラメータをXrayが読み込める実行設定へ変換します。接続できるかどうかは、トランスポート層、セキュリティパラメータ、サーバー設定にも左右され、「Xray」と表示されているだけで全ノードに自動対応するわけではありません。

v2flyNGもAndroid向けですが、V2Flyコミュニティのコア系統に近い位置付けです。v2fly-coreの挙動を検証したい場合、対応する設定機能を使いたい場合、またはモバイル側とサーバー側で同じコアファミリーを維持したい場合に適しています。2つのAndroidクライアントは操作画面が似ていますが、内部実装と機能追加のペースは分けて判断する必要があります。

クライアント プラットフォーム 主なコアの関係 適した用途
v2rayN デスクトップ 対応バージョンではXrayまたはv2fly Coreを選択可能 サブスクリプション管理、複雑なルーティング、システムプロキシ、TUN
v2rayNG Android 主にXrayコアを使用 Xrayの機能と一般的な共有リンクを利用
v2flyNG Android v2flyコア系統を使用 V2Flyの設定と動作の一貫性を保つ

結論:設定機能を基準にクライアントを選ぶ

デスクトップでコアの切り替えや複雑な規則の管理が必要ならv2rayN、AndroidでXray系統を使うならv2rayNG、v2flyコアの挙動が必要ならv2flyNGを選びます。

v2rayNでCoreタイプを確認・切り替える

コアを切り替える前に、現在利用できるノードとルーティング設定を記録し、クライアントのログを確認します。ログの冒頭には通常、コア名、バージョン、設定の読み込み結果が表示されます。ログにポートの待ち受け失敗だけが出ている場合は、10808または10809を使用している古いプロセスを先に終了し、プロトコルを何度も切り替えて本当の原因を隠さないようにしてください。

以下ではv2rayN 7.xの設定構成を例にします。マイナーバージョンによって表示位置は変わることがありますが、確認の順序は同じです。まずCoreタイプを確認し、次に接続を再起動し、最後にログで実際に起動したコアを検証します。プルダウンだけを変更して再接続しない場合、古いコアプロセスが通信を処理し続ける可能性があります。

  1. 現在の接続を停止

    v2rayNのメイン画面で現在のコアを停止し、ステータスバーが実行中から停止済みに変わるまで待ちます。古いプロセスがローカルポートを使い続けるのを防ぎます。

  2. コア設定を開く

    「設定」→「パラメータ設定」→「Coreタイプ」を開き、現在のノード種別に対応するコアの選択肢を確認します。

  3. 目的のコアを選択

    テスト目的に応じてXrayまたはv2fly Coreを選びます。選択肢が利用できない場合は、現在のクライアントバージョンに対応するコアファイルが含まれているかを確認してください。

  4. ノードに再接続

    設定を保存してサーバー一覧に戻り、元のノードを選択して再起動します。プロトコル、ルーティング、DNSを同時に変更すると、差分の原因を特定しにくくなります。

  5. 起動ログを確認

    ログ画面を開き、コア名とバージョンが変わったことを確認します。SOCKSポート10808、HTTPポート10809、またはカスタムポートの待ち受けに成功しているかも確認してください。

注意:Coreタイプは新しければよいとは限りません。サブスクリプションのノードが特定の項目に依存している場合、切り替え後に「unknown field」「failed to parse config」やアウトバウンド作成失敗が発生したら、元のコアに戻して設定機能を項目ごとに確認してください。

プロトコル、サブスクリプション、ルーティングを混同してはいけない理由

VMessとVLESSは、クライアントとサーバーの間でプロキシ接続を確立する方法を示します。サブスクリプションはノードパラメータを一括配布する仕組みで、ルーティングはローカルの通信をどのアウトバウンドへ送るかを定義します。3つは異なる階層にあります。サブスクリプションの更新に成功しても、クライアントが内容を取得できたことを示すだけで、すべてのノードを現在のコアが解析・接続できるとは限りません。

たとえばブラウザーでドメインへアクセスすると、リクエストはいったんローカルHTTPポート10809に入り、コアがドメインスニッフィングとDNS問い合わせを行うことがあります。ルーティング規則が直接接続に一致すれば、サブスクリプションのノードは使われません。プロキシに一致した場合にのみ、VMessまたはVLESSのアウトバウンドへ進みます。接続結果は、アドレス、ポート、トランスポート層、サーバー設定にも左右されます。

DNSも単なる補助スイッチではありません。ローカルのドメイン解決結果がルーティング規則の想定と異なると、コアの非互換だと誤判断する可能性があります。V2FlyとXrayを比較するときは、同じノード、同じDNS、同じルーティング規則、同じテスト対象を使い、各回でCoreタイプだけを変更してください。そうして初めてテスト結果を比較できます。

概念 確認できること 代表的な設定 確認方法
VMess、VLESS プロキシ接続をどのプロトコルで確立するか アドレス、ポート、ユーザー識別子、トランスポート、セキュリティパラメータ ハンドシェイクとアウトバウンドのログを確認
サブスクリプション ノードをどのように一括でクライアントへ取り込むか サブスクリプションURL、グループ、更新ポリシー 更新時刻とノード数を確認
ルーティング リクエストを直接接続、プロキシ、遮断のどれにするか ドメイン規則、IP規則、インバウンドタグ 規則の一致結果とアウトバウンドタグを確認
DNS ドメインをどのリゾルバーで問い合わせるか サーバーグループ、問い合わせポリシー、一致するドメイン 解決結果とコアログを比較

結論:一度に変更する変数は1つだけ

V2FlyとXrayを比較するときは、ノード、DNS、ルーティング、ローカルポートを固定し、Coreタイプだけを切り替えて同じ対象へアクセスします。サブスクリプション更新や規則変更を同時に行うと、差がどの段階から生じたのか判断できません。

クライアント選びで確認すべき5つの設定項目

一般ユーザーがプロジェクトの歴史をもとに立場を決める必要はありません。接続に本当に影響するのは、現在のクライアントが設定を正しく生成できるか、コアがサブスクリプションの項目を認識できるか、サーバーが同じパラメータに対応しているか、そしてローカルのルーティングとDNSが用途に合っているかです。名称だけでなく設定の事実を基準に選ぶほうが安定します。

1つ目はプロトコルとトランスポートパラメータです。ノードがVMessまたはVLESSと表示されていても、TCP、WebSocket、gRPCなどの通信方式と、それぞれのセキュリティ設定を確認する必要があります。2つ目はコアのバージョンで、同じコアファミリーでも古いバージョンには新しい項目がない場合があります。3つ目はクライアントの変換処理です。共有リンクをインポートした後、ノード編集画面でアドレス、ポート、トランスポートパラメータを確認してください。

4つ目はローカルでの取り込み方式です。システムプロキシは、その設定に従うアプリだけに影響します。一方、TUNモードは仮想ネットワークインターフェースを通じて、より多くの通信を取り込みます。5つ目はルーティングとDNSです。コアをテストする前に一時的に単純な規則を使い、基本接続を確認してからドメイングループ、IP規則、カスタムDNSを戻すと、調査の分岐を減らせます。

  1. クライアントのログにコア名とバージョン系列を記録し、GUIクライアントのバージョンだけを記録しない。
  2. ノード編集画面でサーバーアドレス、リモートポート、プロトコル、トランスポート、セキュリティパラメータを確認する。
  3. ローカルの待ち受けアドレスが 127.0.0.1 であることを確認し、SOCKSとHTTPの実際のポートを記録する。
  4. 同じ対象に対して直接接続規則とプロキシ規則をそれぞれテストし、アウトバウンドタグが想定どおりか確認する。
  5. 名前解決に問題がある場合はDNSログを個別に確認し、ノードの速度やコアの系統にすぐ原因を求めない。

テストのすすめ:初回の比較では、同じ作業を3回連続で実行し、接続成否、初回応答時間、ログエラーを各回記録します。3回とも同じ段階で失敗したら、その設定項目の互換性を確認してください。

よくある問題と具体的な対処方法

名称が似ていることによる問題は、主に3種類あります。GUIクライアントをコアと混同する、サブスクリプションのインポート成功をノード利用可能と取り違える、Core切り替え後にログを確認しない、というものです。以下の問題は、クライアント画面とローカルログで初期切り分けできます。

v2rayNをインストールしたら、必ずV2Flyが動作しますか?

必ずしもそうではありません。「設定」→「パラメータ設定」→「Coreタイプ」を開いて選択肢を確認し、再接続した後、起動ログで実際にXrayとv2fly Coreのどちらが動作しているかを確認してください。

同じサブスクリプションなのに、接続できるノードとできないノードがあるのはなぜですか?

各ノードの編集画面を開き、プロトコル、リモートポート、トランスポート方式、セキュリティパラメータを比較します。サブスクリプションは設定を一括で伝えるだけなので、ノードごとに必要なコア機能やサーバーバージョンが異なる場合があります。

コアを切り替えた後にポート競合が表示された場合はどうすればよいですか?

まず現在のコアを停止して残ったプロセスを終了し、10808と10809が他のプログラムに使用されていないか確認します。パラメータ設定で空いているポートに変更し、保存してから再起動することもできます。

ノードは接続済みなのに、ブラウザーの通信が流れない場合はどうすればよいですか?

まずシステムプロキシが有効になっていることを確認し、ブラウザーが独自のプロキシ設定を使っていないか確認します。手動設定では、HTTPプロキシにクライアントが表示するHTTPポートを、SOCKS5には対応するSOCKSポートを入力します。

Androidではv2rayNGとv2flyNGのどちらを選ぶべきですか?

サブスクリプションがXrayの機能に明確に依存している場合はv2rayNGを優先して試し、v2fly-core環境との一貫性が必要な場合はv2flyNGを選びます。インポート後もノードの項目を確認し、実際に接続テストを行ってください。

まとめると、Project Vはエコシステムの歴史を理解する入口であり、V2FlyとXrayは異なるメンテナンス系統から発展したコアファミリーです。v2rayN、v2rayNG、v2flyNGは、ユーザーが直接操作するクライアントです。選ぶときはまずプラットフォームとクライアントを確認し、次に実際に動作するコアを確認し、最後にプロトコル、サブスクリプション、ルーティング、DNSを確認します。名称を整理すれば、ほとんどの互換性問題を具体的な設定やログに落とし込めます。