Shadowrocketで使うプロトコルは、利用中のサーバー設定と一致している必要があります。Typeを変更しても、接続方式が別のプロトコルに変わるわけではありません。接続情報やサブスクリプションをすでにお持ちで、Add Serverの各項目を理解したい方向けに、プロトコル・通信方式・TLSの違い、各プロトコルで必要な情報、設定・ネットワーク・ルールのどこに問題があるかを順を追って解説します。
1. プロトコル・通信方式・ルールの違い
Shadowrocketは複数の接続プロトコルに対応していますが、どのようなパラメータの組み合わせでも使えるわけではありません。サーバーが該当プロトコルを提供していることに加え、入力するアドレス、ポート、認証情報、通信オプションも一致している必要があります。この記事では、ご自身で利用中のサービスやサブスクリプションがあることを前提に、アプリの設定項目を解説します。接続サービスの提供・販売・推奨は行いません。
Home → 右上の「+」→ Add Serverを開き、Typeで接続プロトコルを選びます。TLSやWebSocketなどは接続を構成する別の要素で、Typeとは区別して考えます。以下では「認証方法」「通信方法」「どのリクエストに接続を使うか」の3つに分けて説明します。
| 項目 | 主な設定 | 確認する内容 |
|---|---|---|
| プロトコル・認証 | Shadowsocks、VMess、VLESS、Trojan | Type、PasswordまたはUUID、プロトコル固有の追加項目 |
| 通信方式・セキュリティ | TCP、UDP、TLS、WebSocket、QUIC | サーバー側の通信方式、証明書名、パスなどの設定 |
| 通信の振り分け | Global Routing、Configのルール | リクエストの接続先がDIRECT、プロキシ、REJECTのどれになるか |
たとえば、ポートが443だからといって、該当項目がTrojanやTLSを使っているとは限りません。ポートはサーバーが接続を待ち受ける場所です。8443がTLS用に使われる場合もあります。ポートからプロトコルを推測せず、手元の設定情報どおりに入力してください。以下では設定項目を見分けやすいよう、英語表記を使用します。実際に表示される項目や選べる組み合わせは、アプリ内の表示をご確認ください。
2. Shadowsocks・VMess・VLESS・Trojanの設定項目の違い
この4種類は、アドレスが同じという理由で互換性があると誤解されがちです。同じドメインで異なるサービスを提供することもあり、アドレスが正しくても認証や後続の通信が成功するとは限りません。まずType、次に認証情報、最後に通信オプションを確認すると、関係のない項目を何度も変更せずに済みます。
| プロトコル | 主な特徴 | Add Serverで確認する項目 |
|---|---|---|
| Shadowsocks | 指定の暗号化方式とパスワードでプロキシ接続を確立します。TCP・UDPを利用できるかは、設定とサーバー側の対応状況によります。 | Address、Port、Method、Password。既存の設定にobfuscationなどの追加項目があれば、それらも一致させます。 |
| VMess | UUIDなどで認証し、サーバー側の設定に応じて異なる通信方式を組み合わせます。 | Address、Port、UUID、暗号化オプションに加え、既存設定で指定されているTLSやWebSocketなどの項目。 |
| VLESS | UUIDで認証します。プロトコル自体は通信内容を暗号化しないため、セキュリティは実際の通信設定とあわせて確認してください。 | Address、Port、UUIDに加え、サーバー側で指定されたTLS、通信方式、その他の拡張パラメータ。 |
| Trojan | 通常はTLS接続でパスワード認証を行います。証明書名と接続先アドレスが異なる場合があります。 | Address、Port、Password、TLS関連の設定。特にサーバー側で指定されたSNIを確認します。 |
UUID・Password・TLSは互いに代用できない
- Shadowsocks:MethodとPasswordはセットで確認します。Passwordだけをコピーし、別の項目のMethodをそのまま使うと、通信できない場合があります。
- VMessとVLESS:どちらもUUIDを使う場合がありますが、Typeは互換ではありません。既存設定でWebSocketが指定されている場合は、TLSを有効にするだけでなく、パスとHostも確認してください。
- Trojan:Passwordが正しくても、SNIが違うとTLSの段階で接続に失敗することがあります。サーバーから案内されたドメインと証明書情報を確認し、証明書の検証を無効にする方法を通常の対処として使わないでください。
- TLS:接続先アドレスはサーバーの特定に使い、SNIはTLSハンドシェイクでサーバー名を通知します。同じ値の場合もあれば、既存の設定で異なる値が指定されている場合もあります。
要点:プロトコル名だけでなく、設定一式を照合する
接続できない場合は、同じ項目のType、ポート、認証情報、TLS、通信オプションを元の設定と一つずつ照合します。Typeだけを変更したり、別の項目のSNI、Host、パスを組み合わせたりしないでください。
3. HTTP/SOCKS5・WireGuard・Hysteria2の特徴
HTTP/SOCKS5はプロキシプロトコル、WireGuardは鍵認証を使うトンネルプロトコル、Hysteria2はQUICをベースにしたプロトコルです。名称だけでなく、認証情報、下位の通信方式、トラブルの調べ方も異なります。サーバーや利用中のネットワークの条件にかかわらず、常に最速となるプロトコルはありません。
| 種類 | 通信の特徴 | 必要な情報 |
|---|---|---|
| HTTP/SOCKS5 | HTTPプロキシは通常CONNECTでTCPトンネルを確立します。SOCKS5はTCPをネゴシエーションでき、UDPリレーの仕様もありますが、実際に利用できるかは双方の設定によります。 | アドレス、ポート、サーバー側で必要な場合はUsernameとPassword。HTTPプロキシ接続自体でTLSを使うかどうかも別途確認してください。 |
| WireGuard | UDPを使って暗号化トンネルを確立し、鍵で認証します。一般的なアカウント名とパスワードによる認証方式ではありません。 | 自分側のPrivate Key、トンネルアドレス、接続相手のPublic Key、Endpointに加え、設定で指定されたルート範囲やその他の項目。 |
| Hysteria2 | QUICをベースとし、下位の通信にUDPを使用してTLSで保護します。ネットワークで該当するUDP通信が許可されていることが重要です。 | アドレス、ポート、認証情報、SNI。サーバーでobfuscationが有効な場合は、対応する設定も必要です。 |
名称から推測せず、プロトコルの仕組みをもとに確認する
- HTTP/SOCKS5:サーバーで認証が必要な場合、UsernameとPasswordを空欄にしないでください。SOCKS5でUDPが使えるかは名称だけでは判断できず、サーバーとクライアントの双方が対応している必要があります。
- WireGuard:自分側のPrivate Keyを接続相手のPublic Key欄に入力しないでください。トンネルアドレスはサーバーアドレスではありません。接続相手はEndpointのホスト名とポートで指定します。
- Hysteria2:通常のWebページにTCPで接続できても、UDPが使えるとは限りません。利用中のネットワークでUDPが制限されている場合、Passwordを何度変更しても通信の問題は解決しません。
- 鍵情報の保護:UUID、Password、Private Key、サブスクリプションURLはすべて機密情報として扱ってください。トラブルの記録では、内容を公開せず、各項目が一致しているかだけを確認します。
実際の通信品質は、帯域幅、パケットロス、サーバー負荷、ネットワークポリシーなどに左右されます。同じネットワーク・同じ時間帯・比較可能なサーバー条件で測定しなければ、一度のConnectivity Testの結果からプロトコルの性能は判断できません。レイテンシが低くても、継続的なダウンロード速度が速いとは限りません。
4. Add Serverで接続情報を追加・確認する
既存設定の情報はできるだけ省略せずに使ってください。手動追加は、項目が少なく情報の出所が明確な接続に適しています。サブスクリプションは、すでにお持ちの複数の接続情報を管理する場合に便利です。Subscribeは情報の取り込み・管理に使う項目で、ShadowsocksやTrojanと並ぶ通信プロトコルではありません。サブスクリプション内の各項目には、それぞれのTypeが設定されています。
-
接続情報を準備する
既存の設定からプロトコル、アドレス、ポート、認証情報を確認します。VMessまたはVLESSの場合は、TLS、通信方式、Host、パスに指定値があるかも確認してください。
-
追加画面を開く
Home → 右上の「+」→ Add Server → Typeの順に開き、元の接続情報と一致するプロトコルを選択します。アドレスの名前やポートから種類を推測しないでください。
-
入力して保存する
画面に表示されるAddress、Port、および選んだTypeで必要な項目を入力します。コピーした値の前後に空白が入っていないか確認してください。保存後にHomeへ戻り、新しく追加した項目が選択されていることを確認します。
-
サブスクリプションを設定する
すでにサブスクリプションをお持ちの場合は、Home →「+」→ Type → Subscribeを開き、ご自身のURLを入力して保存します。その後、Homeでサブスクリプションを更新してください。更新するとリモート側の内容で項目が更新されるため、手動で変更した設定は別途記録しておきます。
-
接続を確認する
HomeでConnectivity Testを実行した後、接続を有効にして実際に利用する宛先へアクセスします。テストの完了、接続の確立、宛先へのアクセス可否をそれぞれ記録し、同じ結果として扱わないでください。
5. Global Routingを変更してもプロトコルは変わらない
プロトコルは接続の確立方法を決め、Global Routingはリクエストの経路を決めます。Proxyに切り替えてもShadowsocksがTrojanに変わるわけではなく、Configに切り替えてもUUIDの誤りは直りません。トラブルの切り分けでは、「接続項目が利用できるか」と「宛先が想定したルールに一致するか」を分けて確認してください。
Config:設定に沿って振り分ける
推奨現在のConfigにあるルールに従って、接続先のポリシーを選択します。設定済みでルールも確認済みの場合の日常利用に適しています。最終的な経路は、一致したルールとポリシーの定義で決まるため、「それ以外はすべて直結」とは限りません。
適した用途:ルールを確認したうえで、宛先ごとに振り分けたい場合
Proxy:プロキシ経路をまとめて確認
クライアントが処理するリクエストをプロキシ経路に通し、ルールの一致条件を一時的に切り分けます。切り替え後に宛先へアクセスできる場合は、プロトコルの問題と即断せず、元の設定にあるポリシーとルールを確認してください。
適した用途:振り分けルールやポリシー選択を一時的に調べたい場合
Direct:直結経路を確認
クライアントが処理するリクエストを直結経路に通します。この状態で宛先にアクセスできても、追加したプロキシ項目の認証やデータ通信が正常であることの証明にはなりません。
適した用途:現在のネットワークで直結した場合の状態を比較したい場合
Global RoutingのSceneでは、利用シーンごとに動作を設定できます。結果を確認するときは、実際に適用されているSceneとその設定も確認してください。Settings → On Demandは条件に応じて接続を開始する機能で、プロトコルを別の種類に変換するものではありません。接続が自動的に開始される場合は、この設定を個別に確認してください。
Configモードでルールを確認する
Configで現在使用中の設定を確認します。ルールは通常、上から順に照合され、一致したルールのポリシーが適用されます。FINALは、それ以前のルールに一致しなかったリクエストを処理します。以下はルール記述の例であり、サーバー設定やアプリ画面ではありません。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIXは、指定したドメインのサフィックスとそのサブドメインに一致します。プロトコルの種類を選ぶためのルールではありません。IP-CIDRは宛先IPのアドレス範囲に一致します。例ではドキュメント用のアドレス範囲を使用しています。no-resolveは、このルールのために追加のドメイン名前解決を行わないことを示します。GEOIPは宛先IPの地理情報データをもとに判定します。Webページの言語だけでは、ルールに一致するかどうかを判断できません。PROXY、DIRECT、REJECTは、それぞれプロキシ、直結、拒否を指定するポリシーキーワードです。経路の選択とTypeは、別の設定項目です。
6. プロトコル追加後によくある問題
トラブルを調べるときは、一度に変更する項目の種類を一つに絞り、変更前の値も記録してください。以下ではアプリの操作に沿って説明します。設定を確認せずにプロトコルを変更したり、一度のタイムアウトだけでサーバー側の問題と判断したりしないでください。
同じアドレスなのに、VLESSに変えると接続できないのはなぜ?
Homeに戻って該当項目の編集画面を開き、まずTypeを確認してください。サーバーがVLESSを提供し、対応するUUIDと通信設定が指定されている必要があります。アドレスが同じだけでは接続できません。元の情報がVMessの場合はVMessに戻し、既存の設定を一つずつ確認してください。
TrojanのPasswordが正しいのに接続できないのはなぜ?
項目の編集画面でAddress、Port、TLS関連の設定を確認し、特にSNIが既存の設定と一致しているかを調べます。続いて、デバイスの「設定 → 一般 → 日付と時刻」を確認してください。システム時刻が大きくずれていると、証明書の有効期間の判定に影響することがあります。証明書の検証をすぐに無効にするのは避けてください。
Hysteria2がタイムアウトするのに、通常のWebページは開けるのはなぜ?
まず、利用中のサーバー情報にあるアドレス、UDPポート、認証情報が一致しているか確認します。次に、使用が許可されている別のネットワークでも再テストしてください。通常のWebページにTCPで接続できても、QUICに必要なUDP通信が可能とは限りません。ネットワークごとに症状を記録してください。
サブスクリプションの更新後、手動で修正した設定が元に戻るのはなぜ?
Homeに戻り、更新前後の同じ項目を比較してください。サブスクリプションの更新ではリモート側の内容が再読み込みされるため、元の設定情報がある場所で各項目を確認します。手元で切り分ける必要がある場合は、別の手動項目を作成して差分を記録し、一時的な変更をリモート設定の修正と混同しないようにしてください。
Connectivity Testが成功すれば、設定は正しい?
必ずしもそうとは限りません。まず現在のテスト方法を確認し、接続を有効にして実際の宛先へアクセスしてください。一部の宛先だけ失敗する場合は、Home → Global RoutingとConfigで一致しているルールを確認します。テスト結果だけでは、すべてのプロトコル機能、UDPリレー、すべてのWebサイトへのアクセスが正常とは判断できません。