Project Vは、V2Rayの技術エコシステムを理解するための出発点です。初期のV2Rayは、プロトコル処理、トランスポート、ルーティングなどの機能を組み合わせて設定できるネットワークツールでした。その後、コミュニティでは開発方針の違いから複数のプロジェクトが生まれています。V2FlyはV2Rayのコミュニティ開発を引き継ぎ、Xrayは関連技術を基盤に独自の機能と実装を発展させました。共通の背景はありますが、名前を自由に置き換えられる同一のプログラムではなく、すべての設定に互換性があるわけでもありません。
GUIクライアントはコアの上位に位置します。画面でサブスクリプションを保存し、サーバーを選択してルールを編集すると、クライアントが実行用の設定を生成または整理し、対応するコアに渡します。そのため、画面の「サブスクリプションを更新」は、コアのJSONに同名の項目として追加されるわけではありません。「システムプロキシを設定」もリモートサーバーのプロトコル設定ではありません。ドキュメントを読む際は、画面の設定、コアの項目、サーバー側のパラメーターのどれを扱っているか、最初に確認すると無駄な試行を減らせます。
クライアントとコアは別の層
v2rayNはデスクトップ向けで、サーバー情報、サブスクリプショングループ、システムプロキシ、ルーティングをまとめて管理し、複数のコアに関する設定もできます。v2rayNGはAndroid向けで、主にXrayコアを使用します。v2flyNGはV2FlyをベースにしたAndroidクライアントです。いずれもオープンソースですが、名前が似ていてもメニュー、設定の保存場所、機能範囲が同じとは限りません。
クライアントを選ぶ際は、まず端末のプラットフォーム、次にサーバー側の要件を確認します。Xray固有の機能を使う接続情報がある場合は、クライアントが呼び出すコアに対応機能があるか確認してください。V2Fly用の設定を使う場合は、移行前に各項目の互換性を確認します。あるクライアントの設定ファイルを別のクライアントのフォルダーにコピーしただけで、すべての設定が反映されるとは限りません。
クライアントとコアの関係を確認 →
プロトコル、トランスポート、セキュリティ層
VLESS、VMess、Trojanは接続プロトコル、WebSocketやgRPCはトランスポート方式を表します。TLSやREALITYは接続のセキュリティ層に関する設定です。これらは同じ一覧から選ぶ代替項目ではありません。接続情報を確認するときは、プロトコル、サーバーアドレス、ポート、認証パラメーター、トランスポート方式、セキュリティ層を個別に照合してください。どれか1つでも一致しないと、ハンドシェイクに失敗することがあります。
VLESS自体にはデータを暗号化する機能がありません。実際に運用する際は適切なセキュリティ層と組み合わせてください。インポート用リンクから多くの項目を自動入力できますが、サーバー名、トランスポートのパス、関連オプションがそろっているか確認が必要です。接続に失敗した場合はサーバー側の要件と1項目ずつ照合しましょう。複数の設定を同時に変更すると、どの変更が結果に影響したのか分からなくなります。
プロトコルと設定範囲を確認 →
オープンソースライセンスと利用上の注意
オープンソースとは、各プロジェクトのライセンス条件に基づいてソースコードが公開されていることです。利用、改変、再配布には、それぞれのライセンス条件が適用されます。クライアント、コア、依存コンポーネントでライセンスが異なる場合があり、エコシステム全体を単一のライセンスとして扱うことはできません。一般ユーザーはプロジェクトの説明から機能の提供元を確認できます。ソフトウェアを再パッケージ化または再配布する場合は、ライセンス文や著作権表示を保持する要件も確認してください。
クライアントとリモートサービスも別々に考える必要があります。ソフトウェアをインストールしても、サーバー、アカウント、サブスクリプションが自動的に提供されるわけではありません。サブスクリプションの内容は、そのURLを提供するサービス側で決まります。クライアントがオープンソースかどうかと、リモートサービスがデータをどのように記録するかは別の問題です。業務情報を扱う場合は、クライアント名だけで判断せず、サーバーの提供元、アクセス権限、利用環境も確認してください。
このサイトの位置付けと掲載内容 →
更新の種類と設定のメンテナンス
クライアント、コア、サブスクリプション、ルールデータの各更新は、それぞれ異なる問題に対応します。クライアントの更新は画面や設定生成のロジックに、コアの更新はプロトコル実装に影響します。サブスクリプションの更新では接続情報が同期され、ルールデータの更新ではドメインやアドレスの分類が変わることがあります。接続に問題が起きたら、直近で変更された層を確認しましょう。4種類の更新を同じ操作として何度も実行しないでください。
設定を保守するときは、元に戻せるよう変更履歴を残しましょう。変更前にカスタムルールや必要なパラメーターをバックアップし、変更後は起動ログ、ローカル待ち受け、アプリからの実際のアクセスを確認します。自動更新は繰り返し作業を減らせますが、更新結果の確認に代わるものではありません。長期間使っているカスタムJSONは、コアの変更後に各項目が引き続きサポートされているか確認し、参照されなくなったアウトバウンドタグを削除してください。
JSON設定リファレンスを見る →
インポートから実際の接続確認まで
初回設定では、順番に動作を確認しましょう。まずサブスクリプションを追加し、サーバー一覧に表示されることを確認します。次にサーバーを1つ選んで接続し、エラーログを確認します。その後、アプリからローカルプロキシを使って実際の通信を試し、最後にルーティングやTUNを追加します。サブスクリプションを追加できても、接続情報を読み込めたことを示すだけで、サーバーに到達できるとは限りません。コアの起動成功も、ブラウザーがプロキシを使っている証拠ではありません。それぞれ個別に確認してください。
ログでは、エラーがどの段階で起きたかを確認します。アドレスの名前解決に失敗した場合はDNSを、接続がタイムアウトする場合は宛先アドレスとポートを確認してください。ハンドシェイクの失敗はプロトコルとセキュリティ層を照合し、ローカルポートが使用中なら重複して起動したプロセスを確認します。ログにはアドレスや認証情報が含まれることがあるため、共有前に伏せ字にしてください。サーバーの変更やクライアントの再インストール、設定全体の変更を繰り返すより、層ごとに原因を切り分けるほうが再現性のある解決につながります。
混同しやすい設定の概念
サブスクリプションと共有リンク:サブスクリプションURLは通常、複数の接続情報を取得するためのものです。共有リンクは一般に、1つの接続情報を表します。リンクに長い文字列が含まれているかだけで判断せず、それぞれに対応する追加方法を使ってください。URLにアクセス用の認証情報が含まれる場合があるため、アカウント情報と同様に管理しましょう。詳しくはサブスクリプション用語の解説をご覧ください。
システムプロキシとルーティング:システムプロキシは、対応アプリの通信をどこに渡すかを決めます。ルーティングルールは、コアが受け取った通信の出口を選びます。直結ルールを選んでも、アプリからのリクエストがまずローカル待ち受けに送られることがあります。また、システムプロキシを有効にしても、すべてのアプリが設定に従うとは限りません。詳しくはルーティングとアウトバウンドタグをご覧ください。
トラフィックのスニッフィングとDNS:スニッフィングでは、一部の通信からドメイン情報を識別してルーティングの照合に利用できます。ただし、毎回ドメインを取得できるとは限らず、DNSの設計を置き換えるものでもありません。ドメインルールに一致しない場合は、インバウンド設定、名前解決の方式、ルールの順序を合わせて確認しましょう。スニッフィングの切り替えだけを繰り返しても解決しないことがあります。各項目の場所はインバウンド設定の解説をご覧ください。
TUNと接続品質:TUNはアプリの通信をクライアントに取り込む方法を変える機能であり、サーバーのタイムアウトやプロトコル設定の誤りを自動で解消するものではありません。通常のプロキシでも接続できない場合は、まず基本の接続を解決してから仮想ネットワークアダプターを有効にしてください。複雑なネットワーク環境では、ほかのVPNソフトや仮想ネットワークアダプターがルーティングに与える影響にも注意が必要です。詳しくはTUNモード用語の解説をご覧ください。