OPEN SOURCE CONTEXT
Project V、V2Fly、Xrayの関係
グラフィカルクライアント、プロキシコア、設定形式の階層を理解することは、ソフトウェア名を覚えるだけよりも、選定とトラブルシューティングに役立ちます。
CLIENT UI
CONFIG
CORE
NETWORK
A / ORIGIN
Project Vのコンポーネント設計
Project VはV2Rayエコシステム初期の重要な技術基盤を築きました。その設定モデルでは、インバウンド、アウトバウンド、ルーティング、DNS、トランスポート、ポリシーを組み合わせ可能なモジュールとして分離します。この構造により、同じコアでさまざまなローカル入口とリモートアウトバウンドを扱え、グラフィカルクライアントは複雑なJSON項目をサブスクリプション一覧、選択メニュー、ルール編集画面に変換できます。v2rayNやAndroidクライアントで見るサーバー、ルーティング、DNS設定は、本質的にはコアが読み取れる設定を整理したものです。
コンポーネント化されているからこそ、問題も層ごとに特定する必要があります。サブスクリプションURLを更新できない場合は入力とレスポンス形式、コアが起動しない場合は設定項目と起動ログ、接続済みなのに一部アプリが通信できない場合はシステムプロキシ、TUN、DNS、ルーティングを確認します。すべてを「ノードの問題」と呼ぶと、クライアントや端末ネットワーク層の影響を見落とします。
B / CORE FAMILY
V2FlyとXrayのコア系統
V2Flyコミュニティはv2ray-coreと関連コンポーネントを引き継いで保守し、Project Vの設定体系にある多くの中核概念を維持しています。Xrayは近いモジュール設計をもとに独立した実装を形成し、独自のプロトコル、トランスポート、設定機能を発展させています。両者はインバウンド、アウトバウンド、ルーティング、DNSなどで多くの共通点を持ちますが、具体的な項目、既定動作、拡張機能は異なる可能性があり、設定の見た目が似ているだけで直接置き換えられるとは限りません。
サブスクリプションの変換では、移行先のコアを特に意識する必要があります。基本的なサーバーアドレス、ポート、ユーザー識別子、トランスポート項目は対応付けやすい一方、一部のセキュリティ設定、フロー制御、トランスポート拡張は特定の実装にしか対応しない場合があります。変換ツールは提供された情報を組み替えるだけで、元の設定にない重要項目を補完することはできません。インポート後に接続できない場合は、元のリンクと移行先コアの対応項目を一つずつ確認してください。
C / CLIENTS
3種類のクライアントの役割
v2rayNはWindows、macOS、Linuxのデスクトップ環境向けで、サブスクリプション、ノード一覧、プロキシモード、ルーティング規則、ログ、コア呼び出しを管理します。v2rayNGはAndroid向けで、Xrayコアを使ってモバイル接続を管理します。v2flyNGもAndroid向けですが、V2Flyコアを使用します。名前が似ていても、3つが同じUIコードやコアを共有しているとは限りません。デバイスのプラットフォームと設定の依存関係を基準に選びましょう。
グラフィカルクライアントは設定編集のハードルを下げますが、ネットワーク処理の基本ロジックを変えるものではありません。サブスクリプションは認識可能な内容を返す必要があり、サーバーは接続可能でなければなりません。名前解決はローカルとリモートのDNSポリシーに左右され、ルーティング規則は照合条件に従ってアウトバウンドを決めます。これらを理解すれば、「サブスクリプションを更新」「アクティブサーバーに設定」「システムプロキシ」「TUNモード」が、それぞれ明確な処理段階に対応していることが分かります。
D / LICENSE & UPDATE
オープンソースライセンスと更新の判断
V2Fly、Xray、および3種類のグラフィカルクライアントは、公開ソースコードとして開発・保守され、それぞれのオープンソースライセンスに従って公開されています。コンポーネントごとにライセンスが異なる場合があります。コアとクライアントは独立したプロジェクトで、リリースのタイミングも別々です。オープンソースであるため実装の確認、修正の提案、設定動作の検証がしやすくなりますが、特定のバージョンが現在のOSやサブスクリプション形式に適合するかは、更新内容と実環境を踏まえて判断してください。
クライアントを更新する前に、現在のサブスクリプショングループ、プロキシモード、カスタムルールを記録し、新バージョンで設定ディレクトリ、既定のコア、UI構造が変更されていないか確認します。現在の環境が安定しているなら、変更内容を読まずにクライアント、コア、ルーティングを同時に更新・書き換える必要はありません。段階的に更新すれば、まず1つのコンポーネントで起動、サブスクリプション、接続、分岐を検証し、その後に次の層へ進めます。