ShadowrocketのTrojan設定では、利用中のサービスから提供された情報を各項目に正しく入力します。Addressは接続先、Portはポート番号、Passwordは認証情報、SNIはTLSハンドシェイクで通知するサーバー名です。既存の有効な設定を手動で入力・確認したい方向けに、まず各項目を照合し、TLS・認証・ルーティングの問題を切り分けます。ポートをむやみに変更したり、証明書の検証を無効にしたりして解決を試みないでください。
1. Trojan接続におけるTLSとPasswordの役割
一般的なTrojan接続では、まずサーバーとTCP接続を確立し、次にTLSハンドシェイクを行います。その後、暗号化された通信路を通じて認証情報を含むTrojanリクエストを送信します。TLSは通信の暗号化とサーバー認証を担い、Passwordはクライアントに利用権限があるかをサーバーが判定するために使われます。Passwordが正しくても証明書が有効とは限らず、証明書が有効でもPasswordが正しいとは限りません。
そのため、問題の切り分けは「アドレスの名前解決 → ポートへの到達性 → TLSハンドシェイク → Trojan認証 → 実際のリクエスト」の順で進めます。通常のWebページを開けても、端末が基本的なネットワーク接続を利用できることしか確認できません。遅延テストに数値が表示されても、Trojan認証や接続先へのアクセス成功を単独で証明するものではありません。
判断の目安:まずは提供された値をそのまま使う
元の設定値とフォームの入力内容を項目ごとに照合します。誤りが明確な項目だけを一つ変更して再テストしてください。Portを443に変更したり、SNIにAddressを設定したりする方法は、一般的な解決策ではありません。
2. Add Serverフォームで4項目を入力する
Homeの右上にある「+」をタップしてAdd Serverを開き、まずTypeをTrojanに設定してから各項目を入力します。画面の言語やフォームのレイアウトによって、SNIがTLS関連のサーバー名項目として表示される場合があります。項目の意味を確認し、メモ欄やPasswordには入力しないでください。以下のアドレスとパスワードは形式の説明用で、接続には使用できません。
| 項目 | 例 | 入力方法とよくある間違い |
|---|---|---|
Type | Trojan | 元の設定と一致させてください。TLSを使うという理由だけで別のプロトコルを選ばないでください。 |
Address | edge.example.com | サーバーのドメイン名またはIPアドレスを入力します。https://、パス、クエリパラメーター、ポート番号は含めません。 |
Port | 443 | 数字だけを入力します。元の設定が8443なら、よく使われる値に置き換えず8443のままにします。 |
Password | demo-password-not-valid | 元の値をそのままコピーします。大文字・小文字、前後の空白、改行に注意してください。App Storeアカウントのパスワードではありません。 |
SNI | tls.example.com | 既存の設定で指定されたTLSサーバー名を入力します。通常はドメイン名で、プロトコル、パス、ポート番号は付けません。 |
AddressとSNIは同じ場合も異なる場合もあります。たとえば、Addressには接続先のIPアドレス、SNIにはサーバー証明書に対応するドメイン名を指定します。この場合、SNIを同じIPアドレスに置き換えてはいけません。TLSのSNI拡張は接続先のサーバー名を通知するためのものです。証明書チェーンの信頼性と証明書名の一致は、引き続き正しく検証する必要があります。
3. 手動で追加して初回接続を確認する
追加する前に、Trojanの設定情報をすべて用意します。サービス提供元からサブスクリプションURLを受け取っている場合は、サブスクリプションからインポートし、生成された項目を確認してください。個別の設定値が明示されている場合に限り、以下の手順で手入力します。サブスクリプションURLをAddressに入力することはできません。
-
フォームを開く
Homeを開き、右上の「+」→ Add Serverをタップして、TypeでTrojanを選択します。保存済みの似た項目と混同しないよう、識別しやすいメモを設定してください。
-
アドレスを入力
AddressとPortを順に入力します。「ドメイン名:ポート番号」の形式で情報を受け取った場合は、2つに分けて入力してください。共有リンク全体をAddressに貼り付けないでください。
-
認証情報を確認
PasswordとSNIを入力し、元のTLS設定を維持します。既存の設定にWebSocketなどの追加トランスポートパラメーターがある場合は、該当する項目にも同じ値を設定してください。この4項目だけで設定がすべて揃うとは限りません。
-
保存して選択
保存してHomeに戻り、作成した項目を選択します。Global Routingの現在の設定を確認してから接続を開始してください。初回接続時は、システムの案内に従ってVPN構成の追加を許可します。
-
リクエストを確認
HomeでConnectivity Testを実行し、利用可能なHTTPSページにもアクセスします。接続ログを確認し、選択中のポリシーを通じてリクエストが処理されているか確認してください。テスト後は、普段使っているルーティング設定に戻します。
Settings → On Demandを有効にしている場合は、現在の条件を記録してください。オンデマンド接続によって接続が再開されることがあります。切り分け中は、条件によって接続が開始されたのか、選択中のTrojan項目が実際に利用できるのかを区別します。一時的に無効にした場合は、テスト後に元の条件へ戻し、すべての設定を削除しないでください。
4. 接続後にアクセスできない場合:Global Routingの設定を確認
Homeで項目を選択しても、すべてのリクエストがその項目を使うとは限りません。Global Routingはリクエストをどのようにポリシーへ振り分けるかを決めます。Directが選択されている場合、Webページにアクセスできても、選択中のTrojan項目が正常かどうかの確認にはなりません。ここではShadowrocket内のルーティング設定だけを比較し、接続サービスの選び方には触れません。
Config
おすすめ現在有効な設定ルールに基づいて、リクエストの振り分け先を決定します。DOMAIN-SUFFIXはドメインのサフィックス、IP-CIDRはIPアドレスの範囲、GEOIPはIPアドレスの地理的位置を照合し、FINALはそれまでのルールに一致しなかったリクエストを処理します。最終的な振り分け先は、ルールの順序と宛先ポリシーによって決まります。
適した用途:ルールを確認したうえでの日常利用。一致しなかったリクエストが必ず直接接続されるとは限りません。
Proxy
クライアントの処理対象となるリクエストをプロキシポリシーに渡し、ルールの影響を一時的に切り分けるために使います。PasswordやTLSの設定ミスは修正できません。また、端末上のすべての通信を例外なく制御する設定ではありません。
適した用途:選択中のTrojan項目で実際のリクエストを処理できるか、短時間で確認する場合。
Direct
選択中のプロキシ項目を経由せず、接続先へ直接接続します。Directに切り替えてページが開いても、直接接続時の比較結果にすぎません。
適した用途:基本的なネットワーク状態の比較。Trojanの設定確認には使えません。
Global RoutingのSceneでは、シーンごとに設定を適用できます。問題の切り分けでは、現在のシーンで実際にどのポリシーが選ばれているかも確認してください。Homeで項目が選択されている表示だけを見て、Sceneやルール適用後の結果を見落とさないようにします。
判断の目安:一時的なテストと日常設定を分ける
Proxyではリクエストが正常で、Configでは同じリクエストが失敗する場合は、まず一致したルールとそのポリシーを確認してください。どちらの設定でも失敗する場合は、Address、Port、TLS、Passwordの接続経路を順番に調べます。
5. よくある入力トラブルを症状から確認
エラーメッセージは原因の範囲を絞る手掛かりですが、設定値の確認に代わるものではありません。以下は切り分けに使える症状の例であり、特定の端末での実測結果ではありません。変更のたびに同じ接続先で再試行し、使用中のネットワーク、選択した項目、ルーティング設定、具体的なエラーを記録してください。複数の条件を同時に変更しないようにします。
タイムアウトが続く場合、Passwordが間違っていますか?
必ずしもそうとは限りません。まずHome → 選択中の項目 → 編集を開き、AddressとPortを確認します。次に、ドメイン名を名前解決できるか、現在のネットワークから該当ポートに接続できるかを確認してください。タイムアウトはTCP接続やハンドシェイクの段階で発生することもあるため、タイムアウトだけを理由にPasswordを変更しないでください。
証明書名の不一致が表示された場合、SNIには何を入力しますか?
利用中のサービス提供元から指定されたサーバー名を入力し、https://や:443が付いていないことを確認してください。AddressがIPアドレスで、元の設定に別のドメイン名がある場合は、そのドメイン名をSNIとして維持します。それでもエラーが続く場合はサーバー証明書を確認し、検証を省略して問題を隠さないでください。
Passwordをコピーしたのに認証に失敗するのはなぜですか?
元の設定からもう一度コピーし、大文字・小文字、末尾の改行、アカウントのログインパスワードを誤って使っていないかを確認してください。手入力フォームには実際のパスワードを入力し、リンク内のパーセントエンコードされた文字列をそのまま転記しないでください。認証情報がサービス提供元によって更新されている場合は、既存のサブスクリプションを更新するか、該当する設定値を差し替えます。
遅延が表示されるのにWebページを開けないのはなぜですか?
まずGlobal RoutingがDirectになっていないことを確認し、対象リクエストに適用されるルールとポリシーを確認します。ドメイン名を使うリクエストだけ失敗する場合は、DNSの名前解決結果も調べてください。すべてのリクエストが失敗する場合は、TLS、認証、追加のトランスポートパラメーターを確認します。遅延の測定結果だけでは、アプリケーション層でのアクセス成功を確認できません。
6. 共有リンク、サブスクリプションの更新、設定情報の保護
trojan://は通常、単一の共有リンクを示します。一般的な形式には認証情報、サーバーアドレス、ポート番号、クエリパラメーターが含まれます。通常のWebページのURLでも、自動更新されるサブスクリプションでもありません。ShadowrocketのQRコード読み取りまたはクリップボードからインポートした後も、項目を開いてType、Address、Port、Password、TLS関連の設定を確認してください。
https://example.com/sub?token=xxxxは、使用できないサブスクリプション形式の例です。実際のサブスクリプションURLにはアクセス認証情報が含まれる場合があります。サブスクリプションの追加画面から保存し、クライアントに項目を取得させてください。URL全体をTrojanのAddressに入力してはいけません。サブスクリプションから作成された項目は更新時に上書きされることがあります。長期的に変更する場合は、まず設定の管理方法を確認してください。
- 既存のサブスクリプションを更新した後は、サーバー側でPort、Password、SNIが変更されていないか確認してください。メモの名前が同じかどうかだけで判断しないでください。
- 復元できるように元の設定を保管してください。比較テストが必要な場合は、唯一使えるサブスクリプション項目を直接変更せず、手動で別の項目を作成します。
- 問題の相談時は、Password、サブスクリプションのtoken、共有リンク全体を隠し、必要な項目の種類とエラー情報だけを共有してください。
- 追加のトランスポートパラメーターがわからない場合は、利用中のサービス提供元から設定一式を入手してください。一般的なTrojanの例だけを頼りに、WebSocketのパスなどを推測してはいけません。