VMessとVLESSはプロキシプロトコルであり、クライアント名ではありません。まずは1分で違いを確認し、必要に応じて設定を見直しましょう。VMessには独自の暗号化方式があり、認証には時刻が関係します。一方、一般的なVLESS設定ではTLSやREALITYが通信を保護します。サブスクリプションで配布された設定一式を保ち、プロトコルの選択欄だけをVMessからVLESSに変更しないでください。以下では暗号化、時刻、通信方式、インポート、トラブル対処を解説します。
1分で比較:プロトコル・通信方式・接続保護
ノード編集画面の「プロトコル」「通信方式」「TLS」は、それぞれ分けて確認します。VMessとVLESSはプロキシ通信の形式と認証を担い、TCPやWebSocketなどはデータを運ぶ通信方式です。TLSやREALITYは、さらに別の接続保護設定です。サブスクリプションに並ぶ長い設定値は、これらのレイヤーの組み合わせを表しています。
| 確認項目 | VMess | VLESS |
|---|---|---|
| 認証情報 | 通常はUUIDを使用。認証関連の項目も確認 | 通常はUUIDを使用。一部の組み合わせではflowなどの項目も一致させる必要あり |
| プロトコル層の暗号化 | プロトコル独自のデータ暗号化を使用可能。実際の方式はsecurity設定による | 一般的な設定ではencryption=noneを使用し、外側のレイヤーで通信を保護 |
| 時刻の要件 | 認証に有効な時間幅があり、クライアントとサーバーの時計を正確に合わせる必要あり | VMessのような時刻認証はないが、証明書などは時刻の影響を受けることがある |
| 一般的な組み合わせ | VMess + WebSocket + TLS | VLESS + WebSocket + TLS、または VLESS + TCP + REALITY |
| そのまま切り替え可能か | できません。サーバー側のプロトコル、認証情報、通信方式、安全設定を一致させる必要があります。 | |
判断のポイント:プロトコル名より設定一式を確認
インポート後に接続できない場合は、ポート、通信方式、TLS/REALITYの設定を提供元の案内と照らし合わせてください。プロトコル名が同じでも、一致する設定項目が1つあるだけで、設定全体が正しいとは限りません。
暗号化の違い:VLESSのnoneは平文通信を意味しない
ノード編集画面の「暗号化方式」では、まずどのレイヤーの項目かを確認してください。VMessのsecurityとVLESSのencryptionは、TLSのオン・オフを切り替える項目ではありません。一般的なVLESSリンクのencryption=noneは、VLESSのレイヤーではデータを暗号化しないという意味で、外側のTLSまで無効になるわけではありません。
- VMess:AES-GCMやChaCha20-Poly1305などの暗号化方式を使用できます。クライアントでは
autoと表示される場合があります。自動選択は、誤ったアドレス、ポート、通信方式を自動で補正する機能ではありません。 - VLESS + TLS:VLESSがプロキシプロトコルを処理し、TLSがクライアントからTLS終端までの通信を保護します。証明書とサーバー名を正しく検証してください。
- VLESS + REALITY:対応するコアが必要です。サーバー名、公鍵、ショートIDなどの項目を正しく設定してください。値はサービス提供元から取得し、推測で入力しないでください。
- 接続保護なしのVLESS:UUIDがあるだけで通信が暗号化されているとは限りません。UUIDは認証情報であり、TLSの代わりとなる暗号化設定ではありません。
ポートが443でも、TLSが有効とは限りません。ポートは接続先の番号にすぎず、実際の動作は双方の設定によって決まります。逆に、TLSは別のポートでも利用できるため、サブスクリプションのポートを一律に443へ変更しないでください。
時刻認証:VMessで接続できないときは時計を同期
Windows:「設定」→「時刻と言語」→「日付と時刻」→「今すぐ同期」。Android:「設定」→「システム」→「日付と時刻」→「日時を自動設定」をオンにします。Androidのメニュー名はメーカーによって異なるため、システム設定で「日付と時刻」を検索してください。端末の時刻を正確にしてから、もう一度接続します。
VMessの認証には時間幅が関係します。スリープ後の時計のずれ、手動での日付変更、サーバー側の時刻ずれなどがあると、認証に失敗することがあります。ログに「時刻エラー」と明記されるとは限りません。ノードが突然すべて使えなくなったときは、手間の少ない確認として時計を同期してみましょう。
- 日時の自動設定がオンになっていることを確認し、ネットワーク経由で一度同期してください。タイムゾーン表示を変えるだけでは、実際の時計のずれが直らない場合があります。
- 設定を同時に変更せず、元のノードに再接続してログを確認してください。UUID、通信方式、暗号化方式を一度に変更すると、どの操作で接続が回復したのか判断しにくくなります。
- 同じノードがほかの端末で使える場合は、まず端末の時刻、ネットワーク、クライアント設定を確認します。すべての端末で同時に接続できなくなった場合は、提供元にサーバーの稼働状況を問い合わせてください。
VLESSにはVMessのような時刻認証の依存はありませんが、システムの日付を無視してよいわけではありません。TLS証明書には有効期間があり、日付が誤っていると、証明書がまだ有効でない、または期限切れというエラーが出ることがあります。プロトコルを切り替えても、システム時刻のずれは直りません。
通信方式の組み合わせ:WebSocket・TLS・REALITYの見方
ノード編集画面の「通信方式」と、対応するホスト名、パス、サービス名を確認します。これらの値はサーバー側と一致している必要があります。VMessもVLESSも複数の通信方式と組み合わせられますが、利用できるかどうかはクライアントが実際に使用するコア、そのバージョン、サーバーの構成によります。クライアント名だけでは判断できません。
| サブスクリプションの組み合わせ | 重点的に確認する項目 | よくある誤変更 |
|---|---|---|
| VMess / VLESS + WebSocket + TLS | ポート、WebSocket path、Host、TLS serverName | HostとserverNameは必ず同じだと思い込み、無理に同じ値にする |
| VLESS + TCP + REALITY | サーバー名、公鍵、ショートID、提供元が指定するflow | 公鍵の入力漏れ、または別ノードのショートIDをコピー |
| gRPCを使う設定 | serviceName、TLS設定、コアの対応状況 | serviceNameをWebSocket pathとして入力 |
たとえば提供元がWebSocketパスに/proxyを指定している場合は、そのまま設定してください。これは項目の例であり、任意のサーバーで使える値ではありません。ドメイン名やパスは用途ごとに異なり、項目によっては大文字と小文字も区別されます。インポートできたのはリンクを解析できたというだけで、設定値がサーバー側で有効と確認されたわけではありません。
REALITYとVisionは別の設定です。REALITYは接続の安全設定で、Visionは通常xtls-rprx-visionのようなflow値で指定します。必要な組み合わせに限って設定してください。すべてのVLESSノードにVisionを追加したり、REALITYをWebSocketのパス形式と見なしたりしないでください。
サブスクリプションのインポート:設定を保ち、使用するコアを選ぶ
v2rayNではメイン画面の「サブスクリプショングループ」からグループ設定を開き、提供元のサブスクリプションURLを追加して更新します。単体の共有リンクは「サーバー」にあるクリップボードからのインポート機能を使えます。v2rayNGではメイン画面の「+」→「クリップボードからインポート」から単体の設定を追加し、サブスクリプションはサイドメニューの「サブスクリプショングループ設定」から追加します。バージョンによって表示名が多少異なる場合は、機能を目安にしてください。
インポート方法:同じ設定を端末ごとに確認
デスクトップ:v2rayN
- インポート後、ノード編集画面を開き、プロトコルと通信方式が正しく設定されているか確認します。
- REALITYを使う場合は、対応するXrayコアが実際に使用されていることを確認します。
- 接続後にシステムプロキシを設定し、ブラウザーからアクセスをテストします。
Android:v2rayNG
- 同じサブスクリプションをインポートし、ノードの設定項目がそろっているか確認します。
- 初回接続時はシステムのVPN接続を許可し、サービスが起動したことを確認します。
- アプリごとのプロキシ設定を使う場合は、テストに使うブラウザーが対象に含まれているか確認します。
同じサブスクリプションを複数の端末で使えますが、それぞれで更新が必要です。端末上の編集内容、ルーティングルール、システム権限はサブスクリプションと一緒に同期されません。
v2rayNGはXrayコアを使用し、v2flyNGはv2flyコアを使用します。名前が似ていても、機能が完全に同じとは限りません。特にREALITYや特定のflow項目を使う場合は、コアの対応状況を確認してください。「VLESSを認識する」ことは、「あらゆるVLESSの組み合わせに対応する」ことを意味しません。
サブスクリプションで配布された設定一式を保持
おすすめ提供元が明確に対応を案内しているクライアントとコアを使い、プロトコル、通信方式、安全設定、認証項目をそのまま保持します。まず接続できる状態を作り、その後でローカルのルーティングを調整してください。
おすすめのケース:サブスクリプションを安定してインポートし、日常的に接続したい
サーバー設定を手動で入力
UUID、ポート、通信方式、安全設定を一つずつ入力します。プロトコルの変更や新しい組み合わせのテストは、サーバーの実際の設定を把握している場合に限って行ってください。
おすすめのケース:自分のサーバーを管理している、または提供元の案内に沿って問題を調べている
よくある質問:プロトコルの切り替え、速度測定、接続確認
VMessノードをそのままVLESSに変更できますか?
クライアントの選択欄を変更するだけでは接続できません。提供元から別途VLESS設定を入手するか、自分で管理するサーバーに対応するインバウンドを設定し、それに合った設定をインポートしてください。アドレス、ポート、UUIDが同じに見えても、サーバー側のプロトコルが自動で切り替わることはありません。
VLESSは必ずVMessより速いですか?
一概には言えません。同じネットワーク、同じ時間帯、同じ接続先で実際のアクセスを比較し、継続的なダウンロード速度や接続の安定性も確認してください。回線の混雑、サーバー負荷、通信方式の組み合わせによって結果は変わります。異なるサーバーで一度測った遅延値だけでは、プロトコルの優劣は判断できません。
ノードに遅延が表示されるのに、Webページが開かないのはなぜですか?
まず、測定結果がTCP接続の可否なのか、実際のプロキシ通信なのかを確認してください。TCPポートに接続できても、認証が成功したとは限りません。デスクトップではシステムプロキシが有効か、AndroidではVPNサービスとアプリごとの対象範囲を確認し、認証、ハンドシェイク、DNSに関するエラーをログで調べます。
VMessのalterIdには何を設定すればよいですか?
現在のVMess AEAD設定では、通常alterId=0を使います。古いリンクに0以外の値が含まれていても、数字を何度も変えて解決しようとしないでください。提供元に現在のサーバー認証方式を確認し、それに合った設定を入手しましょう。古い解説にある数値を新しいサブスクリプションにそのまま適用することはできません。
最後に、「ノードが接続できること」と「アプリの通信がプロキシを通ること」を分けて確認してください。まずコアに設定エラーがないことを確認し、次に対象アプリの通信が実際にプロキシ経由になっているか確認します。プロトコルが担うのは接続の一部です。システムプロキシ、VPN権限、DNS、ルーティング設定も、それぞれ通信の経路を決めます。
- 接続できない:システム時刻 → アドレスとポート → 認証情報 → 通信方式と安全設定の順に確認します。
- 一部のサイトだけ開けない:ノードの設定は変えず、DNS、ルーティングの適用状況、接続先の状態を確認してください。すぐにプロトコルを変更する必要はありません。
- サポートに問い合わせる:クライアントとコアのバージョン、エラーの発生時刻、機密情報を伏せたログを用意してください。共有前にサブスクリプションURL、UUIDなどの認証情報を隠します。