ShadowrocketでTrojanを追加する方法|パスワード・SNI・TLS設定ガイド

TrojanがTLSを使って通信する仕組みを解説し、Add ServerのAddress、Port、Password、SNI、証明書検証をサービス提供元の情報に沿って設定する方法を紹介します。

この記事の概要

サービス提供元からTrojanの設定情報を受け取っている方向けです。接続先、認証用パスワード、TLSのサーバー名を区別し、Add Serverの各項目を設定します。その後、接続結果からネットワーク、証明書、認証、ルールのどこに問題があるかを確認します。操作手順はiPhone / iPadの画面を例に説明します。Mac、Windows、Android、Linuxでも確認の考え方は同じですが、項目の場所は各プラットフォームの画面で確認してください。

1. Trojanの仕組み:TLS接続後にパスワード認証

ShadowrocketのTrojanは、プロキシプロトコルの一つです。一般的な接続では、まずサーバーのAddressとPortにTCP接続し、続いてTLSハンドシェイクを行います。暗号化された通信路を通じて認証情報と接続先へのリクエストを送信します。TLSは通信の保護とサーバー認証を担い、TrojanのPasswordはサービスを利用する権限の確認に使われます。両者の役割は異なります。

サーバーアドレスを名前解決 TCP接続を確立 TLSハンドシェイクを完了 認証情報を検証 接続先へのリクエストを転送

そのため、Passwordが正しくてもTLS接続が成功するとは限りません。また、TLS接続が成功してもアカウントが有効とは限りません。アドレスの名前解決失敗、Portへの接続不可、証明書名の不一致、Passwordの誤りはいずれも接続失敗につながりますが、発生する段階は異なります。原因を調べる際は、すべての項目を一度に変更せず、上記の順に確認してください。

443
TLSでよく使われるサーバーポート。実際のPortはサービス提供元の案内を確認してください
2種類
認証の確認:TLSによるサーバー認証とTrojanのユーザー認証
5項目
Address、Port、Password、SNI、証明書検証を確認

443はよく使われるポートですが、プロトコルで必須と定められているわけではなく、サービスの可用性を示すものでもありません。サービス提供元が8443など別のPortを指定している場合は、その値をそのまま入力してください。この記事ではノードやサブスクリプション、サービス提供元の紹介・推奨は行いません。既存のサブスクリプションURLはサービス提供元から入手してください。

2. 追加前に設定情報を整理:AddressとSNIは別の項目

Addressは接続先を指定し、ドメイン名またはIPアドレスを入力します。SNIはTLSハンドシェイクで送信するサーバー名で、サーバーが適切なサイトや証明書を選ぶ際に使われます。一般的なクライアント設定では、検証対象のサーバー名を決める役割もあります。画面に証明書の検証名が別項目として表示される場合は、サービス提供元の案内に従ってそれぞれ入力してください。接続先Address、SNI、追加のトランスポート層で使うHostを同じ項目として扱わないようにしましょう。

接続・認証の設定

Type
Trojan。サーバー側のプロトコルと一致させる
Address
サービス提供元が指定するホスト名またはIP。https://やパスは含めません
Port
サーバーの待ち受けPort。案内に443と明記されている場合は443
Password
そのノードのTrojan認証用Password。大文字・小文字や記号もそのまま入力

サブスクリプションへのアクセス情報、Webサイトのログインパスワード、ノードのPasswordは、それぞれ別のものです。

TLS・トランスポートの設定

TLS
標準的なTrojan接続ではTLSが必要です。ノードの設定情報に従ってください
SNI
サービス提供元が指定するTLSサーバー名。プロトコルの接頭辞やPortは含めません
証明書検証
有効のままにし、信頼チェーン、有効期間、名前の一致を確認
Transport
案内に従って設定します。WebSocketなどのカプセル化方式を独自に追加しないでください

追加のトランスポート設定を名前から推測して入力しないでください。情報が不足している場合は、先にサービス提供元へ確認してください。

たとえば、AddressがIPアドレスで証明書が特定のドメイン名に対して発行されている場合、SNIには通常、サービス提供元が指定する証明書のドメイン名を入力します。反対に、Addressがドメイン名でも、それがSNIと同じとは限りません。証明書で使用できる名前はSubject Alternative Nameなどの情報で決まります。アクセス可能なWebサイトのドメイン名を任意に入力すればよいわけではありません。

要点:サーバー名を確認してから証明書エラーに対処

名前が一致しない場合は、まずSNIとサービス提供元が指定する証明書のドメイン名を一字ずつ照合してください。証明書検証を無効にして設定の誤りを回避しないでください。

3. Home → Add Server:手動入力と保存の手順

手動追加は、単一ノードの設定確認や、サブスクリプションの読み込み後にどの項目が食い違っているかを調べるのに便利です。以下では英語の画面表示を使って説明します。項目が個別に表示されるかどうかは、プラットフォームや選択したトランスポート方式によって異なります。画面に表示され、設定情報が明確な項目だけを入力してください。

  1. Homeを開き、右上の追加ボタンをタップしてAdd Serverに進みます。まずTypeをTrojanに設定し、画面に表示されるプロトコル固有の項目を確認します。
  2. Addressにサーバーのホスト名またはIPを貼り付けます。コピー時に混入した空白や改行、プロトコルの接頭辞を削除してください。共有リンク全体をAddress欄に貼り付けないでください。
  3. Portに指定された番号を入力します。たとえば案内に443とある場合は443を入力してください。タイムアウトが発生しても、独断で80に変更しないでください。サーバーが待ち受けていないPortは、クライアント側を変更しても使えるようにはなりません。
  4. Passwordにノードの認証用パスワードを貼り付けます。先頭と末尾の空白、英字の大文字・小文字、記号を確認し、サブスクリプションURL内のtokenをパスワードとして使わないようにしてください。
  5. TLSとSNIを確認します。SNIにはホスト名だけを入力してください。サービス提供元から追加のトランスポート設定が案内されている場合は併せて確認し、別のノードの設定を流用しないでください。
  6. 証明書検証を有効のままにしてノードを保存し、Homeに戻って保存した項目を選択します。初回接続時は、システムの案内に従ってVPN構成の追加を許可してください。

テスト前にConfigのルールは変更しないでください。まず現在のネットワークで単一ノードが接続できることを確認し、その後、ルールがリクエストを想定した接続先へ送っているかを検証します。こうすることで、ノード設定の誤りとルールの適用結果を切り分けられます。

4. サブスクリプションの読み込み後もノードの各項目を確認

サービス提供元からサブスクリプションが提供されている場合は、Add ServerでSubscribeタイプを選び、まとめて読み込めます。ノードを一つずつ作り直す必要はありません。サブスクリプションはノード情報を一括で配信する仕組みですが、Addressや証明書、アカウントが常に有効であることを保証するものではありません。読み込みに成功したのは、クライアントが情報を取得して解析できたという意味であり、すべてのノードの接続テストが完了したわけではありません。

TrojanとShadowsocks、VMess、VLESS、Hysteria2、WireGuardでは、各項目の意味が異なります。TypeだけをTrojanに変更し、元のプロトコルの認証情報をそのまま使うことはできません。サブスクリプションの解析結果が想定と異なるプロトコルになった場合は、Port番号から判断せず、元の設定情報と読み込み方法を確認してください。

5. 接続失敗を段階別に確認:ネットワーク、TLS、認証、ルーティング

Homeに表示される遅延値が示すのは、テスト方法で確認できた通信経路だけです。数値が表示されてもWebページ全体を開けるとは限らず、タイムアウトだけでPasswordの誤りとも断定できません。接続ログ、実際のアクセス結果、ネットワークを切り替えた場合の結果を合わせて判断してください。以下は原因を調べる手掛かりであり、すべての失敗に共通する唯一の原因を示すものではありません。

確認できた現象 優先して確認する項目 次に行うこと
サーバードメインの名前解決に失敗 Addressの入力ミスと、現在のネットワークでのDNSの動作 通常のネットワーク接続を確認してからAddressを見直します。出所不明のIPに勝手に置き換えないでください
接続がタイムアウトする、または拒否される Port、サーバーの待ち受け状態、現在のネットワークから接続できるか 設定を変えずにWi-Fiとモバイル通信を切り替えて比較し、Portについてサービス提供元に確認します
TLSハンドシェイクまたは証明書検証に失敗 SNI、証明書の有効期間、信頼チェーン、システム時刻 サーバー名と端末の時刻を修正します。期限切れの証明書や不完全な証明書チェーンはサービス提供元に対応を依頼してください
接続がすぐ切断され、リクエストを転送できない Password、アカウントの状態、追加のトランスポート設定 認証情報を再確認し、サービス提供元にサーバーログを確認してもらいます
一部のWebサイトは使えるが、ほかは開けない Global Routing、ルールの適用結果、DNS、接続先サイトの状態 短時間だけProxyに切り替えて比較し、その後、元の設定に戻してConfigを確認します

端末の時刻が大きくずれていると、証明書の有効期間を正しく判定できません。iPhone / iPadではシステムのSettings → General → Date & Timeを開き、Set Automaticallyを確認してください。これはシステム設定であり、Shadowrocketのメニューではありません。時刻を修正したら接続し直し、証明書エラーを無視して原因を隠さないでください。

要点:設定を変えずにネットワークを切り替えるほうが、項目を一度に変えるより原因を絞り込めます

同じノードがモバイル通信では使えて特定のWi-Fiでは使えない場合、まずそのネットワークの名前解決や接続制限を調べてください。このときPasswordやSNIを繰り返し変更すると、比較条件が崩れてしまいます。

6. ノードの接続を確認したらGlobal RoutingとConfigを調べる

ノード設定は「プロキシサーバーへの接続方法」を定義し、Global RoutingとConfigは「どのリクエストにそのノードを使うか」を決めます。一時的にProxyを選ぶと、ルールによる別経路への振り分けを切り分けやすくなりますが、常にProxyを使うべきという意味ではありません。比較後は元の設定に戻し、実際のリクエストで結果を確認してください。

Configでは、DOMAIN-SUFFIXはドメインのサフィックス、IP-CIDRはIPアドレス範囲、GEOIPはIPアドレスの地理情報に基づいて照合し、FINALは最後のフォールバックルールとして機能します。ルールは上から順に評価されます。リクエストが先行するDIRECTルールに一致した場合、後続のルールで利用可能なプロキシを選んでも、そのリクエストの判定は変わりません。変更前に設定をバックアップし、断片的な例でファイル全体を上書きしないでください。

Settings → On Demandは、条件に応じた自動接続を主に制御する機能であり、TrojanのPassword、証明書、サーバーのPortを修正するものではありません。手動接続も失敗する場合は、まずノード自体の問題を解決してください。手動接続は使えるのに自動接続が想定どおりに動かない場合は、On Demandの条件を個別に確認します。

7. Trojanの設定に関するよくある質問

AddressとSNIに同じドメイン名を入力できますか?

可能ですが、サービス提供元の情報でそのように指定され、証明書がその名前に対して有効であることが条件です。AddressがIPでSNIがドメイン名の場合は、その違いを保ってください。項目を「統一」するために同じ値へ変更しないでください。

Portに443を入力してもタイムアウトするのはなぜですか?

443だからといって接続できるとは限りません。サービス提供元がそのPortでTrojanを提供しているか確認し、設定は変えずにネットワークを切り替えて試してください。ログが接続確立前の段階で止まる場合は、証明書の設定ではなくAddressとPortへの到達性を優先して確認します。

証明書エラーが出た場合、検証を無効にしてもよいですか?

まずSNI、システム時刻、証明書チェーンを修正してください。検証を無効にするとサーバーの身元を確認する重要な手段が失われます。接続できても、設定の安全性や正しさが証明されたことにはなりません。サーバー証明書の問題はサービス提供元に対応を依頼してください。

サブスクリプションの更新後にPasswordが変わりました。古いPasswordを残すべきですか?

まず最新の認証情報をサービス提供元に確認してください。認証情報が更新されていれば古いPasswordは使えない可能性があります。更新内容に誤りがある場合はサブスクリプションの配信元を修正してもらってください。同じ名前の項目を複数残し、表示位置だけで使うものを判断しないでください。

接続スイッチがオンなのにWebページが開けないのはなぜですか?

スイッチがオンなのはVPNトンネルが有効になっていることを示しますが、接続先ノードが通信を転送できているとは限りません。まずHomeでノードの選択を確認し、短時間だけGlobal Routing → Proxyに切り替えて比較してください。それでも失敗する場合は、ネットワーク、TLS、認証の順に確認します。

Shadowrocketをダウンロード