V2Rayは、Project Vのモジュール型ネットワークプロキシ設計から生まれました。インバウンド、アウトバウンド、ルーティング、通信方式などを分けて構成し、リクエストごとに異なる経路へ振り分けられます。現在V2Rayを検索すると、V2Fly、Xray、v2rayN、v2rayNGもあわせて見つかることがよくあります。これらはそれぞれ異なる階層の名称であり、同じインストーラーの別名ではありません。それぞれの役割を理解しておけば、問題発生時に確認すべき範囲を絞れます。
日常的な利用では、GUIクライアントが主な操作窓口になります。サブスクリプションが接続設定を提供し、コアが設定を読み込んで接続を確立します。システムプロキシやVPNインターフェースによってアプリのリクエストをクライアントに取り込み、ルーティングによってその行き先を決定します。この4つは相互に関係しますが、互いの代わりにはなりません。サブスクリプションの取得に成功しても接続できるとは限らず、接続できてもすべてのアプリがプロキシを使うとは限りません。この順番で確認するほうが、サブスクリプションを何度も取り込んだり、アプリを再インストールしたりするより効果的です。
プロジェクトの背景
モジュール型設計から設定を理解する
Project Vの設計思想は、ネットワークの動作を1つのスイッチにまとめるのではなく、役割ごとに分けたモジュールを組み合わせることです。インバウンドはアプリからのリクエストを受け取り、アウトバウンドは接続先やプロキシサーバーへの接続を担います。ルーティングは経路を選び、トランスポート層は接続の運び方を定めます。この役割分担があるため、クライアントにはサブスクリプション、ルーティング、DNS、リスニングポートなど複数の設定項目があります。画面には多くの項目が並びますが、それぞれに適用範囲があります。
たとえばローカルリスニングポートを変更すると、アプリがクライアントに接続する場所が変わります。一方、遠隔サーバーのポートを変更すると、クライアントからサーバーへの接続先が変わります。同じ「ポート」でも、互いに置き換えることはできません。同様に、グローバルルーティングはコアに届いた後の経路選択に影響しますが、システムプロキシを参照しないアプリが自動的にプロキシを使うようにはなりません。こうした境界を理解すれば、まず基本設定で接続を確立し、その後、通信の振り分けやトラフィックの取り込みを段階的に追加できます。
技術資料を探すときは、その資料がどのクライアント、コア、設定階層を対象としているかも確認してください。コアの設定ファイルについて解説した記事にある項目を、GUIの入力欄にそのまま入力できるとは限りません。まず概念を理解し、現在の画面と照らし合わせることで、異なるプロジェクトの説明を混同するミスを防げます。
専門用語を確認 →
コアの系譜
V2FlyとXrayはそれぞれ独自に開発
V2FlyコミュニティはV2Ray関連の実装を継続して保守し、Xrayは関連コードを基盤に独立したコアプロジェクトとして開発されています。共通の技術的背景を持ちながら、それぞれ異なる実装方針と機能開発のペースがあります。利用者にとって重要なのは、どちらが優れているかを決めることではありません。使用中のコアが、ノードで必要なプロトコル、通信方式、安全性に関する設定に対応しているか確認することです。
v2rayNはバージョンと設定に応じて適切なコアを利用できます。Android版ではv2rayNGが主にXrayコアを使い、v2flyNGはV2Flyコアを選べます。コアの切り替えは万能な解決策ではありません。サブスクリプションリンクの失効、システム時刻のずれ、ローカルポートの競合が原因なら、コアを変えても同じ症状が続くことがあります。まずログが示す問題箇所を確認し、実装の変更が必要か判断してください。
サーバーから指定されたパラメーターは、互換性を確認する際の基準になります。エラーを消すために証明書の検証を安易に無効化したり、認識できない項目をすべて削除して使い続けたりしないでください。まず元の設定を保存し、クライアントとコアの組み合わせを確認します。パラメーターの意味が分からない場合は、対応する用語解説とトラブル対処を参照してください。
症状から問題を診断 →
オープンソースとライセンス
3種類のクライアントと各ライセンス
v2rayN、v2rayNG、v2flyNGはいずれもオープンソースのGUIクライアントで、アプリ自体は無料で利用できます。オープンソースとは、プロジェクトのコードとライセンスを確認できるという意味です。遠隔サーバー、サブスクリプションの利用枠、接続設定が自動的に提供されるわけではありません。実際に接続するには、アクセス権のあるサブスクリプション、または自身で管理するサーバー設定が必要です。
オープンソースのエコシステムでは、すべてのコンポーネントが同じライセンスを使うわけではありません。v2rayNプロジェクトはGPL-3.0、v2rayNGとv2flyNGのプロジェクトもGPL-3.0を採用し、V2FlyとXray関連のコアプロジェクトはMPL-2.0を採用しています。配布パッケージ内の他のコンポーネントには、それぞれ別のライセンスが適用される場合があります。通常の利用と、改変・再配布に関する義務は異なります。改変や再配布を予定している場合は、使用するプロジェクトと各コンポーネントのライセンス全文を確認してください。
設定管理とネットワークサービスも分けて考える必要があります。クライアントがサブスクリプションを保存・解析できても、その有効性を判断できるわけではなく、サーバーの運用や保守に代わるものでもありません。接続に問題が起きたら、アプリの設定、設定内容、遠隔サーバーの状態のどれが原因かを確認してから、適切な対処を選びましょう。既存の設定を保ちながら、設定の提供元にも実際の症状を伝えやすくなります。
3種類のクライアントを比較 →
更新と動作確認
アプリ・コア・サブスクリプションを分けて更新
アプリの更新では画面や設定管理の仕組みが変わることがあり、コアの更新ではプロトコル機能やパラメーターの対応状況が変わる場合があります。サブスクリプションの更新は、主に接続設定を更新します。それぞれ影響する範囲が異なるため、トラブルの調査中に一度にすべて更新しないでください。接続できていたのに問題が起きた場合は、発生前に行った変更を記録し、1つの項目ずつ確認すると、更新が原因か判断しやすくなります。
アップグレード前にサブスクリプショングループとカスタムルーティングを保存し、インストーラーが現在のOSとプロセッサーアーキテクチャに対応していることを確認してください。アップグレード後はまず従来の設定で基本接続をテストし、次にシステムプロキシと対象アプリを確認します。TUNやアプリごとのプロキシなどの拡張設定は、基本接続の確認後に設定してください。新機能だけが動作しない場合は、検証済みのモードに戻してから、ログで権限や互換性の問題を調べます。
ログは失敗した段階の特定に役立ちますが、サーバーアドレス、サブスクリプションリンク、その他の機密パラメーターが含まれる場合があります。問題を共有する際は、必要なエラー情報だけを残し、認証情報を隠してください。あわせて端末のプラットフォーム、動作モード、影響を受けるアプリを説明しましょう。未加工の設定画面をそのまま共有するより、再現手順を明確にしたほうが役立ち、調査中の情報漏えいも防げます。
よくある質問を見る →
初回設定では、確認手順をシンプルに保ちましょう。サブスクリプションを取り込み、設定を1つ選び、コアの起動を確認します。次にシステムプロキシまたはモバイル版のVPNモードを有効にし、最後に対象アプリで接続をテストしてください。基本接続が正常になってから、ルーティングルール、アプリごとのリスト、TUNを追加します。各手順を個別に元に戻せるようにしておけば、問題が起きたときも確認箇所を特定しやすくなります。
ブラウザーは使えても他のアプリで接続できない場合は、すべてのノードをすぐに更新せず、まずアプリのプロキシ設定を確認してください。すべての設定で同時にタイムアウトする場合は、端末のネットワークとコアの状態を確認します。サブスクリプションの更新結果だけが空の場合は、リンクの形式とリクエスト方法を確認してください。症状に応じた手順はトラブル診断で順に確認できます。クイックスタートで基本操作を確認し直すこともできます。