ShadowrocketはiPhone、iPad、Mac、Windows、Android、Linuxで利用できます。iPhone/iPad版はApp Storeから入手でき、価格は2.99ドルの買い切りです。システム要件はApp Storeの掲載内容をご確認ください。Mac(Appleシリコン/Intel)、Windows、Android、Linux版は無料で、当サイトのダウンロードページから入手できます。この記事では、サービス提供元から設定情報を受け取っている方向けに、プロトコルや設定項目の確認方法、接続トラブルの対処法を説明します。ノードやサブスクリプションの提供・販売・推奨は行っていません。
プロトコル・トランスポート・ルールを区別する
Homeでサーバーを追加するとき、Add ServerのTypeはクライアントと接続先が使用するプロトコルを示します。Shadowsocks、VMess、VLESS、Trojanなどの名称は、認証やデータのカプセル化・送受信方法を決めるもので、サイトの分類や通信速度のランクではありません。受け取った設定に合わせて入力してください。同じアドレスでも、Typeを任意に変更すると接続できなくなることがあります。
トランスポート方式は別の設定項目です。たとえばVMessやVLESSの設定には、WebSocket、gRPC、TLSなどが含まれる場合があります。プロトコル名が分かっても、必要な設定項目がすべてそろっているとは限りません。ルールはリクエストに適用するポリシーを決めるもので、変更してもプロトコルは切り替わりません。
確認の順序:まずType、次にトランスポート設定
ポートが443だからといって、TrojanやTCPとは限りません。まず既存の設定でプロトコル名を確認し、ポート、トランスポート方式、認証情報、TLS設定をそれぞれ照合してください。
Shadowsocks、VMess、VLESS、Trojanの設定項目の違い
この4種類は、主に認証方式と暗号化が行われる層が異なります。表では見分け方と確認項目を紹介します。接続にそのまま使える設定値ではありません。AddressとPortは既存の設定に合わせてください。サーバーポートに443がよく使われる場合でも、独自に変更しないでください。
| Type | 設計上の特徴 | 優先して確認する項目 |
|---|---|---|
| Shadowsocks | 暗号化プロキシプロトコルです。クライアントとサーバーで、互換性のある暗号化方式と鍵情報を使用する必要があります。 | Address、Port、Method、Password、および設定で明示された追加項目。 |
| VMess | UUIDなどを使って認証します。プロトコル自体でデータを保護でき、外側のトランスポートやTLSと組み合わせることもできます。 | UUID、デバイスの時刻、トランスポート方式、TLS、Host、Pathなどの関連項目。 |
| VLESS | 軽量な認証プロトコルで、プロトコル自体はデータを暗号化しません。接続の保護は、実際に組み合わせるセキュリティ層によって異なります。 | UUID、トランスポート方式、TLS、または設定で指定されたセキュリティ項目。UUIDだけでは不十分です。 |
| Trojan | 通常はTLS接続内でパスワード認証を行います。証明書とサーバー名の検証が正しく行われることを確認してください。 | Password、Port、TLS Server Name、およびサーバー証明書に記載された名前。 |
ShadowsocksのMethodは、任意に選べる強度設定ではありません。クライアントとサーバーで一致しない場合、通常は正しく復号できません。VMessのUUIDはサーバーアドレスではありません。コピー時に文字列全体を保ち、デバイスの自動時刻設定を有効にしてください。時刻のずれによる認証失敗を、ルールの問題と取り違えないようにします。
VLESSは「プロトコル自体で暗号化しない」からといって、すべての接続が保護されないわけではありません。実際に組み合わせているセキュリティ層を確認してください。Trojanで証明書エラーが出ても、検証を無効にして回避しないでください。まずデバイスの時刻、Address、TLS Server Nameを確認し、設定内のドメインに対応する有効な証明書があるか調べます。接続先アドレス、TLS Server Name、WebSocket Hostはそれぞれ役割が異なります。常に同じ値とは限らず、互いに置き換えられるものでもありません。
HTTP、SOCKS5、WireGuard、Hysteria2の見分け方
これらの名称は、それぞれ異なるプロキシ方式またはトンネル方式を指します。HTTPやSOCKS5は「機能を弱めた別プロトコル」ではありません。また、WireGuardは任意のプロキシパスワードを入力するTypeでもありません。サーバーのドメイン名だけで判断せず、手元の設定に記載された項目全体を確認してください。
- HTTP:HTTPプロキシやCONNECTトンネルでよく使われ、UsernameとPasswordが必要な場合があります。HTTPプロキシという名称だけでは、クライアントとプロキシサーバー間の通信がTLSで暗号化されるとは限りません。接続先サイトがHTTPSを使用しているかどうかと、プロキシへの接続自体が暗号化されているかどうかは別の話です。
- SOCKS5:汎用プロキシプロトコルで、TCP接続やUDP転送に対応する場合があります。ユーザー名とパスワードは認証情報であり、通信の暗号化を意味するものではありません。UDPが使えるかどうかはサーバーと現在の設定にも左右されるため、Typeだけでは判断できません。
- WireGuard:UDPベースの暗号化トンネルで、鍵のペアとトンネルのネットワーク設定が必要です。Endpoint、クライアントのPrivate Key、接続先のPublic Key、トンネルアドレス、Allowed IPsなどの設定内容を確認してください。アドレスとパスワードだけでは、このトンネルを確立できません。
- Hysteria2:QUICをベースとし、下位の通信にUDPを使用します。認証情報とTLS設定も一致させる必要があります。ネットワークで必要なUDP通信が遮断されている場合、同じホストのTCP 443にアクセスできても、Hysteria2が利用可能とは判断できません。
Hysteria2なら「どんなネットワークでも速い」、WireGuardなら「すべてのリクエストが自動でトンネルを通る」というわけではありません。実際の接続状況は、通信経路の品質、サーバー側の制限、UDPの到達性、ルールの選択に左右されます。名称だけで接続先を選ぶことはできません。手元の設定に記載されたプロトコルとパラメーターを使い、まず接続を再現して検証してください。
Add Serverに既存の設定を入力する
ここではiPhone/iPad版のHomeやAdd Serverに表示される項目名を使って説明します。他のプラットフォームでは画面のレイアウトが異なる場合があります。手動入力する前に、プロトコルの種類、アドレス、ポート、認証情報、トランスポート設定をすべて用意してください。サブスクリプションを利用している場合は、TLSやトランスポート項目を入力し忘れないよう、手動コピーよりもサブスクリプション内の設定をそのまま使うことをおすすめします。
-
サーバー追加画面を開く
Homeを開き、右上の「+」→Add Serverの順に進みます。まずTypeを確認し、手元の設定に合わせてShadowsocks、VMess、VLESS、Trojanなどを選んでください。名称から推測して選ばないようにします。
-
基本項目を入力する
AddressとPortを入力し、プロトコルに必要なPassword、UUID、鍵情報などを設定します。ポートは元の設定値を使い、すべての項目を443に変更しないでください。
-
追加項目を確認する
TLS、Server Name、トランスポート方式、Host、Pathなど、実際に表示される項目を確認します。Pathの先頭のスラッシュや大文字・小文字は元の設定に合わせてください。設定にない項目を推測で追加しないでください。
-
保存して接続を確認する
保存後にHomeへ戻り、該当項目を選んで接続を開始します。テスト対象、現在のGlobal Routing、表示されたエラーを記録したうえで、Webページへのリクエストも確認してください。遅延の数値だけで、すべての機能が正常だと判断しないようにします。
サブスクリプションを読み込むには、Home →「+」→ Type → Subscribeの順に進み、既存のサブスクリプションURLを入力して保存します。その後、Homeで該当するサブスクリプションを更新します。サブスクリプションは設定一式を取得する方法であり、VMessやVLESSと並ぶ通信プロトコルではありません。更新後も各項目には個別のTypeがあります。サブスクリプションの更新失敗と、保存済み項目の接続失敗は分けて調べてください。
- サブスクリプションURLと認証情報は機密情報として扱ってください。問い合わせの際はtoken、Password、Private Keyなどを伏せてください。
- 更新後に項目が変わった場合は、まず元の設定説明と照合してください。項目名だけでプロトコルを判断しないでください。
- 共有リンクの接頭辞は識別の手がかりになりますが、読み込み後のTypeと設定全体を確認する代わりにはなりません。
プロトコルを確認したら、Global Routingをチェックする
HomeのGlobal Routingは、リクエストに適用するポリシーを決定します。Configでは設定ファイルを管理し、Settingsではアプリの設定を管理します。プロトコルはサーバーとの接続を確立し、ルーティングモードはその接続を使うリクエストを決めます。両者は分けて確認してください。以下ではShadowrocketのルーティング設定を比較します。プロトコルの速度比較ではありません。
Config:設定に基づいて処理する
おすすめ現在の設定ファイル内のルールに基づいてポリシーを決定します。まずConfigで選択中のファイルを確認し、ルールの順序と最終ポリシーをチェックしてください。ここでのおすすめは、既定のルールに基づいて日常の振り分けを検証する方法を指し、特定の接続先を推奨するものではありません。
適した用途:ルールが設定済みで、特定のサイトやその他のリクエストがどこに接続されるか確認するとき。
Proxy:プロキシ経路を確認する
このモードで処理される接続をプロキシ経由にします。一時的な切り替えにより、「サーバー接続の問題」と「ルールが一致していない問題」を切り分けられます。テスト後は元のモードに戻し、一時的な診断設定を最終的な振り分け設定として使わないでください。
適した用途:Configでは同じ接続先にアクセスできず、プロキシ経路が利用可能か比較したいとき。
Direct:直接接続を確認する
このモードで処理される接続を直接行います。この状態でWebページが開いても、プロキシプロトコルの接続が検証できたことにはなりません。確認できるのは該当する直接接続の結果だけです。
適した用途:基本的なネットワーク状態や直接接続を確認するとき。プロキシ認証の成功確認には使えません。
Global RoutingにSceneが表示される場合は、シーンに応じた設定が適用されます。確認時は、現在該当しているシーンとそのルーティング設定も調べてください。SceneはProxyの別名ではありません。Settings → On Demandでは、オンデマンド接続の条件を管理します。これはプロトコル設定ではありません。診断時は接続の開始・停止に影響しているかを記録し、ネットワーク切り替え後にテスト条件が変わっていないか確認してください。
たとえば、次のルールはDOMAIN-SUFFIXでサンプルドメインを照合し、一致しないリクエストをFINALで処理します。ここでのPROXYは、現在の設定内で有効なプロキシポリシーに対応している必要があります。ルールだけではサーバーは作成されず、各プロトコルの認証情報も補われません。
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIXはドメインのサフィックスを照合します。リクエストで使われるドメインが、実際にそのサフィックスに該当するか確認してください。IP-CIDRはIPアドレスの範囲で照合し、GEOIPはIP地理データベースの結果で照合します。どちらもプロキシプロトコルではありません。FINALはフォールバックルールです。前に広範囲に一致するルールがあると、後続の詳細なルールが適用されない場合があります。
よくある質問:症状を確認し、安易にプロトコルを変更しない
以下はトラブルシューティングの手順であり、実機での検証結果ではありません。一度に変更する項目は1つにし、エラーが名前解決、接続、TLS、認証、ルール選択のどの段階で発生するか記録してください。記録せずType、ポート、ルールを次々と変更すると、前後の結果を比較できなくなります。
同じアドレスのままVMessをVLESSに変更できますか?
Add Server → Typeを切り替えて、すべての設定項目をそのまま使うことはできません。サーバー側に対応するプロトコルの接続先が必要です。既存の設定でType、Port、UUID、トランスポート方式、セキュリティ設定を確認し、項目を分けて保存してテストしてください。
Trojanで証明書エラーが出たら、検証を無効にすればよいですか?
まずデバイスの自動時刻設定を確認し、Add ServerのAddress、Port、TLS Server Nameを照合して、有効な証明書がその名前に対応していることを確認してください。証明書の検証は有効のままにし、設定または証明書の問題を修正してから再試行します。
TCPのテストは成功するのに、Hysteria2がタイムアウトするのはなぜですか?
Hysteria2にはUDP経路が必要です。まず設定されているUDPポートと認証情報を確認し、該当するUDP通信が許可されたネットワークでテストしてください。TCPのテストに成功しても、QUICハンドシェイクの成功を確認したことにはなりません。
遅延の数値は表示されるのにWebページが開かない場合、最初に何を確認しますか?
まずHome → Global Routingでモードを確認し、選択中の項目も確認してください。ProxyではアクセスできてConfigでは失敗する場合、Config内の一致ルール、DNS、ポリシーを優先して確認します。遅延が表示されても、対象サイトへのリクエスト全体が成功したとは限りません。
サブスクリプションの更新に失敗したら、すべての項目を作り直す必要がありますか?
まず「サブスクリプションURLの取得失敗」と「保存済み項目の接続失敗」を区別します。Homeで元のサブスクリプションを更新してエラーを記録し、URLの有効期限とネットワークの到達性を確認してください。既存の項目をテストできる場合は、すべての設定をすぐに削除する必要はありません。
確認後に記録しておく情報
検証後は「このプロトコルは使える」という記録だけでなく、再現に必要な設定の概要を残してください。同じプロトコルでも異なるトランスポート方式を組み合わせられます。また、接続に成功してもルールが想定どおりとは限りません。再確認する際は、同じ接続先とルーティングモードでテストしてください。
- 設定:Type、ポート、トランスポート方式、TLSの有効・無効を記録します。認証情報などの機密情報は公開記録に含めないでください。
- ルーティング:Global Routing、現在のConfig、対象リクエストに適用されるポリシーを記録します。
- ネットワーク:Wi-Fiかモバイル通信か、問題がUDP経路でのみ発生するかを記録します。
- 結果:具体的なエラーメッセージと失敗段階を記録し、「速い」「遅い」「つながる」といった表現だけで済ませないでください。
設定項目の意味を詳しく確認するにはプロトコルガイドを、DOMAIN-SUFFIXやIP-CIDRなどのキーワードを調べるには用語クイックガイドをご覧ください。既存の設定を正確に入力してから、ルールに基づくリクエストの振り分けを確認する。この順序を守れば、複数のプロトコルを使う設定も繰り返し確認できます。