VMess
VMessはProject Vのエコシステムに属するプロキシプロトコルです。ユーザー認証とデータ転送の仕組みを備え、設定にはユーザーIDや暗号化オプションが含まれることがあります。複数の通信方式と組み合わせられるため、プロトコル名だけでは接続に必要な設定を特定できません。クライアントとサーバーで互換性のある実装を使い、認証情報を一致させる必要があります。システム時刻のずれが認証に影響することもあります。
REFERENCE / TERMINOLOGY
プロトコル、コア、トラフィックの入口、JSON設定項目を設定階層ごとに確認できます。
同じ設定名でも、使用するコアや設定階層によって意味が異なる場合があります。このページでは概念と役割の範囲を解説します。具体的な値は、使用中のコアやクライアントの画面で確認してください。各用語カードには個別のアンカーがあり、URLをコピーして該当箇所を共有できます。
PROTOCOL / TRANSPORT
プロキシプロトコルは通信の取り決め、通信方式はデータの運び方、セキュリティ層は接続の保護を担います。それぞれ別の要素で、相互に置き換えることはできません。
VMessはProject Vのエコシステムに属するプロキシプロトコルです。ユーザー認証とデータ転送の仕組みを備え、設定にはユーザーIDや暗号化オプションが含まれることがあります。複数の通信方式と組み合わせられるため、プロトコル名だけでは接続に必要な設定を特定できません。クライアントとサーバーで互換性のある実装を使い、認証情報を一致させる必要があります。システム時刻のずれが認証に影響することもあります。
VLESSは軽量なプロキシプロトコルで、単体では通信内容を暗号化しません。通常はTLSやREALITYなどのセキュリティ層と組み合わせます。ノードのユーザーID、通信方式、セキュリティ設定、フロー制御オプションの有無をまとめて確認してください。VLESSとVMessはプロトコル名を書き換えるだけでは切り替えられず、サーバーも対応する組み合わせをサポートしている必要があります。
Trojanは通常、TLS接続内でプロキシ通信を行い、パスワードで認証します。サーバーアドレスとポートに加え、サーバー名と証明書の検証設定も確認してください。接続先アドレスは接続の確立に使われ、サーバー名はTLSハンドシェイクに使われます。役割は異なるため、証明書エラーが必ずしもパスワードの誤りを示すわけではありません。
REALITYはXrayエコシステムの通信セキュリティ機能で、VLESSと並ぶ独立したプロキシプロトコルではありません。サーバーから提供された公開鍵、short ID、サーバー名などを確認し、クライアントのコアが該当する設定に対応しているか確かめてください。通常のTLSとは設定項目の構成が異なるため、証明書設定をそのまま適用したり、プロトコル名だけから接続方式を判断したりすることはできません。
通信方式は、プロキシプロトコルでデータを運ぶ方法を指します。代表例はTCP、WebSocket、gRPCです。WebSocketではパスやリクエストのホスト名、gRPCではサービス名が必要な場合があり、サーバー側と設定を一致させます。通信方式の選択肢は多ければよいというものではなく、変更すれば任意のノードに接続できるわけでもありません。対応範囲はプロトコル、コア、サーバーの構成によって異なります。
KERNEL / ECOSYSTEM
クライアントは操作画面を提供し、コアは接続を実行します。名称が似ていても、利用できる機能が同じとは限りません。
Project Vは、モジュール型ネットワークプロキシツールを中心とするプロジェクトおよび技術エコシステムです。V2Rayはその中核を担います。一般に「V2Ray」は関連ツール全体を指す場合と、コアを指す場合があります。解説を読むときは、文脈に応じて意味を見分けてください。プロトコルの対応状況や設定項目の互換性を確認する際は、エコシステムの名称だけで判断せず、使用するコアを特定する必要があります。
V2FlyはV2Rayの開発を引き継ぐコミュニティプロジェクトです。コアがプロキシプロトコルの処理、ルーティング判定、DNSなどを担います。v2flyNGはAndroid向けGUIクライアントの選択肢の一つで、クライアント名とコア名は異なる階層に属します。設定例を使う際は形式とコアの世代を確認し、過去の項目が現在の環境でも使えると決めつけないようにしてください。
XrayはV2Rayの技術基盤から発展したコアプロジェクトで、独自のプロトコル、セキュリティ層、設定仕様の更新を続けています。v2rayNGはXrayコアを使用します。デスクトップクライアントで使われるコアは、実際の設定画面で確認してください。2つのコアが似たJSON形式を受け付ける場合でも、一部の項目、既定値、対応する組み合わせが異なることがあります。移行時は設定を項目ごとに確認してください。
v2rayN、v2rayNG、v2flyNGは、サブスクリプションや接続設定、実行オプションを管理するGUIを提供します。実際の通信は、設定を読み込んだコアが実行します。クライアントは画面上の選択内容から実行設定を生成することが多く、生成ファイルを直接編集しても次回起動時に上書きされる場合があります。問題を調べる際は、クライアントの設定とコアのログを両方記録し、画面からの保存に失敗したのか、コアの実行に失敗したのかを切り分けてください。
CLIENT / SUBSCRIPTION
サブスクリプションは接続設定を提供し、プロキシの入口はアプリのトラフィックをコアへ送る方法を決めます。遅延テストの結果は、特定の測定条件に基づくものです。
サブスクリプションは、接続設定をまとめて取得するためのデータまたはURLです。クライアントで更新すると、登録されているノード情報を再取得します。単一ノードの共有リンクとは異なり、任意のコアでそのまま実行できる完全なJSON設定でもありません。サブスクリプションURLにはアクセス用の情報が含まれる場合があるため、公開しないでください。更新後は、現在選択中のノードが引き続き一覧にあるか確認しましょう。
ノードは、クライアントに登録されたリモート接続設定一式を指す一般的な呼び方です。通常、アドレス、ポート、プロトコル、認証情報、通信方式やセキュリティ設定が含まれます。表示名は識別用のメモにすぎず、実際の接続先の場所や通信品質を証明するものではありません。同じサーバーに異なる設定のノードが複数ある場合もあります。接続が同一かどうかは、表示名ではなく設定内容で確認してください。
システムプロキシは、OSにローカルプロキシのアドレスを登録する設定です。主にこの設定を参照するアプリに適用されます。「すべての通信がプロキシを経由する」という意味でも、コアのグローバルルーティングと同じ意味でもありません。独自のネットワーク設定を使うアプリもあります。ローカルの待ち受けポートを変更した場合は、システムプロキシ側にも反映されているか確認してください。クライアント終了後も無効なアドレスが残ると、該当アプリが接続できなくなることがあります。
TUNモードは仮想ネットワークインターフェースでIPトラフィックを受け取り、システムプロキシ設定に従わないアプリの通信を取り込む用途で使われます。ただし、適用範囲はルーティング、権限、DNS設定、クライアントの実装によって異なり、すべての通信が必ずリモートプロキシを経由するわけではありません。有効にする前に、ほかの仮想ネットワークアダプターやネットワークツールが同時にルートを制御していないか確認してください。問題が起きた場合は、まずTUNを無効にして原因を切り分けます。
TCP遅延は通常、サーバーのポートとのTCP接続確立にかかる時間を測定するもので、プロキシ認証の成功を単独で証明する指標ではありません。プロキシ経由の接続遅延は、選択中のプロキシを使ってテスト先へアクセスして測定します。ハンドシェイク、名前解決、接続先、テストの実装によって結果は変わります。異なる種類の結果を単純に比較せず、ノードの選択には実際のアプリでの使用感、安定性、通信量の課金条件も考慮してください。
ROUTING / DNS
DNSは接続先のアドレスを解決し、ルールはトラフィックの出口を決めます。振り分け結果を確認するときは、ドメイン、IP、実際のリクエスト経路をあわせて確認してください。
ルーティングルールは、ドメイン、IP、ポート、インバウンドタグなどの条件でアウトバウンドを選択します。トラフィック振り分けとは、条件に応じて通信を異なる出口へ送ることです。一般的なルールは順番に照合され、最初に一致したルールで行き先が決まります。そのため、広い範囲を対象にするルールを先に置くと、後続の細かいルールが適用されない場合があります。システムプロキシは一部の通信をコアへ渡すかどうかを決めるだけで、コアに入った後の経路はルーティング設定で判定されます。
GeoIPはこの種の設定では、ルーティング判定に使うIPアドレスの分類データを指します。geoip:privateのような形式で該当する集合を参照できます。分類データはリアルタイムの位置情報ではなく、ドメインをIPアドレスに変換する機能もありません。対象IPが実際に取得され、該当する照合処理に進んだ場合にのみ、ルールが適用されることがあります。データの更新によって対象範囲も変わります。
GeoSiteは、ドメインルールをカテゴリ別にまとめたデータです。関連するドメイン群を一度に参照でき、個々のドメインを手作業で管理する手間を減らせます。カテゴリ名だけでは実際の収録内容は分かりません。同じサービスでも、ログイン、メディア、静的リソースのドメインが異なるカテゴリに含まれることがあります。振り分け漏れが起きたら、まず実際のリクエスト先ドメインを調べ、データに含まれているか、先行ルールに上書きされていないか確認してください。
FakeDNSはドメインに合成IPを割り当て、その対応関係を保存することで、トラフィックがコアに入った後にドメイン情報を復元しやすくする仕組みです。DNSの制御、トラフィックの取り込み、マッピングの復元を連携させる必要があり、DNSサーバーを切り替えるだけでは利用できません。アプリに古いマッピングがキャッシュされている場合や、トラフィックが所定の処理経路を通らない場合は接続に失敗することがあります。調査ではキャッシュとトラフィックの取り込み範囲も確認してください。
DNSリークとは、DNSクエリが想定した名前解決経路から外れる状態を指します。たとえば、指定したリゾルバーで処理する想定なのに、OSやブラウザーの別の仕組みからクエリが送信されるケースです。原因を調べるには、まず想定する経路を明確にし、ブラウザーの暗号化DNS、OSのリゾルバー、コアのDNS処理の役割を確認してください。検査ページに表示されたリゾルバー名は手がかりの一つであり、それだけで全トラフィックの出口を断定することはできません。
JSON / CONFIGURATION
項目名は、所属するオブジェクトとあわせて解釈する必要があります。設定の一部をコピーする前に、インバウンド、アウトバウンド、トップレベルのどこに属するか確認してください。
inboundsはトラフィックの入口を定義する配列です。各項目には待ち受けアドレス、ポート、プロトコル、タグを指定できます。アプリからのリクエストをコアが受け取る方法を記述するもので、リモートサーバーの一覧ではありません。ローカルで使う場合は待ち受けアドレスの範囲に注意してください。ループバックアドレスでの待ち受けと、すべてのネットワークインターフェースでの待ち受けでは、アクセス可能な範囲が異なります。接続問題の解決を目的に、公開範囲を安易に広げないでください。
outboundsはトラフィックの出口を定義する配列です。リモートプロキシへの転送、直接接続、ブロックなどを指定できます。ルーティングルールはアウトバウンドのタグを使って対象項目を参照するため、タグの表記を一致させる必要があります。一般的な設定では、どのルールにも一致しないトラフィックに最初のアウトバウンドが使われます。配列の順番を変えると既定の経路が変わる場合があるため、使用するコアの動作を確認してください。
sniffingは通常、インバウンドオブジェクトに置かれ、対応するプロトコルのハンドシェイクやリクエスト情報からドメインの手がかりを取得して、ルーティングや宛先の処理に利用します。汎用的な復号機能ではなく、すべての接続でドメインを特定できるわけでもありません。具体的な影響は対象の範囲や「ルーティングにのみ使用する」などのオプションによって異なります。スニッフィングを有効にすれば、すべてのドメインルールに一致するという意味ではありません。
domainStrategyの意味は、配置されているオブジェクトによって異なります。routing内では、ルーティング判定時にドメインをIPアドレスへ解決するかどうかを指定します。一般的な値にはAsIs、IPIfNonMatch、IPOnDemandがありますが、システムDNS全体の有効・無効を切り替える設定ではありません。同じ名前の項目でも、別のオブジェクトでは値の意味が異なる場合があるため、設定階層をまたいでそのままコピーしないでください。
allowInsecureは一部のTLS設定にあり、trueにすると証明書の検証が緩和されます。信頼チェーンやサーバー名の根本的な問題を解決するものではありません。証明書エラーが発生した場合は、まずシステム時刻、証明書チェーン、設定したサーバー名を確認してください。通常は証明書検証を有効にしたまま使用し、接続を改善するための汎用策として検証を無効にしないでください。
policyは、接続タイムアウト、ユーザーレベルごとのポリシー、一部の統計設定に使うオブジェクトです。ドメインやIPに基づいて出口を選択するroutingとは役割が異なります。ハンドシェイクのタイムアウトやアイドル接続の設定を変更する前に、どの段階で失敗しているか確認してください。タイムアウトを延ばすだけでは、認証エラー、ポートへの接続失敗、ルール参照の誤りは解決できません。