Shadowrocketは、複数のプロキシおよびトンネルプロトコルに対応しています。ただし、クライアント側で1台のサーバーを任意の別プロトコルに切り替えることはできません。利用中のサービスと設定情報があり、手動追加やインポート内容の確認を行う方向けに、プロトコルとトランスポートを見分け、アドレス、ポート、認証情報、TLS設定を順に確認する方法を解説します。最後にConnectivity Testと実際のWebアクセスで接続を検証します。
1. 対応プロトコル:プロトコル・トランスポート・ルーティングを区別する
この記事では、Shadowsocks、VMess、VLESS、Trojan、HTTP、SOCKS5、WireGuard、Hysteria2を取り上げます。それぞれ用途が異なり、プロキシプロトコルもあれば暗号化トンネルもあります。また、同じプロキシプロトコルでも異なるトランスポート方式を使う場合があります。追加時は名前、ポート、想定速度から判断せず、手元の設定に合わせてTypeを選択してください。
プロトコルの種類とGlobal Routingは別々の設定です。前者はサーバーへの接続方法を決め、後者はリクエストをプロキシ経由にするか直接接続にするかを決めます。プロトコルが正しくてもルーティングがDirectなら、対象のリクエストは選択中のサーバーを経由しません。ルールが正しくてもサーバー認証に失敗すれば、プロキシ接続は確立できません。
| プロトコル | トランスポートとセキュリティ上の注意点 | 追加前に用意する設定情報 |
|---|---|---|
| Shadowsocks | 設定で指定された暗号化方式を使用します。TCPとUDPの利用可否は接続する両側の対応状況によります。 | サーバーアドレス、ポート、Password、Method、および設定で指定された追加パラメーター。 |
| VMess | 認証情報とトランスポートは別々に設定します。WebSocketやTLSなどのオプションが関係する場合があります。 | アドレス、ポート、UUID、暗号化オプション、トランスポート設定。 |
| VLESS | プロトコル自体はデータを暗号化しません。安全性は設定で使用するセキュリティ層に左右されます。 | アドレス、ポート、UUID、およびサーバーが求めるTLS、トランスポート、Flowなどの設定。 |
| Trojan | 通常、TLS接続内でプロキシデータを転送し、認証にはパスワードを使用します。 | アドレス、ポート、Password、TLSサーバー名、および関連するトランスポート設定。 |
| HTTP / SOCKS5 | 基本的なプロキシプロトコルです。名称だけで接続が暗号化されているとは限りません。 | アドレス、ポート、およびサーバーが求めるユーザー名、パスワード、安全な接続の設定。 |
| WireGuard | UDPベースの暗号化IPトンネルです。一般的なユーザー名認証ではなく、鍵を使用します。 | ローカルの秘密鍵、トンネルアドレス、接続先の公開鍵、Endpoint、およびルーティング設定。 |
| Hysteria2 | QUICベースで、下位層にUDPを使用します。TLSの検証も関係します。 | アドレス、ポート、認証情報、SNI、および設定で指定された難読化パラメーター。 |
要点:設定情報をすべて確認してから接続をテスト
「アドレスとポート」が分かっていても、設定がすべてそろっているとは限りません。利用中の設定情報を確認し、Type、認証方式、トランスポートを照合してください。UUID、鍵、TLSサーバー名が不足している場合、別の項目で代用しないでください。
2. Shadowsocks、VMess、VLESS、Trojanの入力項目の違い
これら4種類はインポートした設定によく含まれますが、認証情報は相互に置き換えられません。ShadowsocksのPasswordはVMessやVLESSのUUIDとは異なり、TrojanのPasswordにサーバードメインを入力することもできません。既存の項目を編集するときは元の設定を残し、変更する項目を一つずつ確認してください。複数の設定を同時に変えると、接続に失敗した原因を特定しにくくなります。
- Shadowsocks:Methodはサーバー側の設定と一致させます。たとえば、設定で
aes-128-gcmが指定されている場合、「セキュリティを高める」目的で別の方式に変更しないでください。元の設定にプラグインや難読化オプションが含まれる場合は、それらも確認します。認証情報が正しくても、トランスポートが合わなければ接続できません。 - VMess:UUIDは認証に使う識別子です。WebSocketを使う場合はPathとHostも一致させ、TLSを有効にする場合はサーバー名も確認します。画面にAlter IDが表示される場合は、古いガイドの数値をそのまま使わず、設定情報に従って入力してください。
- VLESS:UUIDを確認したら、セキュリティ層、トランスポート方式、Flowも確認します。該当項目は設定で明示的に指定されている場合のみ入力してください。VLESS自体は暗号化しないからといって、既存の設定で有効になっているTLSを無効にしないでください。
- Trojan:まずPasswordを確認し、次にTLSサーバー名と証明書の検証設定を確認します。接続先がIPアドレスでも証明書がドメイン名に対して発行されている場合、指定されたドメインをSNIに設定する必要があります。IPアドレスを証明書名として扱わないでください。
一部の追加項目はType、トランスポート設定、プラットフォームの画面によって異なります。手元の設定で明示されている項目だけを入力してください。項目が表示されない場合は、メモやパスワード欄に貼り付けず、先に関連する設定項目を確認します。証明書の検証に失敗した場合は、デバイスの時刻、サーバー名、証明書チェーンを確認してください。検証を無効にする方法を常用しないでください。
3. HTTP、SOCKS5、WireGuard、Hysteria2の見分け方
HTTPとSOCKS5は、既存のプロキシエンドポイントの機能に合わせて使用します。HTTPプロキシはCONNECTでトンネルを確立できますが、それだけでクライアントからプロキシサーバーまでの通信が暗号化されるわけではありません。SOCKS5のUDP機能を利用するには、クライアントとサーバーの双方が対応している必要があります。TypeがSOCKS5というだけで、すべてのUDPリクエストが使えるとは限りません。
WireGuardとHysteria2は、どちらも下位層でUDPを利用しますが、用途と認証方式は異なります。WireGuardはIPトンネル、Hysteria2はQUIC上でプロキシ通信を行うプロトコルです。ネットワークでTCPが使えてもUDPが使えるとは限りません。他のプロトコルで接続できる場合でも、これら2種類がネットワーク制限を受ける可能性があります。
| 確認項目 | 確認する内容 | 間違えやすい点 |
|---|---|---|
| HTTP / SOCKS5 | サーバーがUsernameとPasswordを要求するか確認します。プロキシエンドポイントへの接続に別途TLSが必要かも確認してください。 | WebサイトがHTTPSでも、プロキシエンドポイント自体がTLSを使用するとは限りません。ユーザー名とパスワードを取り違えないでください。 |
| WireGuardの鍵 | Private Keyはローカル側、Peer Public Keyは接続先側の鍵です。Preshared Keyが指定されている場合は、その値も一致させます。 | ローカル側の公開鍵をローカル側の秘密鍵として入力したり、一般的なパスワードで鍵を代用したりしないでください。 |
| WireGuardのアドレスとルーティング | トンネルのAddress、Endpoint、Allowed IPsを確認します。0.0.0.0/0はすべてのIPv4アドレス範囲を示します。 | Addressはトンネル内のアドレスであり、サーバーのグローバルIPアドレスではありません。Allowed IPsはWebサイトのドメイン一覧ではありません。 |
| Hysteria2 | 認証情報、UDPポート、SNI、証明書検証を確認し、元の設定で難読化が必要かも確認します。 | Typeを変更するだけでHysteriaとHysteria2を切り替えることはできません。難読化用パスワードと認証用パスワードも、必ず同じとは限りません。 |
WireGuardのAllowed IPsはトンネル層の設定で、ShadowrocketのConfigで使用するドメインベースのルールとは異なります。Hysteria2の実際の通信状況は、UDPの到達性、パケットロス、サーバー負荷、設定内容などに左右されます。プロトコル名だけで速度を判断したり、測定せずに過大な帯域幅を設定したりしないでください。
4. Add Serverで追加して接続を確認する:4ステップ
ここではHome、Config、Settingsの画面を例に説明します。手動で追加する前に、必要な設定情報をすべて用意してください。すでにサブスクリプションや設定一式がある場合は、元のインポート内容を残したうえで編集画面から確認することをおすすめします。この記事では手元にある設定の使い方を説明します。接続先の提供や推奨は行いません。
-
Typeを選択
Homeを開き、右上の「+」からAdd Serverを選択します。Typeでは元の設定と同じプロトコルを選んでください。ポートが443という理由だけで、同じTypeを選ばないようにします。
-
認証情報を入力
サーバーのアドレスとポートを入力し、Typeに応じてPassword、UUID、または鍵を設定します。ポートには元の設定で指定された数字だけを入力し、プロトコルの接頭辞は付けません。認証情報をコピーした後、前後の空白や改行がないか確認してください。
-
トランスポートを確認
元の設定に従ってTLS、SNI、WebSocketのHostやPathなどを設定します。WireGuardではトンネルと接続先の設定を確認してください。保存後にHomeへ戻り、対象サーバーをデフォルトとして選択します。選択マークが正しい項目に付いていることも確認してください。
-
接続を確認
Home → Global Routingで一時的にProxyを選択し、接続スイッチをオンにしてConnectivity Testを実行します。その後、接続できることが分かっているHTTPSページにアクセスしてください。確認が終わったら、元のConfigまたはSceneに戻し、実際のリクエストも再確認します。
Connectivity Testの結果から分かるのは、テスト対象への接続状況です。すべてのアプリやすべてのプロトコルの通信が正常である証明にはなりません。テストに成功しても特定のアプリが使えない場合は、そのアプリがTCPとUDPのどちらを使うか、リクエストが想定したポリシーに一致しているか、DNSで有効な結果が得られているかを確認してください。
5. サブスクリプション、設定ファイル、プロトコルの役割
サブスクリプションは主に、既存サーバー情報のインポートや更新に使います。Configの設定ファイルは、主にルーティングと関連設定を保持します。サブスクリプションの更新後、項目のアドレス、認証情報、トランスポート設定が変わる場合があります。サブスクリプション管理の項目を、変わらない手動コピーとして扱わないでください。試しに変更する場合は、比較できるよう元の情報を保存しておきます。
- 既存のサブスクリプションを追加:Home → 「+」 → Type → Subscribeの順に開き、自分のサブスクリプションURLを入力して保存します。Homeに戻り、該当するサブスクリプションを更新してください。サブスクリプションURLは機密情報です。公開スクリーンショットやログに含めないでください。
- 更新内容を確認:想定した項目が追加されたかを確認し、各項目を開いてTypeとトランスポート設定を確認します。サブスクリプションのダウンロードに成功しても、現在のネットワークからすべてのサーバーに接続できるとは限りません。
- 通常のルーティングに戻す:Global RoutingのProxyはすべての通信をプロキシ経由にする切り分けに、Directは直接接続に使います。Configは選択中の設定に従い、Sceneは設定したシーンに従って動作します。診断後は通常の使用方法に戻してください。
- ルールを確認:ConfigモードではDOMAIN-SUFFIX、GEOIP、IP-CIDRなどのルールと、最後に適用されるFINALを順に確認します。ルールは適用するポリシーを選ぶもので、VLESSをTrojanに変換したり、WireGuardの鍵を変更したりするものではありません。
以下はルールの順序を理解するための断片です。完全な設定ではなく、サーバー情報も含みません。PROXYには、該当する設定で使用可能なプロキシポリシーが必要です。IP-CIDRにはドキュメント用の例示ネットワークを使用しているため、実際の通信ルールとしてそのまま使わないでください。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
ルールは通常、上から順に照合されます。対象のドメインが先にDIRECTに一致すると、そのリクエストが後続のFINALによってプロキシに振り分けられることはありません。一時的にProxyを選ぶとアクセスできるのに、Configに戻すと失敗する場合は、サーバーの認証情報をすぐに入力し直すのではなく、ルールの一致先と選択中のポリシーを確認してください。
6. よくある質問:失敗する箇所から原因を絞り込む
アドレスもパスワードも同じなのに、Typeを変えると接続できないのはなぜですか?
Typeによってハンドシェイクと認証の形式が決まります。同じアドレス、同じポートでも、サーバーが複数のプロトコルに対応しているとは限りません。Homeからサーバーを編集し、元の設定と同じTypeに戻してからPasswordまたはUUIDを確認してください。速度を上げる目的でTypeを変更しないでください。
VMessやVLESSがタイムアウトするときは、まず何を確認すればよいですか?
まずHomeでAddress、Port、UUIDを確認し、次にトランスポート方式を確認します。WebSocketを使用している場合はHostとPath、TLSを使用している場合はSNIとデバイスの時刻を確認してください。一度に変更するのは一つの設定グループだけにして、変更ごとにConnectivity Testを実行します。接続タイムアウトと、明示的な認証エラーや証明書エラーを区別してください。
Hysteria2がWi-Fiでは失敗し、モバイル回線では接続できるのはなぜですか?
サーバーと設定を変えずにネットワークだけを切り替えて、同じテストを行います。差が一貫して見られる場合は、接続できないネットワークでUDPポートが制限されていないか、接続ログのどこでタイムアウトしているかを確認してください。先にパスワードを変更しないでください。手元にある別の接続可能な項目を比較に使っても、UDP経路が正常だとは断定できません。
テストに成功したのに、Webページが開かないのはなぜですか?
まずHomeで、テストしたサーバーが選択されていることを確認し、Global RoutingがDirectになっていないか確認してください。一時的にProxyに切り替えて再テストします。アクセスが回復した場合は、Configのルールとポリシーを確認してください。改善しない場合は、DNS、TLSエラー、対象サイトへの到達性を確認します。一度のテスト成功を、すべてのリクエストが成功する証拠と考えないでください。
トラブルシューティングの記録には、プロトコルの種類、ネットワークの種類、発生した現象、具体的なエラー情報を残してください。記録を共有する前に、サブスクリプションURL、パスワード、UUID、秘密鍵を削除し、項目の関係を説明するときは項目名だけを記載します。これにより、トランスポート、認証、ルーティングのどの段階で問題が発生したかを特定しやすくなり、同じ設定を何度も作り直す必要もなくなります。