VMessにはプロトコル層での認証とデータ暗号化の仕組みがあります。一方、一般的なVLESS構成ではTLSやREALITYが接続を保護し、プロトコル自体はよりシンプルです。まずはサブスクリプションの設定をそのままインポートし、VMessのノードをVLESSに書き換えないでください。ここでは暗号化の範囲、時刻の要件、速度差、v2rayNで確認する項目を順に解説します。初めてサブスクリプションをインポートするときや、接続できないときの確認に役立ちます。
1分で比較:違いはどの層にある?
どちらもプロキシプロトコルであり、クライアントの名前ではありません。v2rayNはノードやサブスクリプション、プロキシ設定を管理するデスクトップクライアントで、実際の接続は選択したコアが処理します。プロトコルはクライアントとサーバー間の認証、データのカプセル化や転送方法を定めます。つまり、v2rayNをインストールしただけで、サーバーがVMessとVLESSの両方に対応するわけではありません。
| 比較項目 | VMess | VLESS |
|---|---|---|
| 認証情報 | 通常はUUIDなどのパラメーターでユーザーを識別 | 通常はUUIDなどのパラメーターでユーザーを識別 |
| 一般的な暗号化方式 | プロトコル層でデータを暗号化でき、TLSとの併用も可能 | 一般的なencryption=none構成では、TLSまたはREALITYで接続を保護 |
| 時刻の要件 | 認証に時刻情報を使用するため、大きなずれがあると失敗することがある | 従来の認証ではVMessのような時間枠を使わないが、外側のセキュリティ機構で時刻が必要な場合がある |
| よく使われる追加項目 | 暗号化方式、alterId、トランスポート、TLSの設定 | encryption、flow、トランスポート、TLSまたはREALITYの設定 |
| 相互に置き換えられる? | 不可。サーバー側に対応するプロトコルの接続設定と、必要なパラメーターがすべて必要 | |
プロトコル、トランスポート、セキュリティ層は分けて考えましょう。たとえば「VMess + WebSocket + TLS」は、プロキシプロトコル、通信の運び方、接続の保護方法をそれぞれ示します。「VLESS + TCP + REALITY」も、複数の設定を組み合わせた接続構成です。VLESSという表記だけでは、使用ポートや公開鍵の要否、特定のflowへの対応状況までは判断できません。
VLESSのnoneは通信が平文という意味?
encryption=noneでも、通信経路全体が平文になるわけではありません。一般的なVLESS構成では、このプロトコル項目で追加の暗号化を有効にしていないことを示します。TLSやREALITYを使う場合、クライアントからプロキシサーバーまでの通信はそれぞれの仕組みで保護されます。逆に、こうした保護も信頼できる外部のセキュアな経路もない場合は、VLESSという名前だけで安全性を判断できません。
- VMessの暗号化方式:一般的な値は
auto、aes-128-gcm、chacha20-poly1305です。外側のTLS設定とは別の項目なので、VLESSの設定欄にそのまま転記しないでください。 - VLESSのencryption:一般的な構成では
noneを使用します。新しいコアには別の拡張オプションがある場合もありますが、利用可否はサーバー設定と実際のコアの対応状況で決まります。自己判断で切り替えないでください。 - TLSのSNI:接続先サーバー名を指定する項目です。通常はサーバーから提供された設定や証明書の検証要件に合わせます。ノード一覧に表示される名前とは限りません。
- REALITYのパラメーター:一般的な構成では、サーバーから提供された公開鍵または検証用項目、shortId、サーバー名が必要です。ここで使うのは公開される検証情報であり、クライアントにサーバーの秘密鍵を入力してはいけません。
HTTPSサイトの暗号化とプロキシ接続の暗号化も別のものです。HTTPSでアクセスすると、ブラウザーとWebサイト間でもサイト独自のTLSが使われます。プロキシのセキュリティ層が保護するのは、クライアントからプロキシサーバーまでの区間です。VMessにTLSを組み合わせると、この区間がさらに暗号化される場合がありますが、だからといって常にTLSを無効にすべきとは限りません。
VMessではなぜシステム時刻の確認が重要?
VMessの認証には時刻に関する情報が含まれます。クライアントとサーバーの時計が大きくずれていると、設定が正しくても認証に失敗することがあります。「タイムゾーンの表示が違う」ことと「時刻そのものが間違っている」ことは区別しましょう。2台の端末で現地時刻の表示が異なっていても、同じ瞬間を示していれば、通常は認証のずれにつながりません。
- Windowsでは時刻を同期:「設定」→「時刻と言語」→「日付と時刻」を開き、「時刻を自動的に設定する」を有効にしてから「今すぐ同期」を選びます。同期に失敗する場合は、端末のネットワーク接続や時刻サービスを確認してください。
- Androidではネットワーク時刻を有効化:通常は「設定」→「システム」→「日付と時刻」で自動設定を有効にします。項目名や場所は端末によって多少異なります。
- サーバーの管理権限がある場合のみ確認:Linuxでは
timedatectl statusで時刻同期の状態を確認できます。クライアントの時刻が正しくても、サーバー側も正しいとは限りません。 - 接続をやり直す:時刻を同期したら現在の接続を再起動し、同期後に新しく出力されたログを確認します。同期前に残ったエラー記録だけで判断しないでください。
VLESSでも端末の時刻を無視してよいわけではありません。従来のVLESS認証はVMessのような時間枠を使いませんが、TLS証明書の有効期限確認、REALITY関連の検証、一部の新しい拡張機能では時刻が影響する場合があります。トラブルシューティングでは、まず時刻を正しくするのが簡単で、ノード設定を壊す心配もない方法です。
VLESSは必ずVMessより速い?
必ずしもそうとは限りません。プロトコルの処理がシンプルでも、性能への影響は一部にとどまります。同じ回線とセキュリティ設定なら、暗号化処理の重複を減らすことで処理負荷が下がる場合があります。ただし実際のダウンロード速度は、帯域幅、パケットロス、往復遅延、サーバー負荷、トランスポート方式、端末の暗号化性能にも左右されます。出口の異なる2つのノードを比べても、プロトコルの優劣を証明することにはなりません。
動作確認済みのサブスクリプション設定を維持する
おすすめ現在のVMessまたはVLESSノードで日常の作業に問題がないなら、まずは設定をそのまま使いましょう。選ぶ基準はプロトコル名ではなく、実際の接続結果です。
対象:一般ユーザー、サーバーを管理する権限のないサブスクリプション利用者。
条件をそろえてVLESS構成を比較する
サーバーが両方の接続方式を提供している場合に限り、出口、テスト対象、テスト時間を固定して比較しましょう。使える設定が1組しかない場合、クライアント側だけでプロトコルをアップグレードすることはできません。
対象:サーバーを自分で管理し、性能のボトルネックを特定したいユーザー。
テストでは各接続方式で同じ作業を3回ずつ行い、初回接続の成否、同じファイルのダウンロード時間、ログのエラーを記録して中央値を比べます。これはテスト方法の例であり、本サイトによる実測結果ではありません。遅延テストに応答があっても、Webページの表示、名前解決、大容量ファイルの転送まで正常とは限りません。
判断のポイント:回線の違いを除いてからプロトコルの処理負荷を比較
2つのノードでサーバーや出口が異なる場合は、まず「ノードごとに挙動が違う」と記録し、encryptionやflowを変更しないでください。プロトコルの変更に価値があるか判断できるのは、条件をそろえて比較した場合だけです。
v2rayNで確認すべき設定項目は?
まずサブスクリプション全体または共有リンクをインポートし、その後ノードの編集画面で設定を確認します。スクリーンショットからパラメーターを推測して入力しないでください。v2rayNでは通常、「サブスクリプショングループ」→「サブスクリプショングループの設定」で登録し、「サブスクリプショングループ」メニューから更新します。ノードを選択して右クリックし、「サーバーを編集」を選びます。画面のバージョンによってメニュー名が多少異なる場合があるため、実際の表示に従ってください。
| 項目 | 確認する内容 | よくある間違い |
|---|---|---|
| アドレスとポート | サーバー側の接続設定と完全に一致している | TLSを見てポートを443に変更する。443はよく使われますが、必須ではありません |
| ユーザーID / UUID | すべてインポートし、文字を追加・削除しない | サブスクリプションのアカウントパスワードをUUID欄に入力する |
| VMess alterId | 最新のAEAD構成では通常0。提供元の設定と照合する | 古い解説にある0以外の値をそのまま使う |
| VLESS encryption | サーバーとコアの対応状況に合わせる。一般的な値はnone | VMessのautoやAESの値に変更する |
| VLESS flow | サーバー側で指定されている場合のみ設定する。例:xtls-rprx-vision | すべてのVLESSノードにVisionを設定する |
| トランスポートとパス | TCPやWebSocketなどの方式を確認する。WebSocketではpathとHostも確認 | WebSocketのHostとTLSのSNIを同じ項目だと思い込む |
| TLS / REALITY | セキュリティ方式、サーバー名、必要な検証パラメーターを確認する | セキュリティ方式だけ変更し、ほかの必須項目を見落とす |
flow=xtls-rprx-visionは汎用の高速化ボタンではありません。サーバー側とクライアント側のコアが対応する組み合わせをサポートしている必要があり、任意のWebSocketノードで使えるわけでもありません。「flowがサポートされていない」といったエラーが出たら、元のサブスクリプションとコアの対応状況を確認し、値をむやみに試さないでください。
ノードの接続先ポートと、ローカルの待ち受けポートも別です。たとえばサーバー側の接続先が443で、ローカルプロキシの待ち受けが127.0.0.1:10808という構成は可能です。10808はあくまで例です。ブラウザーやターミナルには、クライアントに表示されている実際のローカルポートを設定してください。サーバー側のポートをローカルプロキシのポートとして使うことはできません。
デスクトップとAndroidで同じサブスクリプションを使える?
共用は可能ですが、同じサブスクリプション内のすべてのノードが異なるコアで使えるとは限りません。v2rayNはデスクトップ向け、v2rayNGはAndroidでXrayコアを使用し、v2flyNGはAndroidでv2flyコアを使用します。プロトコル拡張、セキュリティ層、トランスポートへの対応はコアのバージョンによって異なります。特に、ある端末で使えるREALITYやVisionの設定が、すべての端末でも使えるとは限りません。
同期の考え方:同じ配布元を使い、接続は端末ごとに確認
デスクトップ:v2rayN
- サブスクリプショングループに、提供元の元のリンクを追加します。
- 使用中のコアが、ノードの設定一式に対応しているか確認します。
- ローカルの待ち受けポートとシステムプロキシの状態を確認してから、接続先のWebサイトにアクセスします。
Android:v2rayNGまたはv2flyNG
- サブスクリプション管理から同じ配布元を追加し、更新します。
- まずコアの対応状況を確認し、非対応のプロトコル拡張があれば対処します。
- 接続を開始し、必要なVPN権限を許可してから、個別にアクセスを確認します。
サブスクリプションで同期されるのはノード設定です。デスクトップのシステムプロキシ、Androidのアプリ別設定、各端末のコアの対応状況は同期されません。
サブスクリプションのURLは他人に知られないようにしてください。サポートを求める際は、エラーの種類、クライアントとコアのバージョン、トランスポート方式、個人情報を伏せたログを共有できます。サブスクリプションURL全体、UUID、認証情報を含むQRコードは公開しないでください。パラメーターを切り詰めたり伏せたりしたものは、そのままインポートできるノードとして使うのにも適しません。
インポート後に接続できない場合、まず何を確認する?
まず「サーバーに接続できない」のか、「接続できているのにアプリがプロキシを使わない」のかを切り分けます。前者ではアドレス、ポート、認証、トランスポートやセキュリティの設定を確認します。後者ではシステムプロキシ、アプリ独自のプロキシ設定、DNS、ルーティングを確認します。一度に変更するのは1項目だけにし、元のサブスクリプション設定を残すと、どの操作が有効だったか判断しやすくなります。
昨日まで使えたVMessで、今日は認証に失敗し続ける?
システムの日付と時刻の設定を開いて同期し、サブスクリプションを更新してから再接続します。それでも失敗する場合は、UUID、alterId、アカウントの状態を確認してください。「認証失敗」という表示だけでノードが無効になったと決めつけないでください。
VMessをVLESSに変更したら接続できなくなった?
元のノードに戻し、提供元から取得した完全な共有リンクを再インポートしてください。2つのプロトコルではハンドシェイクとパラメーターが異なります。サーバー側にVLESSの接続設定が別途用意されている場合のみ、そのアドレス、ポート、セキュリティ設定を使って接続できます。
VLESSがnoneなら、手動でAESを選ぶ必要がある?
必要ありません。まずサブスクリプションどおりにTLSまたはREALITYが有効か確認し、サーバーから指定されたencryptionの値を維持してください。VMessの暗号化設定をVLESSに流用することはできません。暗号化されていない接続設定しか提供されていない場合は、提供元にセキュリティ方式を確認してください。
ノードのテストには応答があるのに、ブラウザーでWebページが開かない?
v2rayNのメイン画面またはタスクトレイのメニューで「システムプロキシ」を確認し、アプリで使っているローカルポートがクライアントの待ち受けポートと一致しているか確認します。次に、ログのDNS、接続、ルーティングに関するエラーを確認してください。システムプロキシは、すべてのターミナルアプリに自動で適用されるわけではありません。
同じサブスクリプションなのに、別の端末ではノードがいくつか表示されない?
まず両方の端末で更新が完了しているか確認し、クライアントとコアのバージョンを比較します。インポートログに非対応のプロトコルや項目が記録されていないかも確認してください。ノードのインポート失敗と接続タイムアウトを混同せず、無理にインポートするためにセキュリティ設定を削除しないでください。
選ぶときは名前だけでなく、接続設定全体を確認しましょう。安定して使えているVMessノードはそのまま利用し、VLESSの設定を受け取った場合は、外側のセキュリティとコアの対応状況を確認します。クライアントの基本設定も整理したい場合はクイックスタートガイドをご覧ください。ルーティングやDNSをさらに確認する場合は応用設定をご覧ください。