VMessとVLESSの違い:Shadowrocketのサーバー追加前に知っておきたいポイント

VMessは暗号化機能とalterIdを備え、VLESSは内蔵暗号化を省いてTLSなどの通信レイヤーに依存します。Add Serverにはサービス提供元の設定をそのまま入力してください。

この記事の概要

自分で用意したサーバー設定またはサブスクリプションをShadowrocketに追加する方を対象に、認証、通信方式、TLSの違いを解説します。Add Serverの各項目を確認し、設定をそのまま入力すべき理由や、プロトコルを単純に切り替えられない理由、接続に失敗した際に確認するレイヤーを整理します。当サイトではサーバーやサブスクリプションサービスを提供・販売・推奨していません。

1. VMessとVLESS:認証・暗号化・通信方式を分けて理解する

VMessとVLESSはどちらもクライアントとサーバー間のプロキシ通信に使われますが、同じプロトコルの速度違いではありません。VMessはプロトコル層でデータを暗号化でき、一般的な設定にはalterIdが含まれる場合があります。VLESSはプロトコル自体を簡素化しており、同様の内蔵データ暗号化機能はありません。導入時には通常、TLSなどの安全な通信方式で接続を保護します。サーバー側の設定に合わせて、クライアントでも対応する種類を選択してください。

確認項目VMessVLESS
認証情報通常はUUIDを使用します。サーバー側の設定と一致させてください。通常はUUIDを使用します。形式が同じでも、異なるプロトコル間で使い回すことはできません。
プロトコル内蔵の暗号化プロトコル層での暗号化に対応しています。既存の設定に従って入力してください。内蔵のデータ暗号化機能はありません。外側の通信を保護する仕組みを確認してください。
alterId従来の互換性設定です。VMess AEADを使う設定では通常0です。対応するalterId項目はありません。VMessの設定からコピーしないでください。
通信方式の設定サーバー側の構成に応じて、TCPやWebSocketなどを使用できます。サーバー側の通信方式と関連項目を一致させる必要があります。
TLSプロトコル層の暗号化と併用できます。外側の通信保護によく使われますが、プロトコル名だけでは有効かどうか判断できません。

設定項目は3つの層に分けて考えると理解しやすくなります。UUIDなどの認証情報はユーザーの識別に使い、TCPやWebSocketはデータの伝送方法を決め、TLSは接続を暗号化してサーバーの身元を検証します。WebSocket自体に暗号化機能はありません。また、VLESSだからといってTLSが有効とは限りません。一方、VMessのプロトコル層暗号化と外側のTLSは併用でき、どちらか一方を選ぶものではありません。

結論:まず既存の設定に合わせてからプロトコルを選ぶ

既存の項目を開き、プロトコルの種類、UUID、通信方式、TLSを確認してください。速度向上を期待してVMessの種類をVLESSに変更するのは避けましょう。サーバー側に対応するVLESS設定がなければ、認証やハンドシェイクは通常完了しません。

2. Add Server:プロトコル名で推測せず、項目ごとに確認

手動で追加する場合は、Homeから追加画面を開き、Add Serverでプロトコルの種類を選んでから、サーバーアドレス、ポート、認証情報を入力します。プラットフォームによって項目の配置は異なる場合がありますが、それぞれの設定の対応関係は変わりません。以下のポートとパスは項目の意味を説明する例であり、接続可能なサーバー設定ではありません。

443
TLSでよく使われるポートの例。実際のポートは既存の設定を確認してください。
0
VMess AEADの設定でよく使われるalterIdの値
/ws
WebSocket Pathの例。大文字・小文字を含め、パス全体を一致させてください。
  1. サーバーアドレスとポートを確認します。アドレス欄には自分が用意したドメイン名またはIPアドレスを入力し、ポートは別に指定します。共有リンク全体をサーバーアドレス欄に貼り付けないでください。また、TLSを見ただけでポートを443に変更するのも避けてください。
  2. UUIDを確認します。文字列全体をコピーし、ハイフンの抜けや空白の混入がないようにしてください。表示名はメモにすぎず、名前が同じでも認証情報が同じとは限りません。
  3. VMessの暗号化方式とalterIdを確認します。元の設定どおりに入力してください。alterIdは通信遅延を調整する値ではなく、大きくしても速度は上がりません。古い設定に別の値がある場合は、一律の値を当てはめず、まずサーバー側の指定を確認してください。
  4. 通信方式を確認します。WebSocketを選ぶ場合は、HostとPathも確認してください。それ以外の方式を選ぶ場合は、対応する項目を設定します。通信方式だけを変更しても、サーバー側の設定を変えなければプロトコルは切り替えられません。
  5. TLSとServer Nameを確認します。Server Nameは、TLSハンドシェイクでのサーバー名表示や証明書検証に関わります。接続先アドレスと異なる場合もあるため、元のドメイン名をサーバーのIPアドレスに置き換えないでください。
  6. 追加項目を確認します。既存のVLESS設定にflowなどが含まれている場合は、現在のクライアントが対応しているか確認し、値をそのまま保持してください。すべてのVLESS項目で有効にすべき一般設定ではありません。

たとえば、既存の設定に接続先アドレスとしてIPアドレス、TLSのServer Nameとしてドメイン名が記載されていても、両者が異なること自体は誤りとは限りません。前者は接続先を決め、後者はTLSハンドシェイクで使われます。WebSocketのHostはHTTP層の項目なので、どれもドメイン名のように見えるからといって相互に置き換えることはできません。証明書エラーが起きた場合は、名前、有効期限、端末の日時を確認し、検証を無効にしないでください。

3. 共有リンクとSubscribe:内容に合った方法で読み込む

共有リンクは通常、1つのサーバー項目を表します。一方、サブスクリプションURLは複数の項目を取得・更新するためのものです。VMessの共有リンクは通常vmess://で始まり、VLESSの共有リンクは通常vless://で始まります。後続のエンコード形式や項目の意味、サーバー側の要件も異なる場合があるため、先頭の文字列を手動で置き換えないでください。UUIDを含む共有リンクやtokenを含むサブスクリプションURLは、認証情報として取り扱ってください。

読み込み方法:単一項目の設定とサブスクリプション更新URLを区別する

既存の単一共有リンクがある場合
  • Shadowrocketのリンク読み込み機能を使います。読み込み後、Homeに戻って項目を確認してください。
  • 項目の詳細を開き、プロトコル、アドレス、ポート、TLS、通信方式を確認します。
  • 設定が変更された場合は、新しいリンクを読み込むか、説明に従って既存の項目を編集してください。
既存のSubscribe URLがある場合
  • 追加手順でSubscribeを選び、自分が用意したサブスクリプションURLを入力して保存します。
  • 更新を実行し、Homeにサーバー一覧が表示されたら、使用する項目を選択します。
  • 設定が変更された場合は、まずサブスクリプションを更新してください。手動での変更は次回の更新時に上書きされることがあります。

サブスクリプションの読み込み失敗とサーバー接続の失敗は、異なる段階で起きる問題です。まず一覧を取得できたことを確認してから、選択した項目の接続を調べてください。

サブスクリプションURLの形式を示すための例はhttps://example.com/sub?token=xxxxです。実際のサービスには接続できません。実際のURLは、特に疑問符以降のクエリパラメーターを含め、全体を貼り付けてください。tokenの欠落、サブスクリプションの期限切れ、ログインページが返されることなどが一覧を読み込めない原因になります。サブスクリプションを更新できても、それは一覧を取得できたことを示すだけで、個々のサーバーが利用できることを保証するものではありません。

4. Global Routing:接続の問題とルールの問題を切り分ける

読み込み後、Homeで項目を選んで接続を有効にし、Global Routingを確認します。プロトコルはプロキシサーバーへの接続方法を決め、Global Routingはどの通信にその接続を使うかを決めます。Directになっている場合、Webページが開けてもVMessやVLESSが使える証拠にはなりません。Config内の対象がDIRECTに一致する場合も、その対象でプロキシサーバーを検証することはできません。

Config:現在の設定にあるルールで振り分ける

おすすめ

現在のConfigにあるルールを上から順に照合し、それぞれに対応するポリシーを適用します。先行するルールに一致しない通信はFINALで処理され、必ず直接接続されるわけではありません。

適した用途:日常利用、ドメイン名やIPアドレスによる振り分け

Proxy:ルールによる振り分けの影響を一時的に除外

Shadowrocketが処理する通信をプロキシ経由にします。Configのルールやポリシー選択が原因かどうかを切り分けるのに役立ちます。

適した用途:選択したサーバーの短時間テスト。終了後は通常の設定に戻してください。

Direct:直接接続した場合と比較

Shadowrocketが処理する通信をプロキシサーバー経由ではなく、接続先に直接つなぎます。そのため、プロキシの認証が成功したかどうかの確認には使えません。

適した用途:現在のネットワークで接続先に直接つないだ場合の状態を比較

以下はルール構文の例であり、完全なConfigファイルではありません。使用前に、設定内にPROXYという名前のポリシーが存在することと、ルールが上から順に照合されることを確認してください。DOMAIN-SUFFIXはドメインのサフィックス、GEOIPはIPの地理データベース、IP-CIDRはアドレス範囲で照合します。FINALは、それ以前のルールに一致しなかった通信を処理します。

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

同じ項目がProxyでは接続でき、Configでは失敗する場合は、プロトコルをすぐに変更せず、Configで対象がどのルールに一致し、どのポリシーに振り分けられているかを確認してください。Global RoutingのSceneは利用シーンを選ぶ機能であり、4つ目のプロキシプロトコルではありません。切り分けの際は、Sceneの切り替えによる影響を避けるため、同じモードと同じ項目を使ってください。

5. 接続できないとき:確認できる症状から順に調べる

一度に変更する項目は1つにし、元に戻せるよう元の項目を残してください。「サブスクリプション更新」「接続の確立」「特定の接続先へのアクセス」のどの段階で失敗したかを記録すると、「開かない」だけの記録より役立ちます。ポートに到達できても認証に成功したとは限らず、遅延テストに成功してもすべてのアプリの通信ができるとは限りません。

VMessをVLESSに変更したら接続できなくなりました。どこを間違えていますか?

まず元の項目をVMessの種類と設定に戻してください。サーバー側に対応するVLESS設定がある場合に限り、新しいVLESS項目を追加し、そのUUID、通信方式、TLSの設定を入力します。古い項目の種類を変更し続けないでください。

ポートには接続できますが、TLSハンドシェイクでエラーが発生します。どうすればよいですか?

項目の詳細を開き、元の設定と照らし合わせてTLS、Server Name、ポートを確認したうえで、端末の日付と時刻も確認してください。接続先がIPアドレスの場合は、元のServer Nameを必ず保持します。証明書が一致しない場合は設定を確認し、証明書検証を無効にすることを通常の対処にしないでください。

WebSocketの項目で接続に失敗し続けます。Pathを変更すべきですか?

まず通信方式がWebSocketに設定されていることを確認し、HostとPathを一文字ずつ照合してください。先頭のスラッシュ、大文字・小文字、クエリパラメーターも確認します。Pathが誤っているとHTTP 404が返される場合があり、ハンドシェイクの拒否はリバースプロキシの設定が原因の可能性もあります。すべての失敗をUUIDの問題と決めつけないでください。

接続をオフにしても、なぜ自動的にオンに戻るのですか?

Settings → On Demandを開き、有効化の状態と条件を確認してください。問題の切り分け中はOn Demandを一時的に無効にし、接続スイッチの状態を固定してテストできます。終了後は元の用途に合わせて設定を戻してください。On Demandは条件に応じて接続を開始する機能で、VMessをVLESSに変換するものではありません。

VLESSは必ずVMessより高速ですか?

プロトコル名だけでは判断できません。両方の設定を利用できる場合は、同じネットワーク、同じ接続先、近い時間帯でそれぞれテストし、通信方式、TLSの有無、失敗の状況を記録してください。サーバーの負荷、回線のパケットロス、ネットワーク経路も結果に影響します。

比較テストが終わったら、Global Routingを普段使うConfigに戻し、サブスクリプション更新で実際に選択中のサーバーが変わっていないことを確認してください。それでも接続できない場合は、自分が利用しているサービスのサポート窓口に、失敗した段階、通信方式、個人情報を伏せたログを伝えてください。UUID、サブスクリプションtoken、共有リンク全体を公開スクリーンショットに含めないでください。Home、Config、接続スイッチの基本操作は、サイト内の使い方ガイドで確認できます。

Shadowrocket をダウンロード