Shadowrocketの対応プロトコル一覧:ShadowsocksからHysteria2までを解説

Shadowsocks、VMess、VLESS、Trojan、HTTP/SOCKS5、WireGuard、Hysteria2の特徴と、設定時に確認したい項目を解説します。

この記事の概要

Shadowrocketは、複数のプロキシプロトコルやトンネルプロトコルに対応しています。すでに利用中のサービスとサブスクリプションがあり、接続情報を確認したい方向けに、まず表でプロトコルを見分け、認証・伝送方式・TLSの項目を確認します。最後にGlobal Routingでルールの影響を切り分けます。各パラメータの入力先や、接続できないときに確認すべき箇所が分かります。プロトコル名だけで通信速度は判断できません。

プロトコル早見表:Typeを選び、パラメータを確認

ShadowrocketはShadowsocks、VMess、VLESS、Trojan、HTTP、SOCKS5、WireGuard、Hysteria2などに対応しています。サーバーを追加するときは、Home → 右上の「+」→ Typeで、その後に入力する項目が決まります。プロトコルはサービス提供元の接続情報と一致させてください。Typeの名称だけを変更しても、別のプロトコルには変換されません。

プロトコル主な特徴優先して確認する項目
Shadowsocks所定の暗号化方式とパスワードで認証するため、設定項目は比較的シンプルです。サーバーアドレス、ポート、暗号化方式、パスワード、追加プラグインの要否。
VMessUUIDでユーザーを識別します。認証と伝送方式の設定を一致させる必要があります。UUID、暗号化設定、AlterId(接続情報に記載がある場合)、伝送方式、TLS。
VLESSプロトコル自体はペイロードを暗号化しません。実際の構成に応じてセキュリティ層を確認してください。UUID、伝送方式、TLSまたはREALITYの設定、Flow(指定がある場合)。
Trojan通常はTLS接続内でパスワード認証を行います。パスワード、ポート、TLSサーバー名、証明書の検証。
HTTP / SOCKS5汎用プロキシの種類です。認証や暗号化の有無は構成によって異なります。プロキシアドレス、ポート、ユーザー名、パスワード、TLSの有効・無効。
WireGuardUDPベースの暗号化トンネルで、鍵と対向側の設定を使用します。ローカル秘密鍵、対向側の公開鍵、Endpoint、トンネルアドレス、ルーティング範囲。
Hysteria2QUICベースで、UDPを利用してプロキシ通信を転送します。サーバーアドレス、ポート、認証、TLSサーバー名、難読化の設定(指定がある場合)。

この表はパラメータの見分け方を示すもので、性能ランキングではありません。実際に設定できる項目は、インストール済みのShadowrocketの画面で確認してください。サービス提供元独自の拡張機能は、クライアント側の対応も必要です。接続情報を受け取ったら元の内容を保ち、項目ごとに確認しましょう。名称が似ているだけで互換性を判断しないでください。

Shadowsocks・VMess・VLESS:認証と伝送方式を分けて確認

Shadowsocks:暗号化方式とパスワードを正しく組み合わせる

Shadowsocksでは、サーバーアドレスとポートで接続先を指定し、暗号化方式とパスワードの組み合わせで正しく通信できるかが決まります。たとえばサーバー側でaes-128-gcmが指定されている場合、クライアント側でchacha20-ietf-poly1305に変更することはできません。プラグインなどの拡張パラメータが必要な接続は、アドレスとパスワードだけを残して通常の設定として使うこともできません。

VMess:UUIDが正しくても設定が完了したとは限らない

VMessのUUIDはユーザー識別子であり、サーバードメインやサブスクリプショントークンではありません。UUIDに加えて、伝送方式、TLS、サービス提供元が指定するその他のパラメータも確認してください。接続情報にAlterIdが記載されている場合は、その値をそのまま使用し、別の設定から数値を流用しないでください。端末の時刻が大きくずれていると認証に影響することがあるため、システムの日付と時刻も確認しましょう。

VLESS:UUIDを暗号化設定と混同しない

VLESSでもUUIDは認証に使われますが、プロトコル自体はペイロードを暗号化しません。サービス提供元はTLSやREALITYなどを組み合わせている場合があります。Flow、Public Key、Short IDなどが指定されている場合は、対応する組み合わせに沿ってすべて入力してください。REALITYは通常のTLSスイッチをオンにするだけで代用できる設定ではありません。また、公開鍵をパスワード欄に入力しないでください。

WebSocketは認証プロトコルではない

WebSocketは伝送方式で、HostやPathなどを設定します。たとえば接続情報でPathが/connectに指定されている場合、/に変更するとハンドシェイクに失敗することがあります。Host、サーバーアドレス、TLSのサーバー名はそれぞれ異なる場合があるため、項目ごとに接続情報と照らし合わせてください。

Trojan・HTTP・SOCKS5:TLSとプロキシ認証を区別する

Trojanは通常、TLSで接続を保護し、パスワードで認証します。証明書の検証に失敗しても、パスワードが間違っているとは限りません。接続先がIPアドレスで、証明書がドメイン名に対して発行されている場合は、TLSサーバー名(SNI)を確認してください。エラーを消すために証明書検証を無効にせず、ドメイン名、端末の時刻、サーバー証明書の状態を先に確認しましょう。

設定項目内容間違えやすい点
サーバーアドレスクライアントが実際に接続するドメイン名またはIPアドレス。TLS証明書に対応するドメイン名と同じとは限りません。
Portサーバー側の待ち受けポート。接続情報では443が指定されることもあります。443はよくある例にすぎず、すべてのプロトコルで使われるわけではありません。
SNITLSハンドシェイクで送信するサーバー名。完全なURLは入力しません。https://やパスは含めないでください。
ユーザー名とパスワードHTTP / SOCKS5で必要になることがあるプロキシ認証情報。サービス提供元から明示されていない限り、サブスクリプションサイトのログイン情報ではありません。

HTTPプロキシはCONNECTを使ってHTTPSの接続先へ転送することがよくあります。ただし、「接続先のURLがHTTPSであること」と「クライアントからプロキシ入口までの通信でTLSを有効にすること」は別の設定です。SOCKS5自体も通信経路を暗号化しません。ユーザー名とパスワードによる認証で暗号化を代替することはできません。通信の秘匿が必要な場合は、プロキシにパスワードを設定したかだけでなく、接続経路全体を確認してください。

WireGuard・Hysteria2:UDPの通信可否を個別に確認

WireGuardは暗号化トンネルプロトコルであり、「アドレスとパスワード」を入力するプロキシ設定ではありません。ローカルの秘密鍵と対向側の公開鍵を使い、Endpointでリモートの接続先を指定します。トンネルアドレスはトンネル内で使うアドレスです。鍵の設定方向を間違える、アドレスを入力し忘れる、ルーティング範囲が適切でないといった場合、設定を保存できても接続先にアクセスできないことがあります。

Hysteria2はQUICを使用し、通常はUDPで接続します。ネットワークでTCP 443が許可されていても、UDP 443も使えるとは限りません。ポート番号が同じでも、TCPとUDPは別の通信です。認証、TLSサーバー名、任意の難読化設定もサーバー側に合わせてください。帯域幅に関する値を設定しても、物理回線やサーバーが実際に提供できる容量は変わりません。

まとめ:まずUDPの疎通を確認し、その後に設定を調整

同じネットワークでTCPを使う接続はできるのに、WireGuardやHysteria2がタイムアウトし続ける場合は、利用が許可されている別のネットワークでも試し、UDPポートについてサービス提供元に確認してください。パスワードの変更、証明書検証の無効化、帯域幅の値をむやみに大きくすることは避けましょう。

インポートと確認:サービス提供元のパラメータをすべて保持

サブスクリプションを利用している場合は、まずその設定の組み合わせを保ち、必要なプロトコルがすべて取り込まれているか確認してください。サブスクリプションURL、個別サーバーの共有リンク、設定ファイルのリンクは用途が異なります。URLがhttps://で始まるかどうかだけで種類を判断しないでください。サブスクリプションは、利用中のサービス提供元から入手してください。

  1. 接続情報の種類を確認

    受け取ったものがサブスクリプション、個別サーバーの接続情報、設定ファイルのどれかを確認してください。サブスクリプションURLの例https://example.com/sub?token=xxxxは形式を示すもので、実際に利用できるサービスではありません。本物のtokenは公開しないでください。

  2. サブスクリプションを追加

    Home → 右上の「+」→ Type → Subscribeを開き、自分のサブスクリプションURLを入力して保存します。Homeに戻って取り込み結果を確認し、更新する場合はHomeで下にスワイプして更新します。リストに意図した変更が反映されたことを確認してください。

  3. 手動で項目を確認

    手動で追加する場合は、Home → 右上の「+」→ Typeで該当するプロトコルを選び、接続情報に従ってアドレス、ポート、認証情報を入力します。伝送方式やTLSの項目がある場合は、それらも確認してください。最初の画面にある数項目だけを入力して終わりにしないでください。

  4. 接続を再テスト

    Homeで確認済みのサーバーを選択して接続し、実際の接続先をテストします。自動接続の影響を切り分ける場合は、Settings → On Demandで現在の設定を記録し、調査中はオンデマンド接続を一時停止してください。終了後は元の設定に戻します。

サブスクリプションを更新すると、そのサブスクリプションで管理されているサーバー設定が上書きされることがあります。比較テストを行う場合は、元の設定と変更内容を記録してください。同じテスト中にプロトコル、DNS、ルール、伝送方式を同時に変更しないでください。条件を一つずつ変えれば、結果と原因を結び付けやすくなります。

Global Routing:プロトコル接続とルーティングルールは別の階層

Homeではサーバーの選択と接続、Configでは設定ファイルの管理、Settingsではアプリの各種設定を行います。Global Routingはトラフィックのルーティング方法を決めるもので、ShadowsocksをTrojanに変換したり、プロトコル認証を代替したりする機能ではありません。選択したサーバーを経由していないだけなのに、プロトコルが使えないと誤認しないよう、切り分けの前にGlobal Routingを確認してください。

Config

おすすめ

現在の設定にあるルールに従って、接続先ごとにプロキシ、直接接続、拒否などの動作を選択します。利用前に設定の入手元とFINALに指定された実際の動作を確認してください。どのルールにも一致しない通信が必ず直接接続になるとは限りません。

おすすめの用途:ルールを確認したうえで、接続先ごとに経路を分けて日常利用する場合。

Proxy

Shadowrocketが処理する通信をプロキシ経由で転送します。ルールの適用を一時的に切り分けるときに便利です。パスワードの誤り、ポートへの接続不可、TLSハンドシェイクの失敗は解決できません。

おすすめの用途:現在のサーバーから同じ接続先にアクセスできるか確認する場合。

Direct

通信を直接接続として処理するため、選択中のプロキシサーバーが使えるかどうかの確認には適していません。切り替え後にWebページが表示されたとしても、直接接続の経路が使えると分かるだけです。

おすすめの用途:ローカルネットワーク経由とプロキシ経由でアクセス状況を比較する場合。

Global RoutingのSceneでは、場面ごとの設定に基づいてルーティング動作を決めます。確認時は、各Sceneの条件も調べてください。個別の接続設定を確認したい場合は、まず元のルーティング状態を記録し、固定した状態で再テストします。ネットワークの切り替えによってSceneが変わる影響を避けられます。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

以下はConfigのルール構文の例であり、既存の設定をそのまま置き換えることを推奨するものではありません。DOMAIN-SUFFIXはドメインの末尾、IP-CIDRはアドレス範囲に一致します。GEOIPはIPアドレスの位置情報データに依存し、FINALはそれ以前のルールに一致しなかった場合に適用されます。ルールは上から順に評価されます。192.0.2.0/24はドキュメント用のサンプル範囲で、実際のサーバーアドレスとしては使用できません。

よくある質問:症状から次の確認項目を特定

インポートできたのに接続がタイムアウトするのはなぜですか?

インポートの成功は接続情報が解析されたことを示すだけで、接続先に到達できることを意味しません。Homeで該当サーバーの編集画面を開き、アドレス、ポート、Typeを確認してから、現在のネットワークも調べてください。Hysteria2とWireGuardではUDPが通るかも個別に確認が必要です。サブスクリプションの更新成功を、接続テストの代わりにしないでください。

遅延の数値が表示されるのに、Webページを開けないのはなぜですか?

遅延テストでは、認証、TLS、DNS、接続先へのアクセスまでを含む経路全体が確認されない場合があります。まずGlobal Routingの現在値を記録し、一時的にProxyへ切り替えて同じ接続先をテストしてください。Configの場合だけ失敗するなら、Configで現在の設定と接続先に一致するルールを確認し、テスト後に元の状態へ戻します。

VLESSをVMessにそのまま変更できますか?

Typeを変更するだけではできません。2つのプロトコルではサーバー側の処理や認証方法が異なり、UUIDの文字列が同じでも互換性があるとは限りません。サービス提供元に対応するプロトコルの接続情報一式があるか確認し、Home → 右上の「+」から新規作成してください。比較できるよう、元の項目は残しておきましょう。

必ず最速になるプロトコルはどれですか?

プロトコル名だけで速度を判断することはできません。ネットワーク、接続先、テスト時間を固定し、接続できたか、ページの読み込み状況、継続的な通信の状態をそれぞれ記録してください。比較対象は、自分が利用でき、設定が正しい接続に限ります。UDPが制限されている場合、Hysteria2の失敗だけから他のプロトコルの性能を判断しないでください。

各項目の詳細は設定項目を、用語の確認には用語集をご覧ください。問い合わせの際はエラーメッセージ、プロトコルの種類、再現手順を記録し、パスワード、UUID、サブスクリプショントークン、秘密鍵は隠してください。接続情報一式を公開ページに貼り付けないでください。

App Storeで正規アプリを確認