この記事の要点

Shadowrocketは複数のプロキシ・トンネルプロトコルに対応していますが、アプリが対応していてもサーバー側で利用できるとは限りません。すでにサービス提供元とサブスクリプションがあり、設定を読み込む、または手動入力する方に向けて、まず一覧でプロトコルを確認し、認証・トランスポート・TLSを照合します。さらにプロトコルの種類とGlobal Routingを切り分け、接続失敗を「プロトコルが遅い」と早合点しないためのポイントを解説します。

1分で確認:プロトコル別の設定項目

ShadowrocketのAdd Serverから接続設定を追加できます。Shadowsocks、VMess、VLESS、Trojan、HTTP/SOCKS5、WireGuard、Hysteria2では入力項目が異なります。まずTypeを確認し、アドレスと認証情報を入力してください。サブスクリプションを利用する場合はサービス提供元から入手し、ポート番号だけでプロトコルを推測しないようにしましょう。

プロトコル仕組み優先して確認する項目
Shadowsocksパスワードと指定された暗号化方式でプロキシ接続を確立アドレス、ポート、Password、暗号化方式
VMessUUIDで認証し、独自のデータ保護機能を備えるUUID、暗号化設定、トランスポート方式、TLS
VLESSUUIDで認証し、プロトコル自体はデータを暗号化しないUUID、トランスポート方式、TLS、サーバー側が要求する追加パラメータ
Trojan通常はTLS経由でプロキシ接続を行い、パスワードで認証Password、TLS、サーバー名、証明書
HTTP/SOCKS5汎用プロキシプロトコル。認証方式はサーバー側の設定によるプロキシの種類、ポート、ユーザー名、パスワード、TLSの要否
WireGuardUDPを利用する暗号化IPトンネル鍵、ピアのエンドポイント、トンネルアドレス、ルーティング設定
Hysteria2QUICベースのプロキシ転送。UDPを利用認証、ポート、TLS、難読化、帯域幅の設定

表は確認する順序を示したもので、対応状況の全項目を網羅したものではありません。各プロトコルの拡張機能を利用できるかは、アプリ内で選択できる項目とサーバー設定の両方を確認してください。どちらもポートが443でも、Trojan、VLESS、Hysteria2など異なるプロトコルが使われている場合があります。ポートは接続先の一要素であり、プロトコルを決めるものではありません。

Shadowsocks・VMess・VLESS:認証と暗号化を混同しない

Shadowsocksでは、クライアントとサーバーで暗号化方式とパスワードを一致させる必要があります。暗号化方式を別のものに変えても、サーバー側に自動で適合するわけではありません。アドレスとポートが正しくても認証に失敗する場合は、方式を何度も切り替えるのではなく、読み込んだ設定とサービス提供元の元の情報を照合してください。

VMessとVLESSはいずれもUUIDを使用しますが、Typeだけを変更して相互に切り替えることはできません。VMessには独自のデータ保護機能があります。一方、VLESS自体はデータを暗号化しないため、実際の接続の安全性は外側のセキュリティ機構によって決まります。UUIDは認証情報であり、TLS証明書ではありません。また、サーバー名の欄に入力するものでもありません。

TrojanとHTTP/SOCKS5:プロキシプロトコルとTLSを区別する

Trojanは通常、TLS接続内で認証とプロキシ転送を行います。設定時はPasswordとTLS関連の項目をあわせて確認してください。パスワードが正しくても、サーバー名が一致しないと、認証前に証明書検証で接続が中断されることがあります。接続先にはドメイン名またはIPアドレスを指定できますが、証明書検証に使うサーバー名はサーバー側の案内に従ってください。

HTTPプロキシとSOCKS5プロキシは、主に接続時のネゴシエーション方法を定めるものです。プロトコル名だけで、プロキシサーバーまでの通信が暗号化されるわけではありません。HTTPプロキシではCONNECTを使ってHTTPS接続先へのトンネルを確立できますが、これは「クライアントからプロキシサーバーまでTLSを使う」こととは別の話です。SOCKS5でユーザー名とパスワードを使えるか、UDP転送に対応するかも、サーバー側の機能によります。

WireGuardとHysteria2:どちらもUDPを使うが、設定項目は異なる

WireGuardはIP層のトンネルで、鍵を使って相手を認証します。ローカルのPrivate Key、ピアのPublic Key、サーバー側で必要な場合に使うPreshared Keyを区別してください。これらの項目は互いに置き換えられません。サーバーのエンドポイントに加え、割り当てられたトンネルアドレスとルーティング設定も確認します。エンドポイントのexample.com:51820は書式の例であり、51820を必ず使うという意味ではありません。

Hysteria2はQUICをベースとし、下位層でUDPを利用してTLSを使用します。認証、サーバー名、任意の難読化設定をサーバー側に合わせてください。帯域幅関連の項目も、実際の回線とサービス提供元の案内に基づいて設定します。大きな数値を入力しても、利用できる帯域幅が増えるわけではありません。

確認項目WireGuardHysteria2
認証方式鍵ペアと任意の事前共有鍵サーバー設定に基づく認証情報
接続の仕組みUDP上の暗号化IPトンネルUDP上のQUIC接続とTLS
よくある設定ミスピアの公開鍵、エンドポイント、トンネルアドレスの不一致認証情報、サーバー名、難読化設定の不一致
ネットワークの制限UDPが遮断されていると正常にハンドシェイクできないUDPが遮断されていると正常なQUIC接続を確立できない

ポイント:まずUDPに到達できるか確認

モバイル回線では使えても、特定のWi-Fiでタイムアウトが続く場合は、プロトコル設定を確認する前に、2つのネットワークでUDPが制限されていないか比較してください。プロトコル名だけで速度を判断したり、帯域幅の値を何度も大きくしたりしないようにしましょう。

設定の読み込みと確認:元の値を保ち、項目ごとにテスト

すでにサブスクリプションがある場合は、サービス提供元が案内する内容をそのまま読み込むのがおすすめです。サブスクリプションにはアドレスやパスワードだけでなく、TLS、トランスポート、プロトコル拡張の設定が含まれる場合があります。手動入力は、単一の接続に必要な項目が明確な場合に適しています。情報が不足しているときは推測で入力せず、先に必要な情報を確認してください。

  1. 設定情報の入手元を確認

    既存のサブスクリプションや個別の接続情報は、サービス提供元から入手してください。プロトコル名、アドレス、ポート、認証方式を確認し、項目ごとに照合できるよう元の情報を保管します。

  2. サブスクリプションを読み込む

    Homeの右上にある「+」をタップしてAdd Serverを開き、TypeをSubscribeに設定します。自分のサブスクリプションURLを入力して保存し、想定した項目が読み込まれているか確認してください。

  3. 設定項目を確認

    手動で追加する場合は、Home → 「+」 → Add Server → Typeの順に進み、実際のプロトコルを選びます。まずアドレス、ポート、認証情報を入力し、次にTLS、トランスポート方式、プロトコル固有の項目を確認してください。

  4. 接続をテスト

    Homeに戻って接続先を選び、接続をオンにして、システムの案内に従って許可します。まず特定の接続先にアクセスできるか試し、エラーの種類を記録してください。設定を変更するときは、一度に1項目だけ変更します。

サブスクリプションを更新すると、サービス提供元が公開している設定を再取得します。「接続先を手動で編集する」操作とは別のものです。更新後に項目が元の値へ戻った場合は、まずサブスクリプションの設定を確認してください。端末上で編集した内容が必ず保持されるとは限りません。サブスクリプションURL内のトークンは認証情報です。ログや設定を共有する前に削除してください。

Global Routingとプロトコル:別々に確認する設定

プロトコルはサーバーへの接続方法を決め、Global Routingはトンネルに入るリクエストの処理方法を決めます。Trojanに変更してもルールによる振り分けが自動で有効になるわけではありません。また、接続先を選んでも、すべてのリクエストがそこを通るとは限りません。トラブル時はHomeの接続先、Global Routingの現在のモード、Configで使用中の設定をそれぞれ確認してください。

Config

推奨

現在の設定にあるルールとポリシーに従ってリクエストを処理します。マッチした結果はPROXY、DIRECT、REJECT、または定義済みのポリシーとなる場合があります。未マッチのリクエストがすべて直接接続になるとは限りません。

おすすめの用途:振り分け設定を確認済みで、普段使いする場合

Proxy

トンネルに入るリクエストをプロキシ経由で処理します。ルールによる振り分けの影響を切り分ける際に使えますが、選択した接続先のプロトコルと認証が正しいことが前提です。

おすすめの用途:プロキシ接続の一時的な確認、ルールの影響の切り分け

Direct

リクエストを直接接続として処理します。この状態でWebページを開けても、選択したプロキシ接続先が有効とは限りません。また、プロトコルで接続できたことの確認にもなりません。

おすすめの用途:ローカルネットワークで直接接続の状態を比較

Global RoutingのSceneはシーンに応じたモードであり、別のプロキシプロトコルではありません。確認時は、現在のシーンで実際に使われている設定を見てください。Settings → On Demandではオンデマンド接続の条件を管理しますが、UUID、パスワード、TLSの設定ミスは修正されません。まず手動で接続を確認し、その後に自動接続の条件を確認すると、接続失敗と接続が開始されない問題を切り分けやすくなります。

[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はIPアドレスの範囲で照合します。GEOIPはIPの地理情報を使用し、FINALはそれ以前のルールに一致しなかったリクエストを処理します。REJECTはリクエストを拒否します。ルールキーワードはリクエストの処理先を決めるもので、プロトコルのハンドシェイクを修復するものではありません。例のドメイン名やドキュメント用IPアドレス範囲は、実在のサービスを示すものではありません。

よくある質問:対応プロトコルなのに接続できないときの確認事項

サーバーアドレスがわかれば、Typeは適当に選んでもいいですか?

いいえ。Home → 「+」 → Add Server → Typeで、サーバー側と同じプロトコルを選択してください。アドレスとポートだけでは設定を再現できません。認証、TLS、トランスポートの各パラメータはサービス提供元から入手してください。

ポートがどちらも443なのに、接続できるものとできないものがあるのはなぜですか?

まずTypeを比較し、次に認証とTLSを確認してください。TCPの443とUDPの443は異なるトランスポートの接続先です。TrojanとHysteria2は同じポート番号でも、同じ設定項目を共用できません。

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

遅延テストの結果からわかるのは、そのテスト方法で応答が得られたことだけです。DNS、認証、接続先へのリクエストがすべて成功したとは限りません。Homeに戻ってGlobal Routingを確認し、接続先ドメインの名前解決と具体的な接続エラーも調べてください。遅延の数値だけでプロトコルが正常だと判断しないようにしましょう。

Shadowrocketを購入すれば、プロトコルの設定情報も付属しますか?

いいえ。アプリの買い切り購入と接続回線の契約は別です。Shadowrocketはクローズドソースの商用アプリです。接続設定と既存のサブスクリプションは、サービス提供元から入手してください。主にiPhone/iPadで利用でき、ほかのAppleデバイスの互換性はApp Storeページで確認できます。システム要件と購入の適用条件は、App Storeページの記載に従ってください。