V2RayとXrayは、どちらもプロキシ通信を処理する「コア」と呼ばれるソフトウェアですが、同じアプリを別名で呼んでいるわけではありません。v2rayNやv2rayNGのようなクライアントは、設定画面、ノード管理、システムプロキシ、TUNなどを担当し、実際の通信処理は選択したコアが実行します。この役割を分けて理解しないと、「V2Rayのアプリを入れたのにXrayノードが動かない」「クライアントを変更したら同じ設定が使えなくなった」といった混乱が起きます。この記事では、V2RayとXrayの関係、VMess・VLESS・Realityなどの位置付け、初心者がクライアントとコアを選ぶ基準、安全に初期設定を確認する手順を整理します。
V2RayとXrayの違いを、コア、クライアント、通信プロトコル、トランスポートの4層に分けて説明します。Windowsではv2rayN、Androidではv2rayNGを入口として考え、まず対応するコアを確認し、その後にノードのプロトコルと転送方式を照合します。設定をむやみに書き換えるのではなく、バージョン、ログ、ローカルポート、ルーティングモードを順番に確認したい初心者向けの内容です。
V2RayとXrayの基本関係:アプリではなく通信コアの違い
V2Rayという名称は、もともとV2Rayコアを中心としたプロジェクトと、その仕組みに対応するクライアント群を指す言葉として広まりました。現在の実運用では、V2Rayの後継系としてv2flyのコアを使う構成と、V2Rayを基に改良されたXray-coreを使う構成が並んでいます。XrayはV2Rayと無関係な別系統のアプリではなく、設定形式や多くの基本概念を共有しながら、機能追加と実装変更を重ねてきたコアです。
一方、v2rayNやv2rayNGはコアそのものではありません。これらはノード情報を保存し、ユーザーが選んだ設定からJSONを生成し、ローカルの待受ポートを開き、指定したコアを起動するクライアントです。たとえばv2rayNで「Xray」を選択しても、v2rayNという画面アプリがXrayに変わるわけではありません。クライアントの内部でXray-coreを呼び出して通信処理を任せているだけです。
この構造を、ブラウザー、v2rayN、Xray-core、サーバーの4段階として覚えると分かりやすくなります。ブラウザーは通常、127.0.0.1のSOCKSポート10808またはHTTPポート10809へ接続します。v2rayNはその接続を受け、ルーティング規則に従ってXrayまたはv2fly系コアへ渡します。コアはノードに設定されたVMessやVLESSなどの方式でサーバーと通信します。したがって、画面が起動していてもコアが停止していれば、ブラウザーの接続は成立しません。
結論:クライアントとコアを別々に確認する
「v2rayNが起動する」は画面アプリの確認にすぎません。接続できないときは、クライアントの起動状態、選択中のコア、生成された設定、ノードの通信方式を分けて確認すると、原因を短時間で絞り込めます。
VMess・VLESS・Realityは何を表すのか
初心者が混同しやすいのが、コアの種類とノードのプロトコルです。V2RayやXrayは通信処理を行うエンジンであり、VMessやVLESSはそのエンジンが扱う通信プロトコルです。さらにTCP、WebSocket、gRPC、HTTP/2などはデータを運ぶトランスポート方式、TLSやRealityは通信を保護または偽装するためのセキュリティ層として現れます。ノード名に「VLESS-Reality-TCP」と書かれている場合、通常はVLESS、TCP、Realityという複数の要素を組み合わせた構成です。
VMess構成
- プロトコル
- VMess
- 認証
- UUID
- 転送方式
- TCP・WS・gRPCなど
- 暗号化
- TLSまたはnone
既存ノードとの互換性を重視するときに確認する組み合わせです。
VLESS + Reality構成
- プロトコル
- VLESS
- 認証
- UUID
- 転送方式
- TCP
- 主な項目
- Public Key・Short ID・SNI
Xray-coreで利用されることが多く、各パラメーターの一致が重要です。
VMessは従来から広く使われている方式で、利用中のサーバーがVMessを提供しているなら、対応するコアで継続利用できます。VLESSは認証と転送を比較的分離した設計で、TLSやRealityなどと組み合わせて使われます。Realityを使用するノードでは、サーバー名、公開鍵、Short ID、フィンガープリント、Flowなどの値が一つでも異なると接続に失敗します。ノードのリンクを手作業で編集すると、このような項目を欠落させやすいため、最初は正規のサブスクリプションまたは共有リンクからインポートしてください。
「VLESSだから必ずXray」「VMessだから必ず古いコア」と単純に決めることもできません。実際の対応範囲は、クライアントに同梱されたコアの種類とバージョン、ノードで使用している転送方式、設定生成処理によって変わります。ただし、Reality、特定のVision系設定、比較的新しいXray専用機能を含むノードでは、Xray-coreを優先して確認するのが一般的です。
初心者の選び方:v2rayNとv2rayNGをどう使い分けるか
クライアントは、利用する端末と必要な操作範囲で選びます。Windowsで複数のノードを管理し、システムプロキシ、TUN、ルーティング、ログを細かく確認したい場合はv2rayNが扱いやすい選択肢です。Androidでサブスクリプションを更新し、アプリ別プロキシやVPN方式を使いたい場合はv2rayNGが候補になります。クライアントの名称にV2Rayが含まれていても、内部でXray-coreを利用できる場合があるため、名称だけで対応コアを判断しないでください。
-
端末を決める
Windowsではv2rayN、Androidではv2rayNGを候補にします。配布元とダウンロードページの対応OS、CPUアーキテクチャ、必要なランタイムを確認し、用途と異なるパッケージを選ばないでください。
-
コアを確認する
v2rayNで「設定」→「パラメータ設定」→「Coreタイプ」を開きます。VLESS + RealityなどのノードではXrayを選び、VMessの既存ノードでは対応状況を確認したうえでv2fly系またはXrayを選択します。
-
サブスクを追加する
「サブスクリプショングループ」→「サブスクリプショングループ設定」→「追加」と進み、提供元からコピーしたURLを貼り付けます。URLの前後に空白や改行を入れず、トークンを手入力で編集しないでください。
-
ノードを更新する
保存後、「サブスクリプショングループ」から更新を実行します。ノードが表示されたら、まず1件だけ選択し、遅延テストを行います。すべてのノードを同時に変更すると、どの設定が原因か分からなくなります。
-
通信を確認する
v2rayNのシステムプロキシを有効にし、ブラウザーで確認します。必要なアプリまで対象にする場合は「設定」→「パラメータ設定」→「TUNモード設定」を確認し、管理者権限、仮想ネットワークアダプター、DNSの捕捉範囲を順番に確認します。
初期設定では、ローカルポートを不用意に変更しないことも重要です。SOCKSポートを10808、HTTPポートを10809にした場合、クライアントとブラウザーの両方で同じ番号を指定します。別のアプリが10808を使用していると、コアの起動に失敗したり、接続先が別のサービスになったりします。ログに「address already in use」や「failed to listen」と表示された場合は、ポート競合を解消してから再起動してください。
安全な始め方:設定を変更する前に確認する項目
プロキシクライアントは、通信先やDNS、ルーティングを変更できるため、出所が不明な実行ファイルや設定ファイルをそのまま使用するのは避けてください。ダウンロード時は公式に案内された配布ページを利用し、ファイルを展開したフォルダー内の実行ファイルと設定ファイルを確認します。サブスクリプションURLには認証情報が含まれることがあるため、公開掲示板や第三者のスクリーンショットへ貼り付けないでください。
- コアの確認:クライアントの設定画面で、実際に起動するコア名とバージョンを確認します。
- ノードの確認:サーバーアドレス、ポート、UUID、SNI、公開鍵、Short IDなどを共有情報と照合します。
- 権限の確認:TUNを使用する場合だけ管理者権限やVPN権限が必要になることがあります。不要な権限を常時許可しないでください。
- ログの確認:接続失敗時は画面の印象ではなく、コアログの時刻、エラー、対象ノードを記録します。
- 終了時の確認:クライアントを終了した後、システムプロキシが解除され、通常のネットワークへ戻っていることを確認します。
V2RayとXrayはどちらをインストールすればよいですか?
まずクライアントを選び、コアはノードの対応方式で決めます。VLESS + RealityならXray-coreを優先し、VMessの既存設定は現在のコアで読み込めるかを確認してください。
v2rayNを入れればXrayも自動で使えますか?
クライアントの配布パッケージにXray-coreが含まれているか、コア管理画面から追加できるかを確認します。設定画面で選択中のコアがXrayになっていることも必要です。
VLESSのノードが表示されるのに接続できません。
表示は解析成功を意味するだけです。ポート、UUID、SNI、Public Key、Short ID、Flowを照合し、ログにTLSやReality関連のエラーがないか確認します。
コアを変更するとノードが消えますか?
通常、ノード情報とコアの選択は別の設定です。ただし、変更後のコアがプロトコルや転送方式に対応しない場合、ノードは残っていても起動や接続テストに失敗します。
接続できないときの切り分け手順
接続障害は、クライアント、コア、ノード、ネットワークのどこでも発生します。最初にノードを何度も入れ替えるのではなく、選択中の1件で状態を固定します。次に、コアが起動しているか、ローカルポートが待ち受けているか、システムプロキシが有効かを確認します。ブラウザーだけが開けない場合はプロキシ設定やDNSを調べ、複数のアプリがすべて失敗する場合はコア、TUN、ノード側を調べるという順序が効率的です。
エラー:failed to listen on 127.0.0.1:10808
原因と対処:10808番ポートを別のプロセスが使用しています。クライアントを二重起動していないか確認し、不要なプロセスを終了するか、クライアント側とブラウザー側のポートを同じ別番号へ変更します。
エラー:failed to find an available destination
原因と対処:宛先の判定または名前解決に失敗しています。ノードのサーバーアドレス、DNS設定、ルーティング規則を確認し、まずIPアドレスへの到達性とコアログの前後関係を調べます。
エラー:tls: handshake failure
原因と対処:TLSまたはRealityのパラメーターが一致していません。SNI、Public Key、Short ID、フィンガープリント、サーバー時刻を共有情報と照合し、手動編集した値を元に戻します。
v2rayNでシステムプロキシを有効にしても通信できない場合は、ブラウザーが別のプロキシやセキュアDNSを使っていないか確認します。TUNモードで問題が出る場合は、仮想アダプターの作成、権限、DNSハイジャック、IPv4とIPv6の扱いを確認します。ログレベルを長時間「debug」にすると機密情報や大量の通信記録が残ることがあるため、検証時だけ一時的に詳細化し、終了後はwarningまたは通常のレベルへ戻してください。
最初の成功条件は、速度の最大値ではありません。選択した1ノードでコアが正常起動し、ブラウザーの接続先が想定したローカルポートに入り、DNSとルーティングが意図した動作をし、クライアント終了後に設定が戻ることです。この基準を満たしてから、別のコア、別のトランスポート、TUN、分割ルーティングを一つずつ試すと、設定変更の影響を追跡しやすくなります。