Shadowrocketに自分のサービスプロバイダの設定を読み込み済みで、ノードがタイムアウトする、またはWebページを開けない場合の確認手順です。ネットワーク、テスト方法、プロトコル設定、システム時刻、ルールの順に調べ、変更は一度に一つだけにして、サーバーに到達できないのか、認証に失敗しているのか、リクエストが想定したポリシーを通っていないのかを切り分けます。サブスクリプションリンクはサービスプロバイダから入手してください。
1. ノードのタイムアウト・接続失敗・Webページのタイムアウトを切り分ける
「タイムアウト」は、処理が所定の時間内に完了しなかったことを示すだけで、パスワードの誤りやサーバーの停止を直接示すものではありません。Homeでの遅延テスト、プロキシプロトコル接続の確立、プロキシ経由でのWebページ表示は、それぞれ別の確認項目です。VPNが接続済みでも、システムトンネルが接続していることを示すだけで、リモートサーバーの認証成功を保証するものではありません。
どの段階で失敗したかを記録してから、確認する設定を決めます。以下は結果を読み解くための目安であり、特定のノードを実測した結果ではありません。また、遅延の数値だけでサービスの利用可否を判断することはできません。
| 確認できた状況 | 考えられること | 次に確認すること |
|---|---|---|
| TCPテストでは数値が出るが、Webページを開けない | テスト対象のポートに到達できても、プロトコル認証やTLSの成功を示すものではありません | Type、パスワード、TLS、SNIを確認する |
| ICMPテストはタイムアウトするが、実際のWebページは開ける | サーバーまたは経路がICMPに応答していない可能性があります | TCPテストまたは実際のリクエストで確認する |
| 同じWi-Fiでのみ、すべてのノードがタイムアウトする | そのネットワークの出口、認証、通信制限が関係している可能性があります | ネットワークの認証を済ませ、モバイル通信でも比較する |
| 特定のWebサイトだけ開けない | 接続先サイト、DNS、該当サイトに適用されるルールを個別に確認する必要があります | リクエスト記録で適用ポリシーとエラーを確認する |
2. Homeで再現可能なテスト条件を整える
最初からすべての設定を削除しないでください。現在選択中のノード、Global Routingの状態、使用中のネットワークを記録し、変更前の設定を保存して元に戻せるようにします。テスト中は同じノードと接続先ページを使い、各条件で3回ずつ試してください。1回の遅延値だけを見るより、成功回数を記録するほうが参考になります。
-
ネットワークを確認する
Homeで接続スイッチをオフにし、iPhoneのWi-Fiまたはモバイル通信で、正常に開けることが分かっているWebサイトにアクセスできるか確認します。公衆Wi-Fiにログイン認証ページがある場合は、プロキシのテスト前に認証を完了してください。
-
テストするノードを固定する
Homeに戻り、すでに利用しているノードを一つ選びます。ノードの編集画面でサーバーアドレスとポートを確認してください。原因を特定しにくくなるため、サブスクリプションの更新、ノードの切り替え、DNSの変更を同時に行わないでください。
-
テスト方法を確認する
Settings → Connectivity Testを開き、現在のテスト方法を確認します。TCPテストを使う場合は、そのノードが実際に使用するポートを対象にしているか確認してください。その後、Homeに戻ってテストを実行し、方法と結果を記録します。
-
実際のリクエストを確認する
Home → Global Routingで一時的にProxyを選び、接続スイッチをオンにして、決めておいたWebページにアクセスします。テスト後は元の状態に戻してください。Proxyを使うとルールによる振り分けの影響を抑えられますが、ノード設定の誤りは修正されません。
-
ネットワークを切り替えて再テストする
ノードと設定を変えずに、Wi-Fiとモバイル通信の両方でテストを繰り返します。差が安定して再現する場合は、ネットワークの種類と発生時刻を記録してください。一方のネットワークだけで失敗するなら、すべてのプロトコル設定をすぐに変更するのではなく、そのネットワークを優先して確認します。
確認のポイント:ネットワークを変えても失敗するか確かめる
同じノードが一方のネットワークだけでタイムアウトする場合は、設定を維持したままネットワーク経路を確認します。両方のネットワークで失敗する場合は、ポート、認証、サービスプロバイダ側の状態を調べ、特定ネットワークの問題を設定全体の不具合と誤認しないようにします。
3. Typeに応じてポート、パスワード、TLS、SNIを確認する
Homeで該当ノードの編集画面を開き、各項目をサービスプロバイダから提供された設定と照合します。サーバーアドレス、ポート、認証情報は、同じ設定情報に基づいている必要があります。ポート443だから必ずTLSを使うとは限らず、ポート8443だから誤りとも限りません。TLSを有効にするか、どの通信方式を使うかは、サービスプロバイダの設定に従ってください。
| プロトコルまたは項目 | 確認するポイント | よくある誤解 |
|---|---|---|
| Shadowsocks | サーバー、ポート、暗号化方式、パスワード | ポートに到達できるだけで、パスワードも正しいと判断する |
| VMess / VLESS | UUID、サーバー指定の通信設定、TLS設定 | UUIDだけをコピーし、Host、Pathなどの必須項目を設定し忘れる |
| Trojan | パスワード、TLS、サービスプロバイダ指定のSNI | 接続アドレスをすべてのドメイン欄にそのまま入力する |
| Hysteria2 | UDP経路、認証情報、TLS、必要に応じて難読化設定 | TCPポートのテストでUDPプロトコルの利用可否まで判断する |
| WireGuard | PrivateKey、PublicKey、Endpoint、Address、ルーティング範囲 | ハンドシェイクの失敗をTLSやSNIの問題と決めつける |
TLSのSNIは、ハンドシェイク時にサーバー名を指定するために使われ、証明書の検証にも対応する識別情報が必要です。接続先アドレスがIPアドレスで、SNIがサービスプロバイダ指定のドメイン名という場合もあり、両者は一致するとは限りません。WebSocketのHostとPathは別の項目であり、SNIの代わりにはなりません。
- パスワードやUUIDの前後に空白、改行、全角文字が混入していないか確認します。見た目で一文字ずつ推測せず、元の値をコピーし直してください。
- サブスクリプション更新後、編集・テストしているノードが同一か確認します。古いノードと新しい設定を混在させないでください。
- 証明書の検証が必要な場合、検証を無効にする方法を通常の対処として使わないでください。SNI、証明書の有効期間、システム時刻を確認し、サーバー証明書の問題はサービスプロバイダに問い合わせます。
- WireGuardとTLSベースのプロトコルでは確認手順が異なります。TLSを使わないプロトコルにSNI設定を無理に適用しないでください。
4. エラーメッセージから原因を絞り込む
接続記録やログに次のエラーが表示された場合は、該当する項目を確認してください。プロトコルやシステムによって表示文言が異なることがあるため、エラー全文と発生時刻を記録し、似たエラーをすべて「ノードのタイムアウト」と決めつけないでください。記録をサービスプロバイダに送る前に、サブスクリプションの認証情報、パスワード、UUID、秘密鍵を隠してください。
エラー:Connection timed out
原因と対処:所定の時間内に接続が完了しなかった状態です。経路上のパケットロス、ポートのフィルタリング、サーバーの無応答などが考えられます。ノードを固定してネットワークを切り替えながら再テストし、サーバーとポートの状態を利用中のサービスプロバイダに確認してください。
エラー:Connection refused
原因と対処:接続が明示的に拒否されています。ポートで待ち受けていない、または接続先の機器が拒否している場合によく発生します。ポートが現在も有効か確認してください。待ち時間を繰り返し延ばしても解決にはなりません。
エラー:No route to host
原因と対処:現在の経路から接続先アドレスに到達できない状態です。ネットワークのルーティングやアドレスファミリーが関係している可能性があります。まず端末のネットワークが利用できることを確認し、Wi-Fiとモバイル通信の結果を比較してください。
エラー:certificate has expired
原因と対処:端末の現在時刻に基づき、証明書が期限切れと判定されています。まずシステムの日付と時刻を合わせてください。それでも再発する場合は、サービスプロバイダに証明書の有効期間を確認してもらいます。
エラーの発生順序も手がかりになります。たとえば、ドメイン名の名前解決エラーはサーバー接続前に発生するため、その段階でパスワードを変更しても通常は解決しません。TLSハンドシェイクの失敗は基礎的な接続が確立した後に発生するため、ポートを安易に443へ変更するのではなく、TLS、SNI、証明書を優先して確認します。
5. iPhoneのシステム時刻と自動再接続を確認する
システム時刻が大きくずれていると、TLS証明書の有効期間判定に影響し、時刻検証を伴うプロトコル認証にも影響することがあります。Webページ上の日付が正しく表示されても、システム設定の確認にはなりません。日付を手動で変更した場合、長期間オフラインだった場合、端末を復元した直後は、特にこの項目を確認してください。
- iPhoneの「設定」→「一般」→「日付と時刻」を開き、「自動設定」をオンにして、現在の日付と時刻が正しいか確認します。デバイス管理によってこの設定が制限されている場合は、制限の原因も確認してください。
- Shadowrocketに戻り、Homeで接続スイッチをオフにしてから再接続し、テストします。時刻を修正した後の新しい接続で確認してください。
- 手動で切断しても自動的に再接続する場合は、Settings → On Demandを開き、現在の設定を記録してからOn Demandを一時的にオフにし、基本的なネットワークテストを行います。
- 確認が終わったら、必要なOn Demand設定に戻してください。On Demandは条件に応じて接続を確立する機能であり、サーバーのパスワード、証明書、ポートの問題を修正するものではありません。
6. ノードテストに成功してもWebページを開けない場合は、ルールとサブスクリプションを確認する
ノード接続は確立できるのにWebページを開けない場合は、Home → Global Routingを確認します。Proxyはプロキシを利用できるリクエストを選択中のプロキシ経路に送ります。Directは直接接続、Configは現在の設定ルールによる振り分け、Sceneは該当するシーン設定を使います。通常Configを使っている場合は、まず一時的にProxyで比較し、その後Configに戻して適用ルールを確認してください。
Configでは、読み込んだばかりのファイルだけでなく、実際に使用中の設定を確認します。ルールは上から順に照合されます。DOMAIN-SUFFIXはドメインのサフィックス、IP-CIDRはIPアドレスの範囲、GEOIPはIP地理データベースに基づいて照合し、FINALは前のルールに一致しなかったリクエストを処理します。前方のDIRECTやREJECTに一致すると、リクエストが現在のノードを通らないことがあります。
- Proxyでは使えるが、Configでは失敗する:失敗したリクエストに実際に適用されたルールとポリシーを確認します。前方のDIRECTやREJECT、FINALの振り分け先を重点的に確認してください。ルール全体をすぐに削除しないでください。
- ドメイン名でのみアクセスに失敗する:DNSの名前解決エラーと、対象ドメインに想定したルールが適用されているかを確認します。HTTPSサイトをIPアドレスで開く方法だけで代用しないでください。証明書の識別情報が一致しない可能性があります。
- ノード一覧が古いまま:Homeに戻って該当するサブスクリプションを更新し、更新が成功したことを確認してからノードを選び直します。サブスクリプションの更新に成功しても、すべてのサーバーが利用できるとは限りません。
- サブスクリプションの更新にも失敗する:リンクの取得失敗とノードの接続失敗を切り分けます。サブスクリプションには独自の有効期限やアクセス条件が設定されている場合があります。利用中のサービスプロバイダから有効なリンクを入手し、アカウントの状態を確認してください。
遅延が数十ミリ秒なのに、Webページを開けないのはなぜですか?
遅延テストの数値が示すのは、そのテストの結果だけです。認証、TLS、接続先サイトへのアクセスがすべて成功することを保証するものではありません。まずHome → Global Routingで一時的にProxyを選び、実際のリクエストをテストしてからノード設定を確認します。Configだけで失敗する場合は、ルールを調べてください。
すべてのノードがタイムアウトします。全部読み込み直す必要がありますか?
一括削除は避けてください。接続をオフにして基本ネットワークが利用できることを確認し、Settings → On Demandが切断状態に影響していないか調べてから、同じノードでネットワークを切り替えて再テストします。設定が期限切れ、または内容に誤りがあると確認できた場合に限り、自分のサブスクリプションを更新してください。
Wi-Fiでは使えるのに、モバイル通信でタイムアウトするときは?
同じノード、Global Routing、接続先ページを使い、3回テストして結果を記録します。アプリでモバイルデータ通信が許可されているか確認してください。UDPプロトコルだけが失敗する場合は、ネットワークの種類とプロトコル情報を利用中のサービスプロバイダに伝え、経路の制限について確認します。
時刻を合わせても証明書の期限切れと表示される場合は?
接続を確立し直し、証明書エラーの全文を記録して、サービスプロバイダ指定のSNIを確認します。システム時刻が正しいのにエラーが続く場合は、証明書と証明書チェーンをサービスプロバイダに確認してもらってください。証明書検証をスキップして対処しないでください。
7. 再現条件を記録してからサービスプロバイダに問い合わせる
上記の確認後、単に「タイムアウト」と表示された画面を送るより、再現可能な情報をまとめて利用中のサービスプロバイダに伝えるほうが役立ちます。ネットワークの問題、設定ミス、ルールの問題を切り分けられる情報を記録し、認証情報は漏らさないようにしてください。
- 発生時刻とタイムゾーン、iPhoneのシステム時刻が自動設定で調整済みかどうか、Wi-Fiとモバイル通信のどちらを使っていたか。
- ノードのプロトコル種別、ポート、テスト方法、3回のテストでの成功回数。パスワード、サブスクリプションリンクの全文、PrivateKeyは送らないでください。
- Global Routingの状態、ProxyとConfigで結果に違いがあるか、特定のWebサイトだけに影響するか。
- エラーの全文、失敗した段階、試した変更内容。ネットワークを切り替えた場合にも再現するか。
アプリの購入とサービスプロバイダが提供する接続サービスは別のものです。Shadowrocketはクローズドソースの商用アプリで、App Storeから一度購入して入手できます。アプリの買い切り料金に接続サービスの利用料金は含まれません。主な対応デバイスはiPhoneとiPadです。Mac、Apple TV、Apple Visionの互換性とシステム要件は、App Storeの掲載内容をご確認ください。アプリを再インストールしても、リモートサーバーのポート、認証情報、証明書の問題は通常解決しません。まず原因を切り分け、元の設定を保存してください。