Shadowrocketの接続タイムアウト・接続失敗の対処法|遅延テスト、プロトコル設定、システム時刻の確認手順

接続タイムアウトは、遅延テストの結果を確認してからアドレス、ポート、パスワード、通信設定を順に点検し、最後にシステム時刻とネットワーク環境を確認します。

この記事の要点

Shadowrocketでタイムアウトが表示されても、パスワードの誤りや接続先サービスの停止とは限りません。ご自身でサービス事業者と契約し、サブスクリプションを利用している方を対象に、iPhone、iPad、Mac(Appleシリコン・Intel)、Windows、Android、Linuxでの確認方法を説明します。画面操作はiPhone/iPadを例にしています。まず元の設定とテスト結果を保存し、テスト方法、プロトコル設定、システム時刻、ネットワークの出口を順番に確認してください。一度に変更する項目は一つに絞ります。

1. 遅延テストの失敗と実際の接続失敗を見分ける

遅延の数値は、その時点のネットワークで特定のテストが完了したことを示すだけで、すべてのアプリが正常に通信できる証拠にはなりません。TCPテストでは主にポートへの接続を確認します。プロキシ経由のHTTPテストでは、プロトコルのハンドシェイクやテスト先の応答も関係します。ICMP Pingは接続先や途中のネットワークで破棄されることがあります。それぞれ測定対象が異なるため、一つの結果を別のテストの結果と同じように扱わないでください。

ドメイン名の解決 ポートへの接続 プロトコルのハンドシェイク ルーティングの選択 接続先からの応答

Homeで選択中の項目を確認し、テスト方法を記録したうえで、同じ項目を3回続けてテストします。成功が1回だけ、または数値の変動が大きい場合は、結果を記録して、すぐにプロトコルを変更しないでください。次に接続を有効にし、普段から安定して利用できる、自分にアクセス権のあるHTTPSページをブラウザーで開いて、特定の接続先だけ失敗するか確認します。項目の切り替え、DNSの変更、ネットワークの変更を同時に行うと、何が改善につながったのか判断できません。

確認できた現象そこから判断できること次に行うこと
TCPテストは成功するが、実際のアクセスは失敗するポートに接続できても、認証、TLS、接続先へのリクエストが失敗する可能性がありますプロトコルの設定項目を確認し、リクエストが選択中の項目を経由しているか調べます
ICMPは応答しないが、実際のアクセスは正常ICMPの結果だけでは、プロキシプロトコルが利用できないとは判断できません設定は変更せず、実際のアクセスとプロトコルテストの結果を基準にします
同じサブスクリプションの全項目でタイムアウトする共通の原因が考えられます。すべてのサーバーの障害とは限りませんネットワーク、サブスクリプションの状態、ドメイン名の解決、端末の時刻を確認します
一つの項目だけ繰り返し失敗するその項目、または接続先サービスに原因がある可能性が高くなります該当項目のアドレス、ポート、サービスの稼働状況を確認します

ポイント:テスト対象を固定する

一つの項目、一つのテスト方法、一つの接続先ページを選び、基準となる結果を記録します。基準を固定してからネットワークを切り替えたり設定を修正したりすれば、変更前後を比較できます。

2. アドレス、ポート、サブスクリプションの内容を順に確認する

まず基本的な接続情報から確認します。アドレスの入力漏れや、別サービス用の待受ポートの指定は、タイムアウトの原因になります。ポート番号はプロトコル名だけで決まるものではありません。TLSを使うからといってポートが必ず443になるわけではなく、443が一般的だからと元のポートを変更するのも避けてください。

  1. 元の設定を保存する

    Homeで現在の項目名、Type、エラーが発生した時刻を記録します。Configを変更する前に、元の設定を複製して保存してください。パスワード、UUID、秘密鍵を含む情報は自分の端末だけに保存し、公開の掲示板などには投稿しないでください。

  2. アドレスを確認する

    Homeから現在の項目の編集画面を開き、Addressの値をサービス事業者から提供された元の情報と一文字ずつ照合します。Addressには通常、ドメイン名またはIPアドレスを入力します。ウェブページのURL全体やパス、前後の空白を含めて貼り付けないでください。

  3. ポートを確認する

    Portが接続先の待受ポートと一致しているか確認します。有効なポート番号は1~65535です。たとえば接続先で8443が指定されている場合、ブラウザーのHTTPSでよく使われるという理由で443に変更してはいけません。ポートに接続できても、そこで正しいプロキシサービスが動作しているとは限りません。

  4. 認証情報を確認する

    元の情報と照らし合わせ、Password、UUID、または該当するキーの値を確認します。コピー時に改行や前後の空白が入っていないかも確認してください。サブスクリプションURLのアクセストークンをノードのパスワード欄に入力しないでください。用途が異なります。

  5. 更新して再テストする

    サブスクリプションから追加した項目の場合は、Homeで該当するサブスクリプションを更新するか、画面を下に引いて更新します。処理の完了後、項目を選び直してください。更新によってサブスクリプション由来の設定が上書きされることがあります。一時的な変更は事前に記録し、更新に失敗しても、まだ使える古い設定を削除しないでください。

サブスクリプションの更新が成功したことは、内容を取得して解析できたことを示すだけで、すべてのアドレスが稼働中という意味ではありません。反対に、更新に失敗しても、保存済みの項目が必ず使えなくなるわけではありません。サービス事業者がポート、認証情報、通信設定を変更すると、古い項目が一覧に残っていても、現在の設定に合わないことがあります。その場合は、古い内容を何度も読み込み直すのではなく、契約先のサービス事業者に変更内容を確認してください。

1–65535
入力可能なポート番号の範囲。実際の値は接続先サービスによって異なります
443は共通の設定値ではありません
TLSを有効にしても、サーバーの待受ポートが自動で統一されるわけではありません
1項目ずつ/1回ずつ
一度に変更するのは一つの項目だけにし、保存後に同じテストを繰り返します

3. プロトコルのハンドシェイクと通信設定を確認する

AddressとPortが正しいことを確認したら、Typeと関連項目を確認します。プロトコルは名称を変えるだけで互換性が得られるものではありません。同じサーバーアドレスでも、異なるサービス設定が使われている場合があります。次の表は確認箇所の目安です。表示される項目はプロトコルや設定によって異なり、各行の設定をすべての項目にそのまま適用できるわけではありません。

プロトコル主な確認項目判断時の注意点
Shadowsocks暗号化方式、Password、Address、PortPasswordと暗号化方式の両方が一致している必要があります。ポートに接続できても、復号に成功したとは限りません
VMessUUID、暗号化設定、通信方式、サービス事業者が指定する追加パラメーターシステム時刻が大きくずれていると認証に影響することがあります。UUIDだけでなく時刻も確認してください
VLESSUUID、通信方式、TLS、サービス事業者が指定するセキュリティ設定UUIDをコピーしただけでは、利用可能な設定をすべて複製したことにはなりません
TrojanPassword、TLS、Server Name、証明書の信頼状態接続先のIPアドレスとTLS検証に使うドメイン名が異なる場合があります。元の設定どおりに入力してください
Hysteria2認証情報、TLS、サービス事業者が指定する設定、UDPの到達性QUICベースのプロトコルです。TCPテストに成功しても、UDP通信が利用できるとは限りません
WireGuardローカル秘密鍵、対向側の公開鍵、Endpoint、トンネルアドレス、Allowed IPsUDPを使用します。ハンドシェイク成功後も、ルーティングとDNSを確認してください

WebSocketで通信する場合は、PathとHostを確認します。Pathのスラッシュ、大文字・小文字、末尾の文字が異なると、リクエストが正しくないサービスパスに送られることがあります。HostはHTTPリクエストに使われ、Server NameはTLSハンドシェイクでサーバー名として使われます。任意に入れ替えられる同じ項目ではありません。元の設定で同じ値が指定されている場合に限り、同じ値を入力してください。

4. エラーの種類から原因を探り、すべてをタイムアウトと見なさない

該当するリクエストのログや診断結果に、エラーの全文を記録してください。以下はよく見られる低レベルのエラー例です。プラットフォームによって表示される文言は異なることがあります。「接続に失敗しました」とだけ表示される場合は、発生した段階も踏まえて判断してください。一つの語句だけを見て、原因が端末側か接続先側か決めつけないでください。

エラー:i/o timeout

原因と対処:処理が制限時間内に完了しなかったことを示します。名前解決、接続、ハンドシェイクのいずれかで発生する可能性があります。前後のログから接続先アドレスと発生段階を確認し、同じ項目でネットワークを切り替えて比較してください。このエラーだけでパスワードの誤りとは判断できません。

エラー:connection refused

原因と対処:接続要求が明示的に拒否されています。ポートでサービスが待ち受けていない、または接続が拒否されている場合によく発生します。Portを確認し、そのポートの待受状態を契約先のサービス事業者に確認してください。待ち時間を長くしても解決しません。

エラー:no such host

原因と対処:ドメイン名の解決に失敗しています。入力ミス、DNSの設定、ドメインのレコードなどが関係している可能性があります。まずAddressを一文字ずつ確認し、次に現在のネットワークのDNSを確認してください。認証エラーと決めつけないでください。

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

原因と対処:証明書の有効期間と端末の現在時刻が一致していません。まず端末の日付、時刻、タイムゾーンを修正してください。時刻が正しいのにエラーが続く場合は、サーバーの管理者に証明書の有効期間と証明書チェーンを確認してもらいます。

ログで接続確立後に接続先サイトのHTTPエラーが発生している場合は、プロキシ経路の問題と接続先からの応答を区別してください。特定のページで403や429が返されても、接続先サイトのアクセス制限やリクエスト頻度の制限が原因の可能性があり、ノードのポートに接続できないことを意味するとは限りません。応答が発生した時刻と接続先のドメインを記録し、ページ側のアクセス拒否をクライアント全体の障害と誤認しないようにしてください。

5. システム時刻を合わせてからネットワークの出口を確認する

TLSは証明書の有効期間を確認し、一部の認証方式も時刻の範囲に依存します。日付が過去または未来にずれている場合や、端末が長期間オフラインで時刻が同期されていない場合、設定が正しくてもハンドシェイクに失敗することがあります。iPhone/iPadでは、システムのSettings → General → Date & TimeでSet Automaticallyを確認してください。他のプラットフォームでは、システムの日付と時刻の設定で自動同期を有効にし、表示されている時刻が正しいことを確認してから再テストします。

  1. まず直接接続で基準を確認:Shadowrocketの接続を一時停止し、ブラウザーで現在のWi-Fiまたはモバイルネットワークから通常のページにアクセスできるか確認します。ホテルや学校など、ウェブページでの認証が必要なネットワークでは、先に認証を済ませてください。
  2. ネットワークを切り替えて比較:同じ端末、同じ項目、同じ接続先で、Wi-Fiとモバイルネットワークをそれぞれテストします。一方のネットワークだけで失敗する場合は、すべてのプロトコル設定を変更するのではなく、そのネットワークの出口側の制限を優先して確認してください。
  3. UDPの制限を確認:Hysteria2とWireGuardはUDPを使用します。特定のネットワークでこれらが失敗し、すでに設定済みのTCP系接続が使える場合は、UDP経路を確認する手がかりになります。ただし、プロトコルの実装に問題があるとはまだ断定できません。
  4. トンネルの競合を確認:ほかのVPNやネットワークフィルターが接続を処理していないか確認し、競合する設定を一時的に無効にして再テストします。管理対象の端末では管理者のポリシーに従い、組織の制限を回避しないでください。

接続を切っても自動的に再接続する場合は、ShadowrocketのSettings → On Demandを確認し、元の設定を記録してから自動接続の条件を一時的に無効にします。On Demandは接続を開始するタイミングを制御する機能であり、アドレスやパスワード、接続先サービスの状態を修正するものではありません。トラブル対応後は元の用途に応じて設定を戻してください。自動接続を常に無効にすることを一般的な解決策にしないでください。

DNS変更時の注意:名前解決に失敗した場合や明らかに誤った結果が返る場合に限り、DNSを重点的に確認します。すべてのDNS設定を一度に置き換えたり、ドメイン名を安易にIPアドレスへ変更したりしないでください。TLSのサーバー名検証に影響し、元の問題を再現しにくくなることがあります。

6. 遅延は正常でもページが開かない場合はGlobal RoutingとRuleを確認する

ノードテストとアプリからのリクエストでは、処理経路が異なることがあります。Home → Global Routingを開き、まず現在の選択内容を記録してください。Proxyはプロキシ経由のルーティング、Directは直接接続、Configは現在の設定に基づく処理、Sceneは設定済みのシーンに基づく処理です。これらは接続プロトコルの種類ではありません。名称だけでは、現在のページがどの出口を通ったか判断できないため、マッチしたルールと実際に使用された項目も確認してください。

以下はルールの順序と構文の例であり、既存のConfig全体を置き換えるための推奨設定ではありません。example.comはドキュメント用の例示ドメイン、192.0.2.0/24はドキュメント用の例示ネットワークです。自分のアクセス先に照らして読み取り、実際のサービス設定と混同しないでください。

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

ポイント:障害が発生した段階に応じて設定を変更する

ポートに接続できない場合は、まずアドレスとネットワークを確認します。ハンドシェイクに失敗する場合は、認証、TLS、時刻を確認してください。ハンドシェイクと実際のプロキシ経由のアクセスが成功した場合に限り、特定のリクエストが誤ったポリシーに振り分けられていないかを重点的に調べます。

7. 再現できる記録を残し、契約先のサービス事業者に問い合わせる

ここまで確認しても解決しない場合は、「すべてタイムアウトする」とだけ伝えるより、原因を特定できる記録を添えて問い合わせると効果的です。テスト結果と推測を区別してください。たとえば「同じ項目がWi-Fiでは失敗し、モバイルネットワークでは成功する」は再確認できる現象ですが、「サーバーが制限された」は検証が必要な推測です。未テストの内容を結論として書かず、記録をそろえるために認証情報を公開することも避けてください。

当サイトではノードやサブスクリプションの提供、販売、推奨は行っていません。接続先の稼働状況、認証情報の有効性、接続先の設定については、ご自身が利用しているサービス事業者にご確認ください。クライアントの入手と接続サービスは別のものです。設定を確認せずに何度もインストールし直しても、問題の解決にはつながりません。インストールや端末の変更が必要な場合は、当サイトの全プラットフォーム対応ダウンロードガイドで、端末に合った方法を確認してください。

Shadowrocket をダウンロード