VMessとVLESSは異なるプロキシプロトコルで、Typeを変更しても相互変換はできません。サービスやサブスクリプションをすでに利用しているShadowrocketユーザー向けに、プロトコル、認証情報、トランスポート、TLSの4つの観点から設定項目を解説し、インポートとトラブル対処の手順を紹介します。どの項目を正確に照合すべきか、プロトコル名だけで判断できない設定は何かを確認できます。
1. VMessとVLESSの大きな違いはプロトコル層の暗号化
まず結論です。VMessにはプロトコル独自の認証・暗号化機能があります。一方、VLESSは認証と通信の保護を分けており、プロトコル自体はペイロードを暗号化しません。VLESS接続の安全性は、実際に使用するTLSなどの保護方式を踏まえて判断してください。「VLESS自体は暗号化しない」からといって、すべてのVLESS接続が平文で通信するわけではありません。
反対に、VMessにプロトコル層の暗号化があるからといって、TLSを任意に無効化してよいわけではありません。サーバーがTLSを要求する場合、クライアント側も指定に従ってTLS接続を確立する必要があります。2つの設定は役割が異なるため、サーバー設定に合わせてください。
| 比較項目 | VMess | VLESS |
|---|---|---|
| プロトコル層の保護 | プロトコル独自の認証・暗号化機能がある | 認証を行うが、ペイロードの暗号化は行わない |
| 認証情報 | 通常はUUIDを使用し、サーバー側の設定と一致させる | 通常はUUIDを使用する。形式が同じでも、異なるプロトコル間で使い回せるとは限らない |
| トランスポートの組み合わせ | サーバーの指定に従い、TCPやWebSocketなどを組み合わせる | 実際のトランスポートと関連項目の確認が必要 |
| TLS設定 | 有効化するか、どの名前を検証するかはサーバー設定による | プロトコル名だけからTLSやほかのセキュリティ設定を推測できない |
| そのまま相互に切り替えられるか | できません。Typeを切り替える場合は、そのプロトコルに対応したサーバー設定一式が必要です | |
プロトコル名は速度の目安ではありません。遅延、帯域幅、回線の混雑、サーバー負荷、トランスポートの組み合わせなどが通信結果に影響します。名前が似ている2つのノードでも、接続先のサーバーがまったく異なる場合があり、プロトコル名だけで一方が速いとは判断できません。
2. Add ServerでAddress・Port・UUIDを確認する
Homeで確認する項目を見つけ、編集画面を開きます。手動で追加する場合は、Homeの追加メニューからAdd Serverを開き、該当するTypeを選択します。項目名や表示される選択肢はTypeによって変わるため、現在の画面とサービス提供元から受け取った設定一式を照合してください。
- Type:VMessとVLESSのどちらかを確認します。ノード名から種類を推測したり、Typeの変更をアップグレードと考えたりしないでください。
- Address:実際の接続先となるドメイン名またはIPアドレスを入力します。TLSの検証名とは異なる場合があります。また、共有リンクのプロトコル接頭辞は入力しないでください。
- Port:サーバーの待ち受けポートを入力します。たとえばサービス提供元の指定が
443なら443を入力します。TLSを有効にするからといって、ポートを独自に変更しないでください。 - UUID:サービス提供元から渡された認証情報を省略せずに入力し、コピー時に空白や改行が混入していないか確認します。変更・短縮・再生成すると、通常は元のサーバーで認証できなくなります。
- 追加項目:VMessの暗号化オプションやVLESSのFlowなどが画面に表示される場合は、サーバーの指定に従って設定します。別の項目の値を流用しないでください。
UUIDは、一般にハイフン付きの16進数形式で表記されます。以下は形式の例であり、使用可能な認証情報でも、特定のサービスに対応する値でもありません。UUIDが同じでも、ポートやトランスポート、セキュリティ設定が異なる場合があります。この項目だけで判断しないでください。
00000000-0000-0000-0000-000000000000
3. プロトコル・トランスポート・TLSを区別する
1つの接続でVLESS、WebSocket、TLSを併用できます。VLESSはプロキシプロトコル、WebSocketはトランスポート方式、TLSは接続の暗号化と相手の認証を担います。それぞれ役割が異なり、相互に置き換えることはできません。WebSocketをTCPに変更したり、TLSを無効にしたりすると、クライアントとサーバーで同じ接続手順を完了できなくなる場合があります。
TLSを有効にする場合は、SNIまたは画面上のサーバー名にあたる項目も確認します。Addressが接続先のIPアドレスで、証明書がドメイン名に対応している場合、IPアドレスをそのまま名前の項目に入力してはいけません。WebSocketを使う場合、HostとPathも別の設定項目です。Hostはリクエストのルーティングに使われ、Pathはリクエスト先のパスを指定します。ドメイン名やアドレスに見えるからといって、SNIと混同しないでください。
- TLS:サーバーが指定する有効・無効の設定と検証項目をそのまま反映します。証明書エラーが出た場合は、名前、証明書の有効性、端末の日付と時刻を確認してください。
- SNI:サービス提供元が指定する名前を入力します。ノード名から推測して追記したり、閲覧先サイトのドメイン名に置き換えたりしないでください。
- Host:トランスポート設定で必要な場合は、指定された値をそのまま使用します。SNIと同じ値になる場合もありますが、役割は異なります。
- Path:先頭の
/、その後の文字列、クエリ部分がある場合はその内容も含め、指定された値をそのまま使用します。
まとめ:設定一式をそろえてからプロトコルを確認
変更後にハンドシェイクエラーが発生した場合は、元の項目を再インポートし、TLS、SNI、Host、Pathを順に照合します。パラメーターの確認を省いて証明書検証を無効にしないでください。
4. 2種類のプロトコルがあるサブスクリプションは、そのままインポート
サブスクリプションリンクは利用中のサービス提供元から取得します。インポートすると、Shadowrocketがサブスクリプションの内容に応じて項目を作成します。VMessとVLESSが同じサブスクリプションに含まれていても、どちらか一方に統一する必要はありません。ノード名は識別用の表示名にすぎないため、実際のプロトコルは編集画面のTypeで確認してください。
- Homeの追加メニューから、画面の案内に従ってSubscribeを選び、サブスクリプションリンク全体を貼り付けて保存します。個別ノードの共有情報をサブスクリプションURLと取り違えないようにしてください。
- サブスクリプションを更新し、一覧に項目が表示されることを確認します。次にVMessとVLESSの項目を1つずつ開き、Typeと主要な設定値を照合してください。
- まずはインポート時の設定でテストします。変更が必要な場合は、元の値を記録するか、復元できるコピーを残し、一度に複数の項目を変更しないでください。
- 次回以降の更新で、サブスクリプション管理下の項目が上書きされる場合があります。長期的に設定を変更する必要がある場合は、更新結果を繰り返し上書きするのではなく、サービス提供元に元の設定内容を確認してください。
手動入力は、設定一式がそろっていて各項目を確認したい場合に適しています。AddressとUUIDしかなく、トランスポートやTLSの設定が不明な場合は、先に必要な情報を確認してください。「VLESSだから」という理由で特定のセキュリティ構成を推測したり、VMessの暗号化オプションを任意に選んだりしないでください。
5. Global Routingを確認してから、1項目ずつ原因を調べる
ノードの設定とルーティングモードは別のものです。項目が正しくても、通信がそのノードを経由していなければ、Webページの表示結果からノードの接続可否は判断できません。HomeのGlobal Routingは通信の処理方法を決め、Configページの設定ファイルはルールなどを管理します。
Config:現在の設定に従って処理
おすすめ日常利用では、確認済みの設定を使い、ルールとポリシーに従って接続方法を選択します。ルールに一致しないリクエストの処理は、最終ルールと現在の設定によって異なり、常に直接接続になるわけではありません。
おすすめの用途:設定を確認した後の日常的なルールベースの振り分け
Proxy:ルールの影響を切り分ける
Shadowrocketが処理する接続に現在のプロキシポリシーを適用します。通常のルールによる振り分けの影響を切り分けるのに便利ですが、ポリシーでテスト対象のノードが実際に選択されていることを確認してください。
おすすめの用途:VMessまたはVLESSの項目を一時的にテスト
Direct:直接接続の状態を確認
直接接続を使用するモードです。プロキシサーバーの接続可否を確認する用途には使えません。DirectでWebページが開いても、そのときの直接接続に成功したことしか分かりません。
おすすめの用途:ローカルネットワークと直接接続の状態を比較
Sceneを使用している場合は、そのSceneで実際に適用されるルーティングとポリシーを確認してください。Sceneは別のノードプロトコルではありません。Config内のDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALはリクエストの行き先に影響しますが、VMessをVLESSに変換したり、UUIDの誤りを修正したりするものではありません。
- まず端末のネットワークが利用可能か確認し、Homeでテスト対象の項目を選択します。ポリシーグループを使う場合は、グループ内で実際に選択されている項目も確認してください。
- 現在のGlobal Routingを記録し、一時的にProxyを使って同じ接続先を試します。接続タイムアウト、TLSエラー、接続後もアクセスできない状態のどれかを確認してください。
- 変更する項目は一度に1つだけにします。まずAddressとPort、次にUUID、最後にトランスポート、TLS、名前に関する項目を確認して再試行します。
- 切断後の自動再接続に関係する場合は、Settings → On Demandで関連条件を確認し、オンデマンド接続の動作をプロトコル切り替えの問題と取り違えないようにしてください。
- 確認後は元のルーティングモードとオンデマンド設定に戻し、問題を再現できる記録を残してください。
6. よくある質問:UUIDの一致、TLSエラー、切り替え時の失敗
2つのノードでUUIDが同じなら、VMessをVLESSに変更できますか?
UUIDが同じというだけでは判断できません。まずHomeで元の項目を開いてTypeを確認し、サービス提供元から受け取った対応する項目と照合してください。認証情報の文字列が同じでも、サーバー側のプロトコル、ポート、トランスポート、セキュリティ設定がまったく異なる場合があります。該当するTypeの設定一式をインポートしてください。
VLESSはペイロードを暗号化しないなら、手動でTLSを有効にすべきですか?
まずサーバーが使用するセキュリティ構成全体を確認し、指定された設定に合わせてください。VLESSという名前だけでTLSの有効・無効を決めることはできません。TLSが明示的に指定されている場合は、TLS、SNI、証明書検証をまとめて確認し、スイッチを1つ有効にして確認を終わらせないでください。
VMessはタイムアウトするのにVLESSは使える場合、VMessプロトコルに問題がありますか?
ネットワークとテスト先を固定し、両方の接続先のAddress、Port、ポリシー選択を確認してください。VMessでは端末の日付と時刻も確認します。接続先のサーバーが異なる場合、1回の成功やタイムアウトだけでプロトコルの問題とは結論づけられません。
ノードの遅延が表示されるのに、Webページが開かないのはなぜですか?
遅延が測定できても、通信経路全体の接続に成功したとは限りません。まずGlobal Routingと実際に適用されているプロキシポリシーを確認し、同じ接続先を再試行して、DNS、TLS、認証、接続先サイトのどこで問題が起きているかを切り分けます。状況を伝える際はエラーメッセージを記録し、「遅延はあるが使えない」だけで済ませないでください。
2種類のノードが正しく設定されているかどうかは、名前の新旧や項目数ではなく、設定一式がサーバー側の情報と一致するかで判断します。サブスクリプションからインポートした内容を残し、認証情報、トランスポート、TLSを順に確認すると、Typeを何度も切り替えるより問題を特定しやすくなります。