2026年9月3日 · プロトコル解説 · 約10分

REALITYとXTLS Visionの仕組みを解説|自己署名証明書なしのハンドシェイクと二重暗号化の軽減

REALITYが実在サイトを利用するハンドシェイクの仕組みと、VisionがTLS内の二重暗号化を抑える方法を解説。速度や安定性への影響も紹介します。

この記事のポイント

REALITYは主にプロキシ接続のハンドシェイクと認証を担い、XTLS Visionはトンネル内のデータを識別して転送を最適化します。併用できますが、同じ機能ではありません。VLESS、TLS、トランスポート層の関係を整理し、自己署名証明書が不要となる範囲、二重暗号化を軽減できる条件、v2rayNやv2rayNGで確認すべき項目を解説します。サブスクリプションを追加済みで、接続のトラブルシューティングや設定の比較をしたい方向けです。

プロトコルの階層:VLESS、REALITY、Vision

まず結論です。一般的な「VLESS + TCP + REALITY + Vision」は複数の階層を組み合わせた構成で、4つの名前は相互に置き換えられるプロトコルではありません。VLESSはプロキシ要求の形式とユーザー認証情報を扱い、TCPは接続を運びます。REALITYは認証機能を備えたセキュアな接続を確立し、Visionは特定のトランスポートとの組み合わせで使われるXrayのフロー制御モードです。

VLESS自体はペイロードを暗号化しません。そのため、クライアントのVLESS暗号化欄がnoneでも、通信が平文で送られているとは限りません。外側でREALITYまたはTLSが有効か、アプリ自体がHTTPSを使っているかも確認してください。VMessはプロトコルの仕組みが異なるため、VLESSの項目をそのままVMessの設定に移すことはできません。

名称・項目役割確認するポイント
VLESSプロキシ先とユーザー情報を指定する。ユーザーIDがサーバー側と一致していること。
TCP信頼性の高い、順序保証されたバイトストリームを提供する。アドレス、ポート、トランスポート方式が一致していること。
REALITYセキュアなハンドシェイクと接続先の認証を行う。サーバーの公開鍵、serverName、shortId。
xtls-rprx-vision内側の通信を識別し、条件に合うデータ転送を最適化する。両端のフロー制御とトランスポートの組み合わせが適合していること。

REALITYのハンドシェイクと自己署名証明書が不要な理由

「自己署名証明書が不要」とは、プロキシサーバーが通常、自身のプロキシ用ドメインに対して従来のTLS運用のように証明書を取得・更新したり、ユーザーに自己署名証明書を手動で信頼させたりする必要がないという意味です。認証が省略されるわけでも、証明書関連の検証を無効にしてよいという意味でもありません。REALITY独自の認証方式を使用するため、クライアントには正しいサーバー公開鍵などのパラメーターが必要です。

サーバー側では、ハンドシェイク先として実在するTLSサイトを設定します。REALITYはそのサイトに関連するハンドシェイク動作を利用し、外部からは通常のTLSサービスにできるだけ近く見えるようにします。正しい認証情報を持つクライアントはプロキシ処理に進みます。認証条件を満たさない接続は、実装や設定に応じて対象サイトへ転送されることがありますが、プロキシの利用権が与えられるわけではありません。「実在サイトのハンドシェイクを利用する」という説明は概要であり、サイトの秘密鍵を複製することではありません。

プロキシのポートに接続 ハンドシェイク情報を送信 接続元を認証 セキュアな通信路を確立 プロキシ要求を処理

混同しやすいアドレスが2つあります。クライアントが接続するのはプロキシサーバーのアドレスです。serverNameはハンドシェイクで使う名前で、サーバー側で許可された設定に合っている必要があります。よく知っているサイトのドメイン名に適当に変更しても、接続できるようにはなりません。また、実在の接続先サイトはプロキシサーバーの代わりではありません。認証後のプロキシ通信は通常、プロキシサーバーが目的のサービスへ接続するもので、そのサイトが汎用トラフィックの中継を担うわけではありません。

Visionのフロー制御と二重暗号化

HTTPSサイトを開くと、ブラウザーとサイトの間にはすでにTLS接続があります。この暗号化通信がさらにTLS系のプロキシトンネルに入ると、「暗号化されたデータを外側でもう一度暗号化する」構造になります。追加のレコード処理やバッファリング、暗号化・復号処理はCPU負荷を増やす可能性があり、外側から観測できる通信の特徴にも影響することがあります。

Visionはトンネル内のTLSハンドシェイクとデータの段階を識別し、初期段階ではパディングなどの処理を行います。条件を満たすTLS 1.3の内側通信では、直接コピーなどの最適化経路に切り替え、外側での重複処理を減らせます。すべての接続を平文にする機能でも、ブラウザーとサイトのHTTPSを復号する機能でもありません。アプリとサイト間のエンドツーエンドTLSはそのまま維持されます。

したがって、「Visionは二重暗号化を軽減する」と表現するのが正確で、「Visionは暗号化しない」ではありません。すべての接続やデータが同じ最適化経路を通るわけではありません。フロー制御の名称を正しく設定することは機能を有効にするための条件ですが、帯域幅の向上を保証するものではありません。

主要な数値とクライアント設定項目

以下の数値はプロトコルや設定を理解するためのもので、速度測定の結果ではありません。443はよく使われるポートですが、REALITYで必須ではありません。サーバーが別のポートで待ち受けている場合、クライアント側も同じポートに変更する必要があります。shortIdは16進数で指定し、カーネルの要件に合う長さで、サーバーが許可する値と一致していなければなりません。

TLS 1.3
Visionのダイレクトコピー最適化が機能する主な条件
443
一般的なサーバーポート。ノードの実際の値を指定
16
shortIdの最大文字数(16進数)

従来の項目を使うXray REALITY設定では、shortIdは最大8バイト、つまり16個の16進数文字で、文字数は偶数である必要があります。空欄を許可するかどうかはサーバーの設定次第です。画面上で空欄にできても、サブスクリプションに値がある場合は削除しないでください。クライアント画面の公開鍵欄は「Public key」など、カーネルの更新に伴って名称が変わる場合があります。サブスクリプションの形式と現在のカーネルのドキュメントを照らし合わせて確認してください。

VLESS + REALITY + Vision

トランスポート
TCP(一部の画面ではRAWと表示)
セキュリティ層
REALITY
Flow
xtls-rprx-vision
認証パラメーター
ユーザーID、公開鍵、shortId
ハンドシェイク名
サーバーの許可値と一致

これは一般的な組み合わせの説明であり、そのまま接続できるノード設定ではありません。

VLESS + TLS + Vision

トランスポート
TCP(一部の画面ではRAWと表示)
セキュリティ層
TLS
Flow
xtls-rprx-vision
証明書
有効な証明書と信頼チェーンが必要
ハンドシェイク名
証明書のドメイン名と一致

VisionはREALITYがなくても利用でき、従来のTLSとの組み合わせでも両端の対応が必要です。

v2rayNでは、まず該当の組み合わせに対応するXrayカーネルを使っているか確認してから、VLESSサーバーの該当項目を編集してください。v2rayNGもXrayカーネルを使用しますが、ノードの項目一式が正しく設定されている必要があります。v2flyNGはV2Flyカーネルを使用します。画面からVLESSをインポートできるからといって、XrayのREALITYとVisionにも対応しているとは限りません。クライアントのバージョン、カーネルの機能、サブスクリプションの解析対応は、それぞれ個別に確認が必要です。

速度・遅延・安定性の限界

REALITYの主な目的は地理的な距離を縮めることではなく、Visionもサーバーの帯域幅を増やすものではありません。ボトルネックが混雑、地域をまたぐ回線、サーバー側の上り帯域制限にある場合、暗号化処理を一部減らしても大きな変化はないかもしれません。CPUがほぼ飽和しており、通信の大半が条件を満たすHTTPSの長時間接続である場合に、Visionによるリソース削減の効果が現れやすくなります。

  1. 比較条件をそろえる:同じ端末、ネットワーク、テストファイルを使い、時間帯も近づけます。サーバーから比較可能な設定を2つ提供されている場合に限り、プロトコルを比較してください。
  2. 測定項目を分ける:接続遅延、Webページの最初の1バイトが届くまでの時間、継続ダウンロード時のスループットは別の指標です。測定方法を記録し、クライアントで一度表示された遅延を総合的な性能とみなさないでください。
  3. 端末の負荷を記録する:測定中のCPU使用率とクライアントログを確認し、端末の発熱による性能低下やバックグラウンドダウンロードの影響をプロトコルの差と取り違えないようにします。
  4. 複数回テストする:各設定で少なくとも3回測定し、失敗やタイムアウトも記録してください。最速の1回だけを選ぶと、誤った判断につながりやすくなります。

選び方:ボトルネックを確認してからフロー制御を比較

ログで接続済みと確認でき、CPUにも余裕があるなら、Visionの項目を繰り返し変更するのではなく、回線のパケットロス、サーバー負荷、上り帯域を先に比べてください。比較条件をそろえて安定した差が確認できた場合にのみ、その変化を設定の組み合わせによるものと判断できます。

安定性は、サーバーからハンドシェイク先への到達性、対象サイトのTLS動作、システム時刻、両端の実装の互換性にも左右されます。REALITYで接続の見え方を変えることはできますが、どのネットワーク環境でも常に利用できるとは限りません。接続先サイトの選定はサーバー運用側で行う作業です。サブスクリプション利用者がローカルのserverNameだけを変えて「回線を直す」ことは避けてください。

接続のトラブルシューティングとよくある質問

確認しやすい項目から順に調べます。アドレスとポート、ユーザーID、トランスポート方式、セキュリティ層、フロー制御、公開鍵、shortId、ハンドシェイク名を確認し、最後にルーティングとDNSを調べてください。一度に変更するのは1項目にとどめ、変更のたびに再接続します。比較できるよう、元のサブスクリプション設定を残しておきましょう。ログを共有する前に、サブスクリプションURL、ユーザーID、サーバーの機密情報を削除してください。

インポートできたのに接続がタイムアウトするのはなぜ?

インポート成功は、クライアントが設定テキストを読み取れたという意味にすぎません。まずサーバーアドレスと実際の待ち受けポートを確認してください。たとえばノードのポートが443なら、独自に8443へ変更しないでください。次にカーネルのログを確認します。接続タイムアウトでは、まずネットワークの到達性、ファイアウォール、サーバーの待ち受け状態を調べましょう。タイムアウトだけで公開鍵の誤りと判断することはできません。

ハンドシェイク失敗と表示された場合、検証をスキップすべき?

検証のスキップを万能な解決策として使わないでください。まず端末の時刻を合わせ、公開鍵、shortId、serverNameを順に確認します。サブスクリプションを利用している場合は、更新後に元のノードを選び直してテストしてください。REALITYの認証パラメーターが間違っている場合は、正しい値を入手する必要があります。検証を無効にしても、正しい認証関係には戻りません。

ノードには接続できるのに、一部のアプリが開かないのはなぜ?

まずアプリの通信が実際にクライアントを経由しているか確認してください。デスクトップアプリはシステムプロキシに従わない場合があるため、アプリ独自のプロキシ設定を確認するか、ガイドに沿ってTunモードを設定します。次に、ルーティングルールで接続先が直接接続に振り分けられていないか、DNSで正常に名前解決できるかを確認してください。最初にREALITYの公開鍵を変更する必要はありません。

Visionを有効にしても速くならない場合、ノードを変更すべき?

同じHTTPSファイルを使ってダウンロードを3回繰り返し、CPU使用率とエラーログを確認してください。スループットがほぼ同じで接続も安定しているなら、そのまま利用できます。上り帯域が継続的なボトルネックなら、フロー制御を変更しても改善しません。同じ時間帯に別の利用可能な回線を比較し、トランスポートの選択肢をむやみに増やさないようにしましょう。

既存のVMessノードをそのままREALITYに変更できる?

クライアントでプロトコル名を切り替えるだけでは変更できません。サーバー側で対応するVLESS、REALITY、フロー制御の設定と、関連する認証パラメーターを用意する必要があります。新しいノード一式またはサブスクリプションを入手してから、v2rayNまたはv2rayNGにインポートしてください。確認や切り戻しに備えて、古いノードも残しておきましょう。

設定の選び方と操作手順

利用可能なサブスクリプションがある場合は、まずサーバーから提供された組み合わせをそのまま使ってください。ノードが適しているかどうかは、名前にREALITYやVisionが含まれるかだけで判断できません。クライアントが必要な機能をすべてサポートしているか、接続が安定するか、普段使うアプリが正常に動くか、実際の回線が用途に合っているかを確認しましょう。

ルールの適用順を確認するには詳細設定をご覧ください。サブスクリプションの追加方法や接続の基本手順は、入門ガイドのサブスクリプション解説をご覧ください。再現性のある基準状態を作ってから項目を一つずつ調整すると、複数のプロトコル設定を一度に変更するより問題を特定しやすくなります。

クライアントをダウンロードプラットフォームとインストーラーを選択