2026-08-30 · トラブルシューティング · 約8分

Shadowrocketの接続がタイムアウトする原因と対処法:接続失敗を解決する3つの手順

遅延テスト、プロトコル設定、端末の日付と時刻の順に確認し、接続タイムアウトの原因が端末の設定かサーバー側かを切り分けます。

この記事の要点

Shadowrocketで接続がタイムアウトする場合は、まずテスト方法と現在のネットワークを確認し、次に登録済みの接続情報、最後に端末の時刻と証明書の有効期間を確認します。利用中のサービスと接続情報がありながら接続できない場合に適した手順です。順番に確認することで、ネットワーク到達性、プロトコル設定、TLS検証のどこに問題があるかを絞り込み、複数の設定を同時に変更するのを避けられます。

事前確認:テストのタイムアウトと実際の通信失敗を区別する

遅延テストがタイムアウトした場合、そのテストで所定の時間内に期待した応答を得られなかったことを示すだけで、サーバーの停止を断定することはできません。テスト方法によって確認する範囲は異なります。TCPテストでは主にポートへの接続を確認し、アプリケーション層の疎通テストではプロトコルのハンドシェイク、TLS、テスト先なども確認する場合があります。まず使用中のテスト方法を記録し、結果を比較してください。

同様に、システムにVPN接続済みと表示されても、トンネルが確立したことを示すだけで、リモート側の認証、ドメイン名の解決、接続先サイトへのリクエストがすべて成功したとは限りません。スイッチがオンになっているだけで接続情報の確認を省略せず、リクエストの経路に沿って問題の範囲を絞り込みましょう。

アプリからのリクエスト システムトンネル ルール判定 プロトコルのハンドシェイク 接続先からの応答

手順1:ノードとテスト方法を固定し、2つのネットワークで比較する

Homeで現在選択中のノードを確認します。接続情報を一括更新したり、プロトコルを切り替えたりせず、同じノード、同じテスト方法で現在のネットワークから繰り返しテストし、結果を記録してください。一時的な失敗と継続的な失敗では対処の方向が異なります。再テストの目的は現象を再現できるか確かめることであり、1回の遅延値だけで回線品質を判断することではありません。

  1. テスト対象を確認する

    Homeを開き、現在のノード名、サーバーアドレス、ポート、テスト方法を記録します。意図したノードが選択されているかを確認し、別のノードのテスト結果と現在のウェブ閲覧の結果を混同しないようにしてください。

  2. ルールの影響を切り分ける

    Home → Global Routing → Proxyを開き、現在選択中のノードで一般的なウェブページにアクセスしてテストします。この手順はConfigの振り分けによる影響を一時的に切り分けるためのものです。テスト後は元のGlobal Routingの選択に戻してください。

  3. 接続ネットワークを切り替える

    端末が対応し、利用が許可されている場合は、Wi-Fiからモバイル通信に切り替えるか、別の信頼できるWi-Fiに接続します。ネットワークが安定するまで待ち、ノードと設定は変えずに同じテストを行ってください。

  4. 自動接続を確認する

    手動で切断しても自動的に再接続する場合は、Settings → On Demandを開き、登録済みのルールを確認して記録します。一時停止が必要な場合は、On Demandをオフにしてから手動接続をテストしてください。完了したら元の設定に戻します。

1つ
比較対象が変わらないよう、ノードを固定する
2種類
利用可能なネットワークでそれぞれ再テスト
3ステップ
遅延テスト、設定確認、時刻の調整

ポイント:ネットワークを切り分けられる情報を残す

同じノードが一方のネットワークでは継続して失敗し、もう一方では正常に動作する場合は、まず失敗するネットワークのログイン認証、通信制限、サーバーまでの経路を確認します。先にパスワードや証明書の設定を変更しないでください。両方のネットワークで失敗しても、問題の範囲が絞られるだけです。引き続き設定とサーバー側の状態を確認してください。

Hysteria2、WireGuardなどUDPを使用する接続では、TCPテストの結果だけでプロトコルが利用できるかを判断しないでください。ネットワークでTCP通信が許可されていても、同じアドレスへのUDP通信が通るとは限りません。比較時はプロトコルを変更せず、実際の接続とリクエストの結果を確認してください。

手順2:プロトコルに応じてアドレス、ポート、認証情報を確認する

Homeから対象ノードの編集画面を開き、利用中のサービス提供元から受け取った情報を基準に、各項目を確認します。ノード名からプロトコルを推測したり、別の接続の設定をコピーしたりしないでください。ポートはサーバーの待ち受けポートと一致させます。設定情報が8443なら、TLSを有効にしたからといって443に変更してはいけません。この2つの数字は確認方法の例であり、汎用設定ではありません。

まず、サーバーアドレスに空白、プロトコルのプレフィックス、パスが誤って含まれていないかを確認し、次にポートと認証情報を確認します。サーバーアドレス、TLSのServer Name、WebSocketのHostは用途が異なる場合があります。サービス提供元の情報で同じ値を使うよう明示されている場合に限り、同じ内容を入力してください。

プロトコル 優先して確認する項目 見落としやすい違い
Shadowsocks サーバーアドレス、ポート、Password、Method MethodとPasswordの両方を一致させる必要があります。ポートに接続できることだけを確認しても不十分です。
VMess / VLESS サーバーアドレス、ポート、UUID、転送方式と関連設定 WebSocketを使用する場合はPathとHostを確認します。TLSなどのセキュリティ設定は、受け取った情報に従って入力してください。
Trojan サーバーアドレス、ポート、Password、TLS Server Name アドレスに接続できても、証明書のドメイン名が一致するとは限りません。Server Nameを安易に変更しないでください。
Hysteria2 サーバーアドレス、ポート、認証情報、TLS設定 UDPを使用します。obfuscationを使う場合は、対応する種類とパスワードも一致させる必要があります。
WireGuard Endpoint、鍵、インターフェースアドレス、ルート範囲 UDPで通信します。接続先の公開鍵が間違っている場合も、ハンドシェイクに失敗します。

サブスクリプションを利用している場合は、更新失敗とノードの接続失敗を区別する

サブスクリプションの更新は接続情報を取得する操作で、ノードの接続はその情報を使ってリモートにアクセスする操作です。両者は別の処理です。Homeで自分のサブスクリプショングループを開いて更新した後、対象ノードのアドレス、ポート、認証情報が変わっていないかを確認します。更新に成功しても、すべてのノードが利用できるとは限りません。更新に失敗しても、保存済みの接続情報が必ず無効とは限りません。

手順3:端末の時刻を調整し、TLSエラーを確認する

TLS証明書には有効期間があります。端末の時刻が大きくずれていると、有効な証明書がまだ有効でない、または期限切れと判定される場合があります。iPhoneまたはiPadでシステムの「設定」→「一般」→「日付と時刻」を開き、「自動設定」がオンになっていることと、表示される日付と時刻が正しいことを確認してください。端末管理の制限で設定できない場合は、管理者に対応を依頼してください。

時刻を調整した後、再接続してテストします。時刻が正しくても証明書エラーが続く場合は、Server Nameと証明書のドメイン名が一致しているかを確認するか、サービス提供元にサーバー証明書と証明書チェーンの確認を依頼してください。証明書の検証をオフにして、こうした確認の代わりにしないでください。時刻を調整しても、サーバー側で期限切れになった証明書は修復できません。

エラー:i/o timeout

原因:ネットワーク上のいずれかの読み書き処理が制限時間内に完了しませんでした。このログだけでは、どの段階で失敗したかは特定できません。

対処:前後に記録された接続先アドレスとハンドシェイク情報を確認し、同じノードを別のネットワークでもテストしてから、アドレス、ポート、プロトコル設定を確認します。

エラー:connection refused

原因:接続先、または経路上の機器によって接続要求が明示的に拒否されています。該当ポートでサービスが待ち受けていない、または拒否ポリシーが設定されている可能性があります。

対処:サービス提供元の案内するポートを確認し、待ち受け状態とアクセス制御を問い合わせてください。待ち時間を延ばすだけの対応は避けましょう。

エラー:x509: certificate has expired or is not yet valid

原因:証明書の有効期間の検証に失敗しています。端末の時刻に問題がある場合と、サーバー証明書自体に問題がある場合があります。

対処:まず端末の日付と時刻を調整します。それでも解決しない場合は、個人情報を伏せた証明書エラーをサービス提供元に送り、確認を依頼してください。

上記はログに表示される可能性のあるエラーの一部で、固定のポップアップ文言ではありません。プロトコルや接続段階によって、エラーの全文は異なる場合があります。「タイムアウト」の一言だけでなく、エラー前後の情報も記録すると原因を特定しやすくなります。ただし、共有する前に認証情報を削除してください。

接続が復旧したら:Configと実際の振り分けを確認する

一時的にProxyを使うとアクセスでき、Configに戻した後に一部のサイトだけ開けない場合は、問題の焦点を設定の適用状況に移します。動作確認済みのノードを再設定する必要はありません。Configを開いて現在選択中の設定ファイルを確認し、Home → Global Routing → Configに戻して再テストしてください。

ルールは上から順に照合されます。DOMAIN-SUFFIXは指定ドメインとそのサブドメインに、IP-CIDRはIPアドレスの範囲に、GEOIPはIPアドレスの地理的な帰属に基づいて一致します。FINALは、それ以前のルールに一致しなかったリクエストを受け取ります。以下は構文と順序の例であり、設定全体を置き換えるための修復用設定ではありません:

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

ポイント:「ノードの接続失敗」と「リクエストの経路違い」を区別する

Proxyではリクエストが正常で、Configでは同じリクエストが失敗する場合は、一致したルールと実際の送信先を記録してから、該当する設定を調整してください。リクエストがテスト対象のノードを実際に経由したと確認できて初めて、その結果からノードの接続状態を判断できます。

解決しない場合:再現可能な情報をまとめる

3つの手順を試しても復旧しない場合は、ノード名だけでなく、確認可能な状況をサービス提供元に伝えてください。テスト結果から問題の範囲を絞ることはできますが、サーバー側の情報がなければ、障害がクライアント側かサーバー側かを断定できません。次の確認に必要な情報は以下のとおりです。認証情報をすべて共有する必要はありません。

  1. テスト日時とネットワーク:現地時刻とタイムゾーン、Wi-Fiまたはモバイル通信の別を記載し、もう一方のネットワークでも再現するかを伝えます。
  2. プロトコルとテスト方法:実際に使用しているShadowsocks、Trojanなどのプロトコルと、ポートテストかリクエスト全体のテストかを記載します。
  3. クライアントの状態:Global Routingの選択、現在のノード、端末の時刻を調整済みか、On Demandを確認済みかを記録します。
  4. 失敗した段階:接続を確立できない、認証に失敗する、TLS検証に失敗する、接続後に特定のサイトだけ開けない、のどれに該当するかを説明します。
  5. 個人情報を伏せた記録:必要なエラー情報を共有し、サブスクリプションのトークン、パスワード、UUID、秘密鍵、およびそれらを含むQRコードは削除します。

ノードのタイムアウトへの対処として、クライアントを再購入する必要はありません。アプリの買い切り購入と接続サービスは別のものです。Shadowrocketはクローズドソースの有料アプリで、App Storeでの購入と、利用中のサービス提供元の接続サービスはそれぞれ独立しています。ShadowrocketはAppleプラットフォームで提供され、主にiPhoneとiPadで利用できます。システム要件はApp Storeの製品ページをご確認ください。

App StoreでShadowrocketをダウンロード