PROJECT V / V2FLY / XRAY
オープンソースのコアとGUIクライアントを区別する
クライアントのダウンロードで解決するのはインストールと管理の問題です。設定能力はコアによって決まり、接続にはサーバーパラメーターのインポートも必要です。この3つの段階を分けて確認してください。
Project Vとコアの系譜を理解する
Project Vは、ネットワークプロキシツールとその機能を中心とするプロジェクト群で、V2Rayはその重要な構成要素です。V2FlyコミュニティはV2Rayコアの開発と保守を引き継いでいます。Xrayは関連する技術基盤から発展し、独自のコアと機能開発の道筋を持っています。一部のプロトコル概念や設定方法は共通していますが、同じプログラムの別画面というわけではありません。「V2Rayコアの違い」を調べるときは、対応プロトコル、トランスポートの組み合わせ、設定項目、クライアントとの連携方法を合わせて確認してください。
コアは設定を読み込み、インバウンド接続を受け付け、ルーティングを照合してアウトバウンドを確立します。GUIクライアントは、サブスクリプションや設定をコアが読み取れる形式に変換し、起動、停止、ログ、システム連携の機能を提供します。クライアント名が似ていてもコアが同じとは限らず、同じクライアントが複数のコアを呼び出す場合もあります。アプリ名だけで互換性を判断するより、実際に起動したコアとログを確認するほうが確実です。
プロトコル名は通信する双方がデータをやり取りする方法を示し、トランスポート方式はデータを運ぶ経路を示します。セキュリティ設定はハンドシェイクと認証に影響します。共有リンクをインポートすると、クライアントはこれらの項目を解析しますが、サーバー側の不足した設定を補うことはできません。接続できない場合は、ソフトウェアのインストールに原因を決めつけず、まずサーバーアドレス、ポート、時刻、ハンドシェイク設定を確認し、その後コアの対応状況を調べてください。
端末に合わせて3つのオープンソースクライアントを選ぶ
v2rayNはデスクトップ向けで、サブスクリプション管理、ルーティング設定、複数コアの呼び出しなどに対応します。デスクトップ版はクロスプラットフォームのUIを採用し、クラシックWPF版は別のデスクトップUIと操作方法を維持しています。選ぶ際は、まずOSとアーキテクチャを確認し、次に必要なUI機能を比べてください。名前が同じだからといって、2種類の配布形式を同じディレクトリにインストールする必要はありません。アップグレードや移行の前に、サブスクリプショングループ、ルーティング、独自設定をバックアップし、上書き後に元へ戻せなくなるのを防ぎましょう。
v2rayNGはAndroid端末向けで、主にXrayコアを使って接続し、システムのVPNインターフェース経由でアプリの通信を受け取ります。v2flyNGはV2Flyコアを使う代替クライアントです。画面やインポート手順が似ていても、コアの対応範囲は個別に確認してください。モバイル端末では、クライアント名だけで接続できると判断せず、サーバー設定とコアの互換性を確認したうえで、アプリごとのプロキシ設定、バックグラウンド動作、バッテリー管理を確認します。
これら3つのクライアントはいずれもオープンソースプロジェクトを基盤としています。オープンソースとは、ソースコードと適用ライセンスを確認できるという意味であり、独自に変更した配布ファイルも同じ由来だという意味ではありません。ライセンスを確認する際は、クライアントと組み込まれたコアを分けて考えてください。V2RayコアはMITライセンス、XrayコアはMPL-2.0ライセンスを採用し、クライアント本体にも各プロジェクトのライセンス条件が適用されます。変更や再配布を行う場合は、それぞれに適用される条件を確認してください。
ソフトウェア、サブスクリプション、ルールを別々に更新する
ソフトウェアの更新はクライアントやコアの実行機能を変更し、サブスクリプションの更新はサーバーパラメーターを読み込み、ルールリソースの更新はドメインやアドレスの分類と照合に影響します。この3種類の更新は別のものです。サブスクリプションの失敗時にクライアントを再インストールしても、無効になったリンクは通常直りません。ルールが一致しない場合もサーバー障害とは限らず、分類リソース、照合順序、対象ドメインの識別が原因のことがあります。まず何を更新するかを特定し、適切な更新方法を選んでください。
自動サブスクリプション更新を設定する前に、まず手動で一連の操作を確認してください。リンクにアクセスできること、内容を認識できること、グループのフィルター条件が正しいことを確かめてから、配信元の実際の更新頻度に合わせて間隔を設定します。プロキシ経由で更新するかどうかは、現在のネットワークからサブスクリプションURLにアクセスできるかで判断してください。接続自体が使えない状態で、更新をその接続に依存させないでください。また、何度も更新を繰り返して証明書エラーを直そうとせず、システム時刻と具体的なエラーを確認してください。
コアやルールリソースを変更した後は、固定のテスト対象を用意してください。直接接続する想定のドメイン、プロキシを使う想定のドメイン、実際にアクセスが必要なLAN内リソースをそれぞれ1つ選びます。ログと照らし合わせ、意図したルールに一致しているか確認してください。結果を確かめてからDNSの変更やTUNの有効化に進めば、複数の要因が影響し合うのを抑えられます。設定の書き出しやスクリーンショットの共有前には、サーバーの識別情報、サブスクリプションの認証情報、トラブル対応に不要な個人情報を削除してください。
通信経路に沿ってガイドとログを読み解く
システムプロキシは、その設定を参照するアプリにプロキシの接続先を提供するだけで、すべてのプログラムに同じ経路を強制するものではありません。ルーティングルールは通信がコアに入った後でアウトバウンドを決めます。そのため「グローバルプロキシ」と「すべてのアプリの通信を取り込む」は同じ意味ではありません。ブラウザーは正常でもほかのプログラムに問題がある場合は、まずそのプログラムがシステムプロキシを使っているか、ローカルプロキシアドレスを個別に設定する必要があるかを確認します。誤った層のルールを何度も変更する前に、TUNによる取り込みが必要かを検討してください。
DNSの問題も、どの段階で起きているかを分けて考えてください。アプリがシステムリゾルバーでアドレスを取得する場合もあれば、ルーティング照合や接続時にコアが名前解決する場合もあります。ログにアドレスが表示されても、元のドメイン名が保持されているとは限りません。トラフィックの嗅ぎ分けを有効にしても、すべての接続からドメイン名を復元できるわけではありません。ドメイン単位で振り分ける場合は、インバウンド、名前解決の経路、sniffing設定の関係を確認してください。FakeDNSを使う設定は通信の取り込み範囲も含めて確認し、DNSアドレスだけを置き換えないでください。
エラーログを読むときは、まず操作時刻、対象、エラーの種類を記録し、名前解決、接続、ハンドシェイク、ルーティングのどの段階で発生したかを調べます。接続タイムアウトと証明書エラーでは対処が異なり、コアが起動しない問題と特定の接続先にアクセスできない問題も分けて考える必要があります。基本操作はクイックスタート、組み合わせ設定は詳細ガイドで紹介しています。問題の段階を特定したい場合は、FAQのカテゴリで確認手順を調べてから、該当する設定ページに進んでください。