この記事の要点

Shadowrocketでノードがタイムアウトしても、サーバーが必ず停止しているとは限りません。遅延が表示されても、Webページへのリクエストが成功するとは限りません。利用中のサービスとサブスクリプションがある方を対象に、ネットワーク、遅延テスト、プロトコル設定、システム時刻、実際のリクエストの順に原因を絞り込みます。一度に変更するのは一項目だけにし、エラーの全文と発生時刻を記録して、何度も再インストールしたり設定全体を同時に変更したりせず、再現可能なトラブル記録を作成しましょう。

1. まず問題の範囲を確認し、状況を記録する

まず、サブスクリプションの更新失敗、ノードのテスト失敗、接続後に特定のWebページが開かない、の3つを区別します。それぞれ異なる段階で起きている可能性があります。サブスクリプションの更新では設定データを取得し、ノードテストでは選択した方法でテストを実行します。Webページへのアクセスには、ルーティング、DNS、プロトコルのハンドシェイク、接続先のWebサイトも関わります。「タイムアウト」という表示だけで、これらを同じ問題として扱わないでください。

開始前にHomeで、選択中のノード名、Global Routingの設定、エラーが出た操作を記録します。Configの既存設定は残し、ルールを先に消さないでください。Settings → On Demandが有効な場合は、その状態も記録します。手動で切断して比較する際は、既存の条件によって接続が再び開始されないことを確認してください。

  1. ネットワークの基本状態を確認:一時的に接続を切り、現在のWi-Fiまたはモバイル通信で、普段直接アクセスできるページが開くか確認します。Wi-FiでWeb認証が必要な場合は、先に認証を完了してください。
  2. テスト対象を固定:自分が利用しているノードを1つ選び、以降の確認とテストは同じノードで行います。設定の異なるノードの結果を混同しないようにしましょう。
  3. 結果をそのまま記録:テストがタイムアウトしたのか、接続スイッチがオンの状態を維持できないのか、特定のアプリのリクエストだけが失敗するのかを記録し、エラー全文も保存します。
  4. 変更は一度に1項目:変更後は同じ操作で再テストします。改善しなければ変更を元に戻してから、次の項目を確認してください。

2. 遅延テストの見方:数値が出ても接続できるとは限らない

結果を判断する前に、テスト方法を確認してください。TCPハンドシェイクで確認できるのは、主にアドレスとポートへの到達性です。プロキシプロトコルの認証全体を検証するものではありません。ノード経由のHTTPリクエストテストでは、テスト先自体を含む、より多くの要素が関係します。2つの方法で得られる時間の意味は異なるため、単純に比較したり、数値を通信速度とみなしたりしないでください。

Homeで同じノードに対して現在のテストを繰り返し、結果が安定しているか記録します。アプリで別のテスト方法を選択している場合は、その方法も記録してください。以下の3回という回数は、トラブル調査のための目安であり、アプリで定められた回数ではありません。継続的な失敗と一時的な揺らぎを区別するためのものです。

3回
同じノード、同じテスト方法で連続して再テストし、結果を個別に記録
2種類
ポートへの到達性とノード経由のリクエスト結果をそれぞれ確認
1項目
各回で変更するのは、ネットワーク、ノード設定、テスト先のいずれか1つだけ

結論:ポートに到達できたら、次はプロトコルのハンドシェイクを確認

TCPテストで継続して応答がある一方、ノード経由のリクエストが失敗し続ける場合は、認証情報、TLS、トランスポート設定を確認してください。遅延の数値だけを見てノードを変更し続けないでください。TCPテストの成功が示すのは、そのテストでTCP接続が確立されたことだけであり、サーバーが現在のプロトコル設定を受け入れた証明にはなりません。

同じ設定でWi-Fiでは失敗し、モバイル通信では成功する場合、まずネットワーク経路やそのネットワークの制限が違いとして考えられますが、具体的な原因を特定できたとは限りません。どちらのネットワークでも失敗しても、サーバー停止と即断しないでください。アドレスの誤り、認証情報の期限切れ、DNSの名前解決エラー、プロトコルの不一致をそれぞれ確認する必要があります。

3. アドレス、ポート、プロトコル設定を照合し、推測で値を置き換えない

Homeから現在のノードの編集画面を開き、利用中のサービスが提供した元の設定と項目ごとに照合します。まずタイプが一致しているか、次にアドレスとポート、最後に認証、TLS、トランスポート関連の項目を確認します。サブスクリプションの読み込みに成功したことは、クライアントがデータを取得して解析できたことを示すだけで、すべてのノードで接続できることを意味しません。

確認項目具体的な確認内容避けたい誤判断
アドレスとポートドメイン名またはIPアドレスが元の設定と一致しているか、ポート番号に抜けがないか確認します。元の設定が443の場合は、443のままにしてください。443はよく使われるポートの例であり、すべてのノードに適用できる修正値ではありません。接続できないからといって443に変更しないでください。
Shadowsocks暗号化方式とパスワードを照合します。設定に追加のプラグイン項目が含まれる場合は、それらも一致させてください。アドレスとポートが正しくても、暗号化方式やパスワードが一致しなければ利用できないことがあります。
VMess / VLESSUUID、該当するプロトコル設定、トランスポートの種類、パス、Hostなどの関連項目を照合します。あるプロトコルの項目の組み合わせを、別のプロトコルにそのまま適用しないでください。
Trojanパスワード、TLS設定、サーバーが要求するSNIを照合します。接続先アドレスと証明書に対応するドメイン名は異なる場合があります。アドレスだけを見てSNIを判断しないでください。
Hysteria2認証情報、TLS、該当する難読化設定を照合し、必要なUDP通信がネットワーク経路で許可されているか確認します。通常のTCPテストだけでは、QUICベースの接続が利用可能かどうかを判定できません。
WireGuard鍵、接続先アドレスとポート、トンネルアドレス、設定内のルーティング範囲を照合します。UDPを使うため、TCPポートのテストだけではハンドシェイクや実際の通信を確認できません。

ドメイン名を使う場合は、名前解決で取得したアドレスが正しいかも確認してください。名前解決を回避するためにドメイン名を安易にIPアドレスへ置き換えないでください。サーバー側で選ばれる接続先が変わり、TLSのホスト名検証にも影響する可能性があります。WebSocketを使う設定では、パス、Host、TLSのSNIはそれぞれ役割が異なります。どれもドメイン名のように見えるからといって、相互に置き換えないでください。

4. iPhoneのシステム時刻を確認してからTLSエラーを調べる

iPhoneの日付、時刻、タイムゾーンが大きくずれていると、証明書の有効期間の判定や、時刻検証が必要な認証に影響することがあります。証明書には有効開始日時と有効期限があります。デバイスの時計が大きくずれている場合、アドレスやパスワードが正しくても、ハンドシェイクで失敗する可能性があります。すべてのタイムアウトに共通する原因ではありませんが、確認しやすく、先に調べておきたい項目です。

  1. iPhoneの「設定」→「一般」→「日付と時刻」を開き、「自動設定」がオンになっているか確認します。
  2. 表示されている日付、現地時刻、タイムゾーンが適切か確認してください。スイッチを変更できない場合は、デバイス管理や機能制限を確認し、管理設定をむやみに削除しないでください。
  3. Shadowrocketに戻り、接続を切ってから同じノードに再接続し、同じテストを実行します。
  4. TLS関連のエラーが続く場合は、エラー全文と発生時刻を利用中のサービスに伝え、サーバー証明書、証明書チェーン、ドメイン設定を確認してもらってください。

システム時刻が正しいことは確認項目の1つにすぎず、証明書の期限切れ、証明書名の不一致、サーバー設定の異常を自動的に解決するものではありません。以下に、よくあるネットワークエラーの文面から考えられる確認箇所を示します。該当する文面が実際のログにある場合のみ、その項目を参考にしてください。具体的な表現は、システムや失敗した段階によって異なることがあります。

エラー:Connection refused

原因と対処:接続先または中継機器によって接続が明示的に拒否されています。ポートで待ち受けていない、またはポリシーで拒否されている可能性があります。まずアドレスとポートを確認し、利用中のサービスに待ち受け状態とアクセス制御を確認してもらってください。

エラー:Operation timed out

原因と対処:対象の処理が制限時間内に完了しませんでした。この文面だけでは、パケット損失、経路上の制限、サーバーの無応答のどれかを特定できません。テスト中の失敗か実際のリクエスト中の失敗かを記録し、別のネットワーク接続でも比較してください。

エラー:certificate has expired

原因と対処:証明書の有効期間の確認に失敗しています。まずデバイスの時刻を修正してください。時刻が正しい場合は、利用中のサービスに証明書の更新状況と実際に配信されている証明書チェーンを確認してもらってください。

5. 接続後も開けない場合:Global Routingとルールの適用先を確認

接続スイッチがオンでも、すべてのリクエストが現在のノードを経由するとは限りません。Home → Global Routingで全体のルーティング方式を設定します。Proxyはプロキシ経由、Directは直接接続、Configは現在の設定に基づく処理、Sceneは設定済みのシーンに応じたルーティング方式を選択します。調査では現在の設定を記録し、ノード名だけを確認して終わらせないでください。

ルールの影響を切り分ける必要がある場合は、テスト範囲を確認したうえで、一時的にProxyを選び、同じ接続先へリクエストを送信してから元の設定に戻します。この操作中は他のリクエストのルーティングも変わるため、影響を理解したうえで実施してください。Proxyでは成功しConfigでは失敗する場合は、Configで有効になっている設定と、リクエストに実際に適用されたポリシーを確認します。パスワードを変更し続ける必要はありません。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
GEOIP,CN,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT
FINAL,PROXY

ここではマッチング順序のみを説明します。完全な設定ではありません。DOMAIN-SUFFIXはドメインのサフィックス、GEOIPはIPアドレスの地理的な所属、IP-CIDRはアドレス範囲に基づいて照合します。FINALは、それまでのルールに一致しなかったリクエストを処理します。ルールは上から順に判定されます。例にある192.0.2.0/24はドキュメント用のアドレス範囲であり、実際の通信ルートを変更する根拠にはなりません。使用時は、ポリシー名が自分の設定内で有効かどうかも確認してください。

6. よくある質問とトラブル記録のまとめ方

遅延の数値が表示されるのに、なぜ接続できないのですか?

まず、その数値がどのテスト方法で得られたか確認してください。TCPハンドシェイクの成功だけであれば、認証情報、TLS、トランスポートの種類、パスを引き続き確認します。次に、現在のノード経由で実際のリクエストを行ってください。ポートに到達できたことを、プロトコル認証の成功とみなさないでください。

すべてのノードがタイムアウトします。先にサブスクリプションを再読み込みするべきですか?

まず接続を切ってネットワークの基本状態を確認し、同じノードでWi-Fiとモバイル通信を切り替えて比較してください。利用中のサービスが設定を更新したこと、またはリンクのデータに誤りがあることを確認できた場合にのみ、既存の設定を比較用に残してサブスクリプションを更新します。

切断しても自動的に再接続され、調査に影響する場合はどうすればよいですか?

Settings → On Demandと、設定済みのトリガー条件を確認してください。手動で比較する必要がある場合は、一時的にOn Demandをオフにし、テスト後に元の状態へ戻します。この設定は接続を開始する条件を制御するものであり、誤ったアドレスやパスワードを修正するものではありません。

システム時刻を直しても証明書エラーが続く場合はどうすればよいですか?

証明書の検証は有効のままにし、ノードのSNIがサービス側の指定と一致しているか確認してください。エラー全文と正確な発生時刻を伝え、証明書の有効期間、証明書チェーン、接続先ドメインをサービスに確認してもらいます。異なるドメイン名を次々に試さないでください。

問題を問い合わせる際は、単に「使えない」と伝えるより、失敗した段階を特定できる情報を提供すると効果的です。以下の順に記録をまとめてください。ノード名は必要に応じて匿名化できます。認証情報はトラブル調査のために公開する情報ではありません。

この順序で確認すれば、問題をネットワークの基本状態、サーバーへの到達性、プロトコルのハンドシェイク、デバイスの時刻、リクエストのルーティングのいずれかに絞り込めます。問題がある段階を特定してから対応する設定を変更し、再テストに成功したら一時的な変更を元に戻してください。診断用のルーティング設定を普段の設定として残さないようにしましょう。

App Storeで正規アプリを確認

ShadowrocketはAppleプラットフォーム向けの有料クライアントで、入手先はApp Storeのみです。購入前に、デベロッパ名がShadow Launch Technology Limitedであること、アプリIDが932747118であることを確認してください。アプリは買い切りです。アプリの購入と通信サービスの契約は別です。システム要件はApp Storeの掲載内容をご確認ください。初期設定については、はじめにもご覧ください。

正規アプリの確認ページへ 使い方を見る