Shadowrocketの対応プロトコル:Shadowsocks・VMess・VLESS・Trojan・Hysteria2を解説

Shadowsocks、VMess、VLESS、Trojan、HTTP/SOCKS5、WireGuard、Hysteria2の通信方式と暗号化の特徴を解説。Add Serverで入力する項目も確認できます。

この記事の概要

Shadowrocketは複数のプロキシ・トンネルプロトコルに対応していますが、プロトコル名だけでは接続に必要な設定はそろいません。利用中のサービスとサブスクリプションがある方向けに、プロトコル・通信方式・ルールの違いを整理し、Add Serverで入力するアドレス、ポート、認証情報、TLS設定を確認します。最後に、インポート・接続テスト・トラブルシューティングの手順も紹介します。サブスクリプションは利用中のサービス提供元から入手してください。

1. プロトコル・通信方式・Global Routingの違い

プロトコルは、クライアントとリモートサーバー間でデータを認証・カプセル化・転送する方法を定めます。通信方式は、TCP、UDP、WebSocket、QUICなど、データが通る経路を定めます。TLSは接続レイヤーの暗号化と認証を担います。それぞれ役割が異なるため、互いに置き換えられるものではありません。同じVLESSでも、通信方式やTLS、サーバー側の要件が違えば、設定を流用できない場合があります。

Homeでは接続プロファイルの管理・選択、Configでは構成ファイルの管理、Settingsではアプリの設定を行います。HomeのGlobal Routingはリクエストの経路選択を制御するもので、Shadowsocksの接続をTrojanに変換する機能ではありません。Configでは設定ファイルのルールに従って通信を振り分けます。実際の経路は、適用されたルールとその対象ポリシーによって決まり、特定の種類のWebサイトが常に直結されるわけではありません。

設定項目例確認する内容
プロトコルShadowsocks、VMess、TrojanTypeがサーバー側のプロトコルと一致しているか
通信方式とセキュリティWebSocket、TLS、QUIC通信方式、パス、ドメイン、認証情報
ルーティング設定Proxy、Direct、Config、Sceneリクエストが実際に使用する経路またはSceneの設定
構成ルールDOMAIN-SUFFIX、IP-CIDR、GEOIP、FINALルールの順序と対象ポリシー

2. Shadowsocks:MethodとPasswordを確認

Shadowsocksは事前共有された認証情報を使い、選択したMethodに従ってプロキシ通信を暗号化・認証します。よく使われるAEAD Methodにはaes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305があります。Methodごとに必要な鍵やプロトコルの仕様が異なるため、名前が似ていても互換性があるとは限りません。特定の拡張機能を使う場合は、クライアントとサーバーの両方が対応していることも確認してください。

保存できたことは、設定形式が受け付けられたことを示すだけで、認証が成功したことを意味しません。アドレスに到達できてもリクエストが通らない場合は、まず元の設定とMethod、Password、追加設定を照合し、次にUDP転送などの機能を確認します。複数の項目を一度に変更して原因を判断するのは避けてください。

3. VMessとVLESS:UUIDが似ていても互換性はない

VMessとVLESSはいずれもユーザー識別子にUUIDを使う場合がありますが、認証とデータ処理の仕組みは異なります。VMessには独自の認証・暗号化機能があります。一方、VLESS自体はペイロードを暗号化しないため、サーバー側の方式に応じてTLSなどのセキュリティ機能を組み合わせる必要があります。TypeをVMessからVLESSに変更するだけでは、プロトコルを変換できません。

確認項目VMessVLESS
ユーザー認証UUID。元の設定にAlterIdが含まれている場合は、それも確認UUID。Flowの指定がある場合は、元の設定どおりに入力
プロトコルの暗号化サーバー側で指定された暗号化設定を維持プロトコル自体にペイロードの暗号化機能はない
下位の通信方式設定に応じてTCPやWebSocketなどを確認設定に応じてTCPやWebSocketなどを確認
TLS設定有効・無効、Server Nameなどを一致させるセキュリティ層の設定と関連する認証情報をすべて確認

Add Serverで該当するTypeを選び、まずAddress、Port、UUIDを入力してから、通信方式とTLS関連の項目を確認します。WebSocketを使う場合はHostとPathも照合してください。/wsと/は別のパスなので、独自に簡略化しないでください。その他のセキュリティ拡張を使う場合は、完全な元設定を参照し、アドレスとUUIDだけをコピーしないようにします。

要点:設定項目を省略せずに維持する

設定をインポートしても接続できない場合は、プロトコルを変更したり認証を無効にしたりする前に、サービス提供元の元設定とType、通信方式、Path、セキュリティ層の設定を一つずつ照合してください。

4. TrojanとHTTP/SOCKS5:認証と暗号化を区別する

Trojanは通常、TLSで通信を保護し、Passwordで認証します。Add ServerではType、Address、Port、Password、TLS関連の設定を確認してください。接続先アドレスと証明書上の識別名は、同じ文字列とは限りません。AddressがIPアドレスでも、Server Nameはサーバーの指定および証明書の識別名に合わせる必要があります。AddressにIPを入力したからといって、Server Nameも安易にIPへ変更しないでください。

HTTPとSOCKS5は汎用プロキシプロトコルです。HTTPプロキシではCONNECTを使ってトンネルを確立できますが、CONNECT自体がクライアントとプロキシサーバー間の暗号化を意味するわけではありません。SOCKS5のユーザー名・パスワード認証も、通信を自動的に暗号化するものではありません。接続先WebサイトがHTTPSを使うことと、プロキシ接続先までの通信がTLSで保護されているかは、別の問題です。

5. WireGuardとHysteria2:UDPの利用可否も確認

WireGuardはUDPベースの暗号化トンネルプロトコルで、公開鍵と秘密鍵を使ってピア間の接続を確立します。VMessのUUIDやTrojanのPassword形式は使いません。手動で設定する場合は、既存の設定からローカルのPrivate Key、トンネルアドレス、リモートのPublic Key、Endpoint、必要なルーティングパラメーターを確認します。Pre-shared Keyが指定されている場合は、それも維持してください。秘密鍵は機密情報のため、公開するスクリーンショットに表示しないでください。

Hysteria2はQUICをベースとし、UDPを利用してTLSで接続を保護します。Add ServerでHysteria2を選び、アドレス、ポート、認証情報、Server Nameなどのセキュリティ設定を確認してください。元の設定に難読化パラメーターがある場合は、それも反映します。ネットワークでTCP 443が使えても、UDP 443も使えるとは限りません。

プロトコル主な設定項目接続できない場合の確認事項
WireGuardPrivate Key、Public Key、トンネルアドレス、Endpoint鍵の組み合わせ、UDPの到達性、トンネルのルート、アドレスの競合
Hysteria2認証情報、ポート、Server Name、任意の難読化設定UDPの制限、認証情報の一致、TLS認証の成否

プロトコル名だけで実際の速度は判断できません。遅延、パケットロス、帯域制限、サーバー負荷、現在のネットワークにおけるUDPの扱いなどによって結果は変わります。Hysteria2の設定がモバイル通信では使えて、同じ端末を特定のWi-Fiに接続するとタイムアウトする場合は、「ネットワーク経路またはUDPの制限」を確認項目に加えられます。ただし、この現象だけで原因を特定することはできません。

6. Add Serverでの手動入力とSubscribeからのインポート

単一の接続プロファイルは設定項目の照合に、サブスクリプションは一括インポートや更新に適しています。サブスクリプションURLは接続プロファイルを取得するためのもので、リモートプロキシのAddressではありません。以下のhttps://example.com/sub?token=xxxxは形式の例であり、接続には使えません。実際のサブスクリプションはサービス提供元から入手してください。

  1. 追加画面を開く

    Homeを開き、右上の「+」をタップしてAdd Serverを表示します。手動で入力する場合は、まずTypeで元の設定と一致するプロトコルを選択してください。

  2. 接続項目を入力

    プロトコルに応じてAddress、Port、認証情報を入力します。TLS、Server Name、通信方式、Pathも確認し、一般的な初期値でサーバー側の指定を上書きしないでください。

  3. サブスクリプションをインポート

    サブスクリプションを利用している場合は、Add Server → TypeでSubscribeを選び、完全なサブスクリプションURLをURL欄に入力します。保存後、プロファイルが取得されるまで待ちます。URLを各プロトコルのAddress欄に入力しないでください。

  4. 設定を確認してテスト

    Homeに戻り、インポート件数と各プロファイルのTypeを確認してから、プロファイルを選んで接続します。次に、明確なテスト先へアクセスし、遅延測定の結果と実際のリクエスト結果を区別してください。

  5. 更新元を維持

    サービス提供元の変更を反映するには、Homeでサブスクリプションを更新します。更新後、プロファイルが残っているか再確認してください。サブスクリプションから生成された項目を手動で変更しても、長期的に維持されるとは限りません。

7. プロトコル設定が正しくてもGlobal Routingを確認

接続プロファイルのテストは成功するのに特定のWebサイトへアクセスできない場合は、リクエストが選択したプロファイルを実際に経由しているか確認してください。Global RoutingのConfigは構成内のルールを実行します。たとえば先にあるDOMAIN-SUFFIXルールに一致すると、後続のFINALはそのリクエストを処理しません。IP-CIDRはIPアドレス範囲を照合し、GEOIPは接続先IPの地域を判定します。どちらもプロトコルを選ぶ設定ではありません。

Config:ルールに沿って通信を振り分ける

おすすめ

確認済みの構成を使い、ルールの順序に従って対象ポリシーを選択します。先行ルールに一致しなかったリクエストは通常FINALで処理されます。最終的な経路は構成の内容によって異なります。

向いているケース:通信の振り分け要件が明確で、ルールを確認済みの日常利用

Proxy:プロキシ経路を確認

Shadowrocketが処理するリクエストをプロキシ経路に通し、一時的にConfigのルールによる振り分けの影響を減らします。無効なパスワード、TLSエラー、接続先への到達不能を解決する機能ではありません。

向いているケース:Configのルールが原因か一時的に確認したいとき

Direct:直結経路を確認

直結経路を使い、現在のネットワークから同じ接続先へアクセスした結果を比較します。Directを選んでWebページが開いても、プロキシプロファイルの接続が成功した証明にはなりません。

向いているケース:直結時とプロキシ経由時の結果を比べ、原因を絞り込みたいとき

Sceneは関連する設定を用途別にまとめる機能であり、新しいプロトコルではありません。Settings → On Demandでは自動接続の条件を管理しますが、接続プロファイルのTypeは変わりません。トラブルシューティングではテスト条件をそろえ、まずGlobal Routingと現在適用中の構成を確認し、その後On Demandによる自動接続の有無を個別に調べてください。

8. プロトコル設定でよくある問題

アドレスとポートを入力しても接続できないのはなぜ?

Homeで該当プロファイルの編集画面を開き、Typeと認証項目を確認してください。ShadowsocksではMethodとPassword、VMess/VLESSではUUIDと通信方式の設定、WireGuardでは鍵とトンネル設定も必要です。アドレスとポートは接続先の入口を示す情報にすぎません。

遅延テストの結果は出るのに、Webページを開けないのはなぜ?

遅延テストの成功は、接続先Webサイトへのリクエストが成功したことを意味しません。まずHomeでGlobal Routingを確認し、一時的にProxyを選んでConfigと比較してください。Configでのみ失敗する場合はルールを確認します。どちらでも失敗する場合は、DNS、認証、TLSを確認し、遅延の数値だけでプロトコルが使えると判断しないでください。

TLSエラーが出たら、検証を無効にしてもよい?

まずデバイスの時刻、Address、Server Name、サーバー証明書が一致しているか確認し、サービス提供元に完全なセキュリティ設定を問い合わせてください。検証を無効にすると認証が弱くなるため、通常の修復方法として使わないでください。パスワードの誤りや通信経路の不一致も解決できません。

サブスクリプションを更新したら手動変更が消えたのはなぜ?

サブスクリプションから生成されたプロファイルは、更新時に再生成されることがあります。Homeに戻ってサブスクリプションの取得元と更新結果を確認し、長期的に維持する必要がある接続条件はサービス提供元に確認してください。個別にテストする場合は手動プロファイルを別途作成し、サブスクリプション項目の編集に依存しないでください。

対応プロトコルが多い場合、どれを選べばよい?

まず、サービス提供元が明示している、必要な設定がそろったプロトコルを使ってください。比較する場合は、同じ端末・同じネットワーク・近い時間帯に同じ接続先へアクセスし、接続成功率、リクエスト所要時間、エラーの種類を記録します。一度に変更する要素は一つにしてください。プロトコル名だけで安定性を判断することはできません。

App Storeでダウンロード