Shadowrocketの対応プロトコルは?Shadowsocks、VMess、VLESS、Trojan、WireGuard、Hysteria2を1分で解説

Shadowrocketに追加できるプロトコルの種類と特徴、主な設定項目、Add Serverでの選び方を1分で確認できます。

この記事の概要

Shadowrocketでは、Shadowsocks、VMess、VLESS、Trojan、WireGuard、Hysteria2などのプロトコルを設定できます。自分で用意したサーバー情報やサブスクリプションをお持ちで、Typeと各項目の対応を確認したい方向けに、まず一覧表でプロトコルを見分け、Home →「+」→ Add Serverで設定を確認する手順を説明します。最後に、プロトコル、伝送方式、Global Routingの役割を整理します。サーバー情報は提供していません。また、ここで紹介する6種類がアプリの対応タイプのすべてではありません。

1分で確認:6種類のプロトコルでチェックする項目

名称から「速そうな」タイプを選ぶのではなく、使用するサーバーと同じプロトコルを選びます。Home →「+」からAdd Serverを開き、Typeで現在のアプリに表示される選択肢を確認してください。以下のプロトコル名は識別のためのものです。実際の設定項目と選択肢は、現在の画面に従ってください。

プロトコル設計上の特徴優先して確認する項目
Shadowsocks共有鍵と指定された暗号化方式を使ってプロキシ接続を確立します。Address、Port、Method、Password。追加の難読化設定がある場合は、それも一致させます。
VMessユーザー識別子で認証し、伝送設定をサーバー側と一致させる必要があります。Address、Port、UUID、暗号化設定、TLS、伝送方式。
VLESSUUIDで認証します。プロトコル自体にはコンテンツを暗号化する機能はありません。UUID、伝送方式、対応するセキュリティ設定。UUIDだけでは設定が完了したことになりません。
TrojanPasswordで認証し、通常はTLSで接続を保護します。Password、Port、TLS、証明書に対応するサーバー名。
WireGuard鍵ペアを使い、UDPベースの暗号化トンネルを確立します。クライアントのPrivate Key、ピアのPublic Key、Endpoint、トンネルアドレス、ルーティング範囲。
Hysteria2QUICをベースとし、UDPに依存します。TLSと認証パラメーターを使用します。Address、UDPポート、認証情報、サーバー名、サーバー側で指定された追加パラメーター。
6種類
この記事で解説するプロトコル。対応タイプの全一覧ではありません
443
TLSでよく使われるサーバーポートの例。すべてのプロトコルで固定されたポートではありません
2種類
表中でUDPに依存するプロトコル:WireGuard、Hysteria2

結論:まずサーバーの設定に合わせ、次に接続状況を比較

まずType、Address、Port、認証情報を一つずつ確認してください。これらが一致して初めて、遅延やページの読み込みを比較する意味があります。同じアドレスのままTypeだけを変更して速度を試すのは避けてください。

Shadowsocks、VMess、VLESS:認証項目は互換性がありません

この3種類の違いは名称だけではなく、認証方式、セキュリティ設定、伝送方式の組み合わせにあります。Add ServerでTypeを選んだら、手元の元の設定に従って各項目を入力してください。Typeを変更した後もアドレスやポートが残っていても、ほかの設定が有効とは限りません。

WebSocketはVMessやVLESSと並ぶ認証プロトコルではなく、TLSも新しいサーバーアカウントではありません。サーバーの編集画面では、プロトコルのType、接続を運ぶ伝送方式、TLSのセキュリティレイヤーをそれぞれ区別してください。各組み合わせが利用できるかどうかは、アプリとサーバーの双方がその設定に対応しているかで決まります。

Trojan、WireGuard、Hysteria2:セキュリティ設定とネットワーク条件

この3種類では、証明書、鍵、基盤となるネットワーク条件を区別することが重要です。Add Serverでプロトコルを選んだら、まず対応する認証を設定し、その後TLSまたはトンネルの項目を確認してください。接続できない原因が必ずしもパスワードとは限りません。

Trojan:PasswordとTLSのサーバー名を一致させる

TrojanではTLSがよく使われますが、ポートに443を使うだけでプロトコルが成立するわけではありません。接続先にIPアドレスを指定し、証明書がドメイン名に対して発行されている場合は、既存の設定に従ってTLS検証用のサーバー名を入力してください。証明書エラーを、証明書検証を無効にすることで解決しようとしないでください。Address、TLSのサーバー名、WebSocketのHostは用途が異なるため、同じドメイン名をすべての欄に入力しないようにしてください。

WireGuard:クライアントの秘密鍵とピアの公開鍵を別々に入力

WireGuardではUUIDやPasswordではなく、鍵ペアを使用します。クライアントのPrivate Keyは秘密にし、ピアのPublic Keyは実際のサーバーに対応するものを入力してください。EndpointにはピアのアドレスとUDPポートを指定します。トンネルアドレス、Allowed IPs、MTUなどの設定も到達可能な範囲に影響する場合があります。固定値を当てはめず、既存の設定を確認してください。

Hysteria2:まずUDP経路への到達性を確認

Hysteria2はQUICベースであり、ネットワークが該当するUDP通信を許可している必要があります。TCPポートへのテストが応答しても、同じポートのUDP経路が正常とは限りません。サーバー側で追加の難読化や特定の認証方式が設定されている場合は、クライアント側にも同じ設定が必要です。名称が似ていても、HysteriaとHysteria2を互換性のあるタイプとして扱わないでください。

Add ServerでTypeを選び、保存する手順

手動追加では、推測したポートやTypeの切り替えではなく、手元にある完全な設定情報を使ってください。以下では主にiPhoneとiPadのHomeから操作する手順を説明します。項目はTypeによって異なるため、現在のプロトコルで必要なもののうち、明確な情報源がある項目だけを入力してください。

  1. 追加画面を開く

    Home → 右上の「+」をタップしてAdd Serverを開きます。サーバーのアドレス、ポート、認証情報、伝送方式の説明を手元に用意し、複数の情報源から設定をつなぎ合わせないようにしてください。

  2. プロトコルを選ぶ

    Typeを開き、元の設定と同じプロトコルを選択します。元の設定にHysteria2と記載されている場合、名前の似た別のタイプを選ばないでください。必要な選択肢が画面にない場合は、App Storeに表示されるアプリの状態と設定の互換性要件を確認してください。

  3. 基本項目を入力

    AddressとPortを入力し、プロトコルに応じてPassword、UUID、または鍵を設定します。元の設定でPortが8443と指定されている場合は8443を入力してください。TLSを有効にしたからといって、独自に443へ変更しないでください。

  4. 追加項目を確認

    元の設定に従ってTLS、サーバー名、伝送方式を確認してください。WebSocketを使う場合はHostとPathも確認します。WireGuardではトンネルアドレスとピアの設定を確認し、ほかのプロトコルの項目を流用しないでください。

  5. 保存してテスト

    保存後にHomeへ戻り、該当する項目を選んで接続を開始します。初回にシステムのVPN構成許可が表示された場合は、画面の案内に従って承認してください。Connectivity Testと実際のウェブページへのアクセスで結果を確認し、エラー内容を記録してから設定を一つずつ変更して再試行します。

サブスクリプションの読み込みと手動追加は目的こそ同じですが、操作場所と管理方法が異なります。自分のサブスクリプションがある場合は、Home →「+」→ Type → Subscribeから自分のサブスクリプションURLを入力できます。更新によって項目や設定内容が変わることがあるため、手動で重要な変更を加えた場合は、事前に内容を記録してください。アクセス情報を含むサブスクリプションURLを、スクリーンショットや問い合わせ記録に公開しないでください。

プロトコルとGlobal Routing、On Demandの違い

プロトコルは設定済みサーバーへの接続方法を決め、Global Routingはリクエストの処理方法を決め、On Demandは接続を開始するタイミングを決めます。問題を調べる際は、Home → Global Routing、Config、Settings → On Demandをそれぞれ確認し、3種類の設定を混同しないでください。

設定項目役割確認ポイント
Add Server → Typeサーバー接続に使用するプロトコルを指定します。サーバー側の認証、伝送方式、セキュリティ設定と一致させます。
Global Routing → Proxyリクエストをプロキシ経由で処理します。問題の切り分けでは実際のリクエストと接続記録も確認してください。スイッチの状態だけでは判断できません。
Global Routing → Directリクエストを直接接続で処理します。ウェブページが開けても、現在のプロトコルがそのリクエストを正常に処理したとは限りません。
Global Routing → Config有効になっている設定ルールに従ってリクエストを処理します。Configで現在有効な設定と、ルールに一致したポリシーを確認します。
Global Routing → Scene設定済みのシーン条件に従ってルーティング設定を適用します。シーン条件と実際に適用される設定を確認してください。Sceneはプロトコルの種類ではありません。
Settings → On Demand設定した条件に従って接続を開始します。サーバー設定の代わりにはならず、個々のリクエストに対するルール判定も行いません。

ConfigのDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALはルールのキーワードであり、Typeの選択肢ではありません。たとえばDOMAIN-SUFFIX,example.com,DIRECTは、ドメインのサフィックスが一致した場合にDIRECTを使用することを示します。FINAL,DIRECTは、それ以前のルールに一致しなかった場合に適用されるフォールバックです。ルールは上から順に照合されます。特定のウェブサイトが直接接続されている場合は、すぐにプロトコルを変更せず、まず一致したルールを確認してください。

よくある質問:読み込みや速度テストは成功するのに使えないのはなぜ?

読み込みに成功したことから分かるのは、設定内容が認識されたということだけです。認証の有効性、UDPへの到達性、ウェブリクエストが意図したポリシーを使っているかどうかは確認できません。まず元の設定を残し、パラメーター、ネットワーク、モード、ルールの順に確認してください。複数の箇所を同時に変更すると、結果を比較できなくなります。

同じアドレスのままVMessからVLESSに変更できますか?

Typeを変えるだけで変換が完了するわけではありません。Home → 該当項目の編集画面を開き、サーバー側がVLESS用のポート、UUID、伝送方式、セキュリティ設定を別途提供しているか確認してください。その組み合わせにサーバーが明確に対応している場合に限り、新しい設定で項目を作成してください。

Hysteria2のテストに失敗した場合、443に変えれば直りますか?

ポートを変更して確認を省略することはできません。まず項目の編集画面で、サーバーが実際に使用しているUDPポートを確認し、同じ設定のままネットワークを切り替えてテストしてください。443は単なるポート番号です。待ち受けていないポートを入力しても接続は確立されず、ネットワークのUDP通信の扱いが自動で変わることもありません。

サブスクリプションの更新後、異なるプロトコルが増えたように見えるのはなぜ?

1つのサブスクリプションに、Typeの異なる項目が複数含まれることがあります。Homeに戻り、それぞれの項目の編集画面でタイプと設定を確認してください。更新はサブスクリプションの内容を再取得する操作であり、アプリがあるプロトコルを別のプロトコルに変換したという意味ではありません。テストする際は、想定した項目が選択されていることを確認してください。

Connectivity Testで結果が出れば、ウェブページも必ず正常に表示されますか?

いいえ。テスト結果が示すのは、選択したテスト方法と接続先での状況であり、すべてのリクエスト経路を網羅するものではありません。続けてHome → Global Routingでモードを確認してください。Configを使う場合は有効なルールも確認し、DNSの名前解決と実際のウェブページの表示状況も調べてください。

必ず最速で、そのまま選べばよいプロトコルはありますか?

サーバーやネットワークの条件に関係なく最適といえるプロトコルはありません。同じテスト用ネットワーク、接続先のウェブサイト、おおよそ同じ時間帯を保って、利用可能な設定の読み込み状況と安定性を比較してください。異なる地域にあるサーバーの速度テスト結果の差を、すぐにプロトコルの違いに結びつけないでください。

App Storeでダウンロード