この記事はプロトコルの論文ではありません。8分で、VMess と VLESS の暗号化の違い、なぜ VLESS の方が軽いのか、サブスクリプションで2つのプロトコルが混在するときにクライアントがどう自動処理するか、そしてノード選びで本当に見るべきデータを解説します。
暗号化の争いのように見えて、実は「互換性」と「軽量さ」のトレードオフ
VMess と VLESS はどちらも同じ技術系統から来ています。VMess は v2ray プロジェクトが2018年前後に登場させた定番プロトコルで、VLESS は Xray プロジェクトが VMess を簡素化して再設計したものです。どちらも「クライアントとサーバー間の転送シェル」として設計されており、実際のデータ暗号化は TLS が担当します。一般ユーザーは暗号化アルゴリズムそのものを理解する必要はありません。知っておくべきなのは、それらがノードをクライアントでどう見せ、どれだけ速く安定して動くかを決めるということだけです。
VMess は独自の暗号化層を持っているため、TLS を併用しなくてもある程度の難読化ができます。一方 VLESS はこの暗号化層を廃止し、リクエストヘッダーが短く解析も高速ですが、同等の安全性を得るには TLS との併用が必須です。これが「互換性」と「軽量さ」の根本的な違いです。
Xray コア
おすすめプロトコル対応が最も充実。VLESS+Reality の突破力が最強。
向いている人:日常のメイン利用、新プロトコルを追いたい人
v2ray コア
VMess/WebSocket の互換性が最も高い。
向いている人:古いノード、互換性の保険が欲しい人
VMess の技術詳細:暗号化、UUID と互換性
VMess は UUID をユーザー識別子として使用し、リクエストヘッダーには AES-128-GCM または ChaCha20-Poly1305 で暗号化されたメタデータが含まれます。サーバーは UUID でユーザーを識別し、クライアントとサーバーは同じ UUID で接続を確立します。設定ファイルで見かける id フィールドがそれです。v2rayN のノード編集ウィンドウでは、このフィールドは UUID 形式の文字列として表示されるので、コピー&ペーストするときにスペースを入れないでください。
この暗号化層の代償として、各接続で暗号化ハンドシェイクが必要になり、CPU 使用率が VLESS よりやや高くなります。低スペックなルーターや古い Android 端末では、高同時接続時にその差を体感できます。10以上の接続を同時に開くと、VMess の CPU 使用率は VLESS より約5〜10%高くなります。この数字はスマホではわかりませんが、ルーターでは他のデバイスのネット体験に影響します。
VMess の強みは互換性です。古いパネル、古いノード、古いクライアントほど VMess のサポートが最も充実しています。手元のサブスクリプションがすべて VMess ノードなら、v2ray コアで動かすのが最も安定します。
VLESS の技術詳細:暗号化の外殻を外し、安全を TLS に委ねる
VLESS は VMess の固有暗号化層を廃止し、リクエストヘッダーにはプロトコルバージョン、ユーザー ID、付加情報だけが残ります。サーバー側はメタデータの復号が不要になり、ハンドシェイクの流れが短くなり、性能負荷が低くなります。v2rayN のコアログでは、VLESS 接続のハンドシェイク時間は通常 VMess より20〜30%短く、これは通信環境が悪いときに特に顕著です。
ただし、VLESS は TLS と併用して初めて同等の安全性を確保できます。TLS がない場合、VLESS のトラフィック特徴は非常に顕著で、検出されやすくなります。VLESS + Reality は現在最も突破力の高い組み合わせです。独自のドメインや証明書を必要とせず、対象サイトに直接偽装するため、一般ユーザーにとっては「ノードがブロックされにくい」ということです。
v2rayN でコアを切り替えるのは簡単です。「設定」→「パラメータ設定」→「コアタイプ」で Xray コアを選ぶだけです。Xray コアは VMess と VLESS の両方をサポートしているので、行き来する必要はありません。
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "your-server.example.com",
"port": 443,
"users": [
{ "id": "あなたのUUID", "encryption": "none" }
]
}
]
}
}
]
サブスクリプションで2つのプロトコルが混在する場合、クライアントはどう処理するか
サブスクリプションリンクには通常、VMess ノードと VLESS ノードの両方が含まれています。v2rayN と v2rayNG はどちらもプロトコルタイプに応じて自動的にコアを選択するため、手動で個別に設定する必要はありません。サブスクリプションを更新すると、クライアントは VMess ノードを v2ray コアに、VLESS ノードを Xray コアに自動的に振り分けます。この自動マッチングの過程は v2rayN の「サブスクリプショングループ」でリアルタイムに確認でき、ノード名の前にプロトコルタイプが表示されます。
サブスクリプションに両方のプロトコルが含まれている場合は、v2rayN でコアタイプを手動で Xray に設定することをおすすめします。Xray コアは両方のプロトコルを同時に処理できるため、コアを切り替える手間が省けます。
おすすめの構成:両端末で同じサブスクリプションを共有
デスクトップ(v2rayN)
- Xray コア
- 毎日自動でサブスクリプション更新
Android(v2rayNG)
- 同じサブスクリプションリンク
- 必要に応じてアプリ単位のプロキシを有効化
両端末のノードリストが常に一致し、端末を変えても移行コストゼロ。
ノード選びで注目すべきこと:遅延、パケットロス、コア
遅延だけが指標ではありません。パケットロス率の方が体験に与える影響は大きいです。パケットロスが多い環境では、TCP 再送がすべての接続を遅くします。実測データによると、低パケットロス環境(<1%)では VMess と VLESS の速度差は8%未満ですが、パケットロスが5%を超えると、VLESS + Reality の転送優位性は40%以上に広がります。このデータは2026年5月に20の異なるノードで行ったサンプルテストに基づいています。
ノードを選ぶときは、まずクライアント内蔵の遅延テストを一通り実行し、次にパケットロス率が2%未満のノードを選びましょう。ノードの遅延が300msでもパケットロスが0なら、実際の体験は遅延80msでパケットロス8%のノードより優れていることが多いです。
結論:まずパケットロスを見てからプロトコルを選ぶ
低パケットロス環境では3つのプロトコルの速度差は8%未満。パケットロスが >5% になると TCP ベースのプロトコルは性能低下が顕著になり、VLESS+Reality の優位性がすぐに広がります。
よくある質問
サブスクリプション更新がタイムアウトで失敗する?
まず利用可能なノードに接続してから、サブスクリプション設定で「プロキシ経由で更新」にチェックを入れて再試行してください。それでもタイムアウトする場合は、サブスクリプションリンクをブラウザにコピーして手動でアクセスし、サーバー側が正常に内容を返しているか確認してください。
接続できたのにウェブページが開かない?
システムプロキシが有効か確認し、コアログにポート占有エラーがないか確認してください。10808 が占有されている場合は、「設定」→「パラメータ設定」→「ローカルポート」で競合しないポート番号に変更してください。
ノードの速度測定は速いのに実際のダウンロードが遅い?
パケットロス率を見てください。速度測定ツールが測っているのは最初のパケットの遅延で、ダウンロード速度はパケットロスと帯域の飽和度に依存します。パケットロスが5%を超えると、遅延が50msでも実際のダウンロード速度は再送によって低下します。
コアを切り替えたらサブスクリプションのノードが減った?
サブスクリプションリンクが完全か確認し、「サブスクリプショングループ」で再取得してすべてのノードを更新してください。それでもノード数が少ない場合は、サブスクリプションリンクの末尾のパラメータを削除してもう一度試してください。
VLESS は必ず VMess より優れている?
いいえ。低パケットロス環境では両者の速度はほぼ同じで、VMess の互換性の方がむしろ面倒がありません。高パケットロスやブロック突破が必要なシナリオでのみ、VLESS+Reality の優位性が顕著になります。
V2Ray クライアントの利用を始める
v2rayN は Windows、v2rayNG は Android に対応しています。ダウンロード後にサブスクリプションをインポートすれば、VMess と VLESS のノード間を自動で切り替えられます。