Shadowrocket対応プロトコル:Shadowsocks、VMess、VLESS、Trojan、WireGuardが1分でわかる

ShadowrocketのAdd Serverで選べる種類、必須項目、一般的なTransportをプロトコル別に解説。サービス提供元の情報を正しい欄に入力できます。

この記事の要点

自分のサービス提供元からサーバー情報またはサブスクリプションURLを入手済みで、Add ServerでどのTypeを選ぶべきかわからない方に適した内容です。読み終えると、Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardの主要項目を見分け、アドレス、ポート、認証情報、Transport、TLS情報を順に確認できます。

サブスクリプションの読み込みか手動追加かを判断する

Shadowrocketのプロトコルタイプは、ネットワーク回線の名称ではありません。サービス提供元の設定にShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardのいずれかが記載されている場合は、Home右上の「+」からAdd Serverを開き、Typeを同じプロトコル名に設定します。ポート番号だけでプロトコルを推測しないでください。443は複数の設定で使われるため、ポートだけでは種類を判断できません。

自分のサブスクリプションURLがある場合は、通常Subscribeから読み込みます。サブスクリプションにはプロトコルタイプ、サーバーアドレス、Transport情報などが対応する項目に反映されるため、大文字・小文字、パス、証明書名の転記漏れを防ぎやすくなります。手動追加は、完全なパラメータが1件だけある場合、特定の項目を確認したい場合、またはサービス提供元から手入力を指定されている場合に適しています。

Subscribeから読み込む

おすすめ

既存のサブスクリプションからサーバー項目を作成し、同じ配信元から設定を更新できます。プロトコルとTransportの項目も通常は一緒に反映されます。

適したケース:完全なサブスクリプションURLがあり、複数のサーバーを管理したい場合

Add Serverで手動入力

Address、Port、Password、UUIDを順に入力し、Transport、TLS、SNIなどの追加設定も確認します。

適したケース:完全なパラメータが1件あり、項目の対応関係を確認したい場合

Configファイル

Configは主にルール、DNS、分流設定を扱うもので、サーバープロトコルに必要な接続パラメータを1つのルール設定で代用することはできません。

適したケース:ルールによる分流を管理する場合。サーバー認証情報の不足を補う用途ではありません。

  1. 情報の提供元にある項目を確認する

    まずサービス提供元の説明から、明記されたプロトコル名、Address、Port、認証情報を確認します。プロトコル名がない場合は、ポート番号だけで判断せず、元の設定提供元に確認してください。

  2. 追加画面を開く

    Homeを開き、右上の「+」をタップしてAdd Serverに進みます。サブスクリプションを読み込む場合は、TypeをSubscribeに設定します。

  3. 既存のサブスクリプションを貼り付ける

    URLに自分のリンクを入力します。形式はhttps://example.com/sub?token=xxxxのようになります。このアドレスは例示用の値であり、接続には使えません。

  4. 対応するプロトコルを選ぶ

    手動追加では、パラメータに明記されたプロトコルをTypeで選び、そのタイプに表示される項目を入力します。

  5. 保存してテストする

    保存後にHomeへ戻り、作成されたサーバー項目を選択してConnectivity Testで到達性を確認します。

6種類のプロトコルで共通して確認する項目

プロトコルによって認証方式は異なりますが、確認する順序は共通にできます。まずサーバーアドレスとポート、次にパスワードまたは鍵、最後にTransportとTLSを確認します。Addressにはホスト名またはIPアドレスだけを入力し、https://、パス、ポートをまとめて入れないでください。Portには設定元に記載された整数を入力します。4438443などは例にすぎず、すべてのサーバーに共通する固定ポートはありません。

6種類
この記事で確認する対象:Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard
4層
アドレス・ポート → 認証 → Transport → TLS
4つの観点
Global Routing:Config / Proxy / Direct / Scene
4つのキーワード
DOMAIN-SUFFIX / GEOIP / IP-CIDR / FINAL
項目の階層 よくある画面上の値 確認方法
接続先 Address、Port ホスト名とポートを1文字ずつ確認し、空白、プロトコルの接頭辞、Webページのパスが付いていないことを確認します。
認証情報 Password、UUID、Private Key プロトコルに応じて入力します。3つは用途が異なるため相互に置き換えられません。大文字・小文字も変更しないでください。
Transport設定 TCP、WebSocket、gRPC、QUIC 設定元に明記されたTransportだけを選び、Host、Path、Service Nameも続けて入力します。
セキュリティ設定 TLS、SNI、Public Key ドメイン、証明書名、鍵は同じ設定に由来するものを使い、別のサーバー項目からコピーしないでください。

結論:ポート番号より先にプロトコル名を確認する

443からわかるのは接続先のポートだけで、Trojan、VLESSなどのTypeは判断できません。Add ServerのTypeはサービス提供元のプロトコル表記に合わせ、その後でプロトコル固有の認証項目を確認します。

Shadowsocks、VMess、VLESSの項目を対応させる方法

Shadowsocks:PasswordとMethodはセットで確認

Shadowsocksの基本情報には通常、Address、Port、Password、Methodが含まれます。Methodは暗号化方式で、設定元には特定のAEAD名などが記載されることがあります。Shadowrocketでは元の設定と完全に一致する項目を選びます。サーバーアドレスとパスワードが正しくても、Methodが異なるとポートが応答する場合でも認証を完了できません。

VMess:UUID以外にTransportも確認

VMessでは通常、UUID形式のユーザー識別子を使います。設定によっては追加の識別情報、セキュリティ設定、TLS、Transportも必要です。TransportがWebSocketの場合は、通常PathとHostも確認します。設定元に別のTransportが記載されている場合は、該当する項目で必要な追加値を入力します。UUIDだけをコピーしてPathを省くと、AddressとPortには到達できても接続テストに失敗することがあります。

VLESS:UUID、Flow、セキュリティ層を分けて入力

VLESSでもUUIDを使うことが多いものの、VMessの項目を名前だけ変更して使うことはできません。VLESSのFlow、Transport、セキュリティ層は、元のパラメータに合わせて対応させます。Flowを使わない設定では、提供元が指定した空欄のままにします。Flowが明記されている場合は、同じ項目を選びます。Realityを使う設定では、Public Key、Short ID、Server Nameなども登場します。これらは同じサーバー設定に属する値をまとめて確認してください。

VMessとVLESSにはUUID、TLS、WebSocketの項目が共通して現れる場合がありますが、プロトコル自体は異なります。最も確実なのは、正しいTypeで新しい項目を作り、パラメータを1つずつ入力し直す方法です。表示名だけを変更するのは避けてください。

Trojan、Hysteria2、WireGuardの見分け方

Trojan:Password、TLS、SNIを重点的に確認

Trojanの主要な認証値は通常Passwordで、TLSと組み合わせて使われることが多くあります。SNIまたはServer Nameは証明書に対応するホスト名を指定します。接続に使うAddressと同じ場合もあれば、設定元で別に指定される場合もあります。証明書名を誤ると、ポートにアクセスできても接続がハンドシェイクで止まることがあります。

Hysteria2:QUICベースのためUDP到達性に注意

Hysteria2は通常QUICを基盤として動作します。接続先はAddressとPortで指定し、認証情報はPasswordとして提供されることが多くあります。設定にはSNI、Obfuscationの種類、Obfuscation Passwordが含まれる場合もあります。UDP通信に依存するため、テスト結果は利用中のネットワークが対象UDPポートを通過させられるかどうかに左右されます。Wi-Fiとモバイルデータ通信で結果が異なっても、必ずしもパラメータが変わったことを意味しません。

WireGuard:InterfaceとPeerの2組に分けて理解する

WireGuardは、前述のユーザー名やパスワードを使うプロトコルとは項目構成が異なります。パラメータは2組に分けて考えられます。ローカルのInterface側にはPrivate KeyとAddress、リモートのPeer側にはPublic Key、Endpoint、Allowed IPsがあります。Endpointは通常、ホスト名またはIPアドレスとポートで構成されます。Allowed IPsはそのPeerに渡す宛先範囲を決めるもので、ShadowrocketのDOMAIN-SUFFIXルールとは別のものです。

結論:まず認証項目から設定構造を見分ける

PasswordはShadowsocks、Trojan、Hysteria2でよく使われ、UUIDはVMessとVLESSでよく使われます。Private KeyとPeerのPublic KeyはWireGuardを示します。認証項目は照合の手がかりにすぎず、最終的なTypeは元の設定表記を基準にしてください。

Transport、TLS、ポートを混同してはいけない理由

プロトコルは認証とデータのカプセル化方式を定め、Transportはデータの運び方を決めます。TLSは該当する場面で暗号化ハンドシェイクとサーバー情報を扱います。3つは組み合わせられるため、同じVLESSでもTransportが異なる場合があり、同じWebSocketが異なるプロトコル項目に現れる場合もあります。Add Serverに追加項目が表示されたら、サービス提供元の完全なパラメータと照合してください。プロトコル名を確認しただけで入力を終えないでください。

WebSocketのPathは通常/で始まり、Hostはハンドシェイク要求のホスト項目です。gRPCではService Name、TLSではSNIがよく使われます。どれも文字列に見えますが、送信される場所は異なります。Service NameをPathに入れたり、AddressをそのままSNIに入れたりする設定は、元の情報がたまたま一致する場合にしか成立しません。

設定項目 解決する問題 入力を誤ったときによくある症状
Port サーバー側の待ち受け先を特定する タイムアウト、接続拒否、または無関係なサービスに接続される。
Transport TCP、WebSocket、gRPC、QUICなどのTransportを確認する ポートには到達するが、プロトコルのハンドシェイクを完了できない。
Path / Service Name 対応するWebSocketパスまたはgRPCサービスを特定する 接続がすぐ切断され、サーバー側で接続先を判別できない。
TLS / SNI TLSを確立し、サーバー名を一致させる 証明書名が一致しない、またはハンドシェイクに失敗する。
UDP Hysteria2、WireGuardなどの関連通信を運ぶ 同じパラメータでも、接続するネットワークによって結果が異なる。

プロトコル接続とGlobal Routingは別の機能

サーバープロトコルは接続を確立し、Global Routingは接続後のトラフィック処理を決めます。Configは現在のルール設定を読み込みます。Proxyは選択したサーバーをすべてのトラフィックに使い、Directは宛先へ直接接続します。Sceneはシーン設定に従って処理します。サーバー項目のテストに成功しても、現在のGlobal Routingがすべてのリクエストをその項目に通すとは限りません。

Configでは、Shadowrocketがルールを上から順に照合します。よく使われるキーワードにはDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALがあります。前にある具体的なルールが先に一致し、FINALはそれまでに一致しなかったリクエストを処理します。以下はルール構文の例だけを示したもので、ドメインとアドレスは文書用の例です。

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

Config

おすすめ

Configのルールを上から順に照合し、宛先ごとにProxyやDirectなどの処理を割り当てます。

適したケース:確認済みのルール設定があり、宛先ごとに日常的な分流を行う場合

Proxy

現在選択しているサーバーをすべての通信に使い、ルールが一致していないことによる障害かどうかを確認できます。

適したケース:ルールによる分流の影響を一時的に除外したい場合

Direct

リクエストを宛先へ直接接続し、選択したサーバーは転送に使いません。

適したケース:ローカルネットワークから宛先へ直接アクセスできるか確認する場合

Scene

設定済みのネットワークシーンに応じて処理を切り替えます。結果は保存されているSceneの条件によって異なります。

適したケース:ネットワーク環境ごとの設定を明確に分けている場合

結論:プロトコルをテストするときは、まずルーティング方式を固定する

新しいサーバーを調べるときは、まず現在のGlobal Routingを記録し、Proxyで項目自体を確認します。項目が使えることを確認したらConfigに戻し、DOMAIN-SUFFIX、IP-CIDR、FINALの照合順序を確認します。

接続に失敗したら、項目の階層ごとに確認する

エラーの種類によって確認を始める場所は異なります。Connectivity Testですぐにタイムアウトする場合は、Address、Port、現在のネットワークからの到達性を確認します。すぐに失敗するもののポートには応答があるように見える場合は、Type、Password、UUID、Method、Transportを確認します。TLSハンドシェイクに関する問題では、SNI、端末の時刻、証明書との対応関係を重点的に確認します。一度に複数の項目を変更すると、どの修正が結果につながったのか判断できません。

  1. Typeを確認する

    Add Serverの編集画面に戻り、Typeが元の設定に明記されたShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardのいずれかと一致していることを確認します。

  2. アドレスとポートを確認する

    Addressから余分なプロトコルの接頭辞、パス、空白を取り除き、Portがブラウザや入力システムによって書き換えられていないことを確認します。

  3. 認証情報を確認する

    Password、UUID、Method、Private Key、Public Keyを1文字ずつ照合し、特に大文字・小文字とハイフンを確認します。

  4. Transportとセキュリティを確認する

    Transport、Host、Path、Service Name、TLS、SNI、Flow、Reality関連の値を続けて照合します。

  5. ルーティングを固定してテストする

    元の設定を記録したうえで、Global Routingを一時的にProxyに設定し、Connectivity Testでルール分流による違いかどうかを確認します。完了後は元の方式に戻します。

  6. On Demandを確認する

    Settings → On Demandを開き、現在のWi-Fiまたはモバイルデータ通信で自動的に接続、切断、切り替えを行う条件が設定されていないか確認します。

ポートが443の場合、TrojanとVLESSのどちらを選ぶべき?

ポート番号だけでは選べません。サービス提供元のパラメータ表に戻り、プロトコル名とPasswordやUUIDなどの認証項目を確認します。Typeが明記されていない場合は、元の設定提供元に確認してください。

サブスクリプションを読み込んだら、なぜ複数のプロトコルがある?

1つのサブスクリプションから、異なるTypeのサーバー項目が作成されることがあります。各項目を開いてタイプを確認し、すべてを同じプロトコルに手動変更しないでください。更新時も元のSubscribeの提供元から読み込みます。

Connectivity Testは成功したのに、リクエストがサーバーを経由しないのはなぜ?

Homeでその項目が選択されているか確認し、Global RoutingがDirectになっていないか確認します。Configを使っている場合は、対象がDOMAIN-SUFFIX、GEOIP、IP-CIDRのルールによってDirectに割り当てられていないかも確認します。

別のネットワークに切り替えたらHysteria2に接続できないのはなぜ?

まず、そのネットワークで設定されたポートのUDP通信が許可されているか確認し、Address、Port、Password、SNIを照合します。Wi-Fiとモバイルデータ通信で結果が異なる場合は、それぞれのテスト状況を記録して、元のサービス設定提供元に確認してもらいます。

On Demandはいつ有効にすべき?

ネットワーク条件に応じて接続を自動で開始したい場合だけ設定します。場所はSettings → On Demandです。プロトコルパラメータを初めて確認するときは、手動テストへの干渉を避けるため、現在の状態を明確にしておきます。

入手先と利用上の注意

ShadowrocketはAppleプラットフォーム向けのクローズドソースの商用アプリで、主にiPhoneとiPadで使用します。Mac、Apple TV、Apple Visionでの利用可否はApp Storeの互換性欄を確認し、システム要件はApp Storeページの記載に従ってください。入手先はApp Storeのみです。正規の製品ページに表示される開発者はShadow Launch Technology Limited、アプリIDは932747118で、購入方式は買い切りです。

アプリの購入に回線サービスは含まれません。この記事では、ユーザー自身が入手したサービス提供元のパラメータをShadowrocketに対応させる方法だけを説明します。回線サービス、サーバー、サブスクリプションの提供や推奨は行いません。サブスクリプション更新後に項目が変わった場合は、自分の設定提供元を基準にし、古い項目のPassword、UUID、SNI、鍵を新しい項目へコピーしないでください。

ShadowrocketをApp Storeでダウンロード