Shadowrocketに自分のサブスクリプションを追加済みの方向けです。まずHomeで手動更新を試し、次にSettings → SubscribeでUpdate on Openを確認します。更新できない場合は、ネットワーク、リンク、応答内容、リクエスト間隔を順に確認してください。サブスクリプションの更新はサーバー一覧を再取得する操作であり、接続テストやConfig内のルール更新とは別です。
サブスクリプション更新の範囲:リスト・接続・ルールは別々に管理
ShadowrocketはAppleプラットフォーム向けのクローズドソースの有料アプリです。主にiPhone / iPadで利用でき、購入・インストールはApp Storeのみから行えます。買い切り方式ですが、アプリの購入と接続サービスの契約は別です。この記事では、利用者が自身のサービス提供元とサブスクリプションをすでに用意していることを前提とします。当サイトではサーバー、サブスクリプション、サービス提供元を提供・販売・推奨していません。価格、システム要件、購入に関する一般的な適用条件はApp Storeの掲載内容をご確認ください。
サブスクリプションの更新では、保存済みのアドレスに再度リクエストを送り、応答からサーバー情報を読み込みます。提供元がサーバーアドレス、ポート、名前、認証情報を変更すると、更新後のリストも変わることがあります。変更がなければ、更新が成功してもリストは同じままです。「件数が変わらない」ことだけを理由に、更新失敗とは判断できません。
Homeのサブスクリプション一覧、Configの構成ファイル、システム上のVPN接続は、それぞれ別のものです。サブスクリプションのリクエストが成功しても、すべてのサーバーに接続できるとは限りません。また、接続が正常でも、サブスクリプションのアドレスが有効とは限りません。問題が起きた層を特定してから、適切な操作を選んでください。
手動更新:まず1つのサブスクリプションを更新して結果を確認
最初の確認では、原因を切り分けやすくするため、まず1つのサブスクリプションを更新してください。以下の手順は追加済みのグループを対象としており、同じアドレスを再追加する必要はありません。同じアドレスを何度も追加すると、同名のグループができて確認しにくくなることがあります。
- Homeを開きます。更新するサブスクリプショングループを見つけ、単独で手動追加したサーバーではなく、そのグループ内のサーバーが表示されていることを確認します。
- サブスクリプショングループを操作します。グループ名を長押しし、表示されたメニューから
Updateを選択します。サーバーの個別項目ではなく、グループ名を操作してください。 - リクエストが完了するまで待ちます。処理中に何度もタップしないでください。結果のメッセージを確認し、画面に更新時刻が表示される場合は記録しておきます。
- リストの内容を確認します。グループが残っているか、項目がそろっているか、提供元から変更の連絡があった名前やアドレスが反映されているかを確認します。件数が同じでも、内容が更新されていないとは限りません。
- 接続は別途確認します。選択中のサーバーが削除または改名された場合は、一覧に残っているサーバーを選び直します。必要に応じて再接続し、実際にアクセスできるか確認してください。
Homeの一覧を下に引っ張って更新する操作でも、サブスクリプションの更新を開始できます。複数のグループを管理している場合、ほかのグループにもリクエストが送られることがあるため注意してください。特定のアドレスの問題を調べる場合は、そのグループのUpdateを使うと、表示された結果と対象を対応づけやすくなります。メニューの位置や表示方法は、現在のアプリ画面をご確認ください。
起動時の自動更新:Update on Openを設定
まず手動更新が成功することを確認してから自動更新を有効にすると、「リクエスト自体の失敗」と「自動更新の条件が満たされていない状態」を切り分けられます。Update on Openはアプリ起動時にサブスクリプションの更新を開始する機能です。バックグラウンドで定期的にダウンロードする機能ではなく、アプリを前面に切り替えるたびに必ず新しいリクエストを送るものでもありません。
- Settings → Subscribeを開き、Update on Openを有効にします。
- 同じ画面に更新間隔の設定がある場合は確認します。まず現在の値を維持して記録し、短時間に何度もアプリを開けば必ず再リクエストされるとは考えないでください。
- Homeに戻り、対象のサブスクリプショングループはそのままにします。設定された間隔が経過してからアプリを再度開き、更新メッセージや画面に表示される時刻を確認してください。
- 画面に変化がない場合は、そのグループのUpdateを1回実行します。手動更新は成功するのに自動更新されない場合は、スイッチ、間隔、起動時のネットワーク状態を優先して確認してください。すぐにサブスクリプションアドレスを変更する必要はありません。
アプリを開くこととVPNに接続することは別の操作です。Settings → On Demandでは、条件に応じて接続を開始する動作を管理します。サブスクリプションは更新しないため、On Demandを有効にしてもUpdate on Openの代わりにはなりません。一方、On Demandが無効でも、リクエストに必要なネットワークが使えれば手動更新できます。
まとめ:まずリクエストを確認し、次に自動更新の条件を確認
同じサブスクリプションの手動更新が成功した後に、自動更新が設定間隔に応じて実行されるかを確認します。手動更新も失敗する場合はネットワークとリンクを調べてください。自動更新のスイッチを切り替えても、提供元からの応答に関する問題は解決しません。
更新できないときは、エラーの種類に応じて対処
エラーはシステムのネットワーク層、HTTP応答、または内容の解析時に発生することがあります。以下の英文はネットワークエラーの詳細に表示される場合がある原文です。アプリで毎回同じ形式で表示されるとは限りません。実際のメッセージを記録し、発生時刻と照らし合わせてください。すべてのエラーをサブスクリプションの期限切れと決めつけないようにしましょう。
ネットワークの詳細:The request timed out.
原因:制限時間内にリクエストが完了しませんでした。ネットワークに接続できない、提供元の応答が遅い、現在のプロキシ経由の経路が使えない、といった原因が考えられます。
対処法:まずWi-Fiとモバイル通信を切り替えて比較し、同じグループを更新します。サブスクリプションアドレスにだけアクセスできない場合は、利用可能な既存の接続を経由して更新する必要があるか確認してください。
ネットワークの詳細:A server with the specified hostname could not be found.
原因:サブスクリプションアドレスのホスト名を解決できません。リンクの入力ミス、ドメインの無効化、現在のネットワークでの名前解決の異常などが考えられます。
対処法:追加済みのサブスクリプションのドメインとアドレス全体を確認し、別のネットワークでも試します。ドメインを安易にIPアドレスへ変更しないでください。HTTPS証明書の検証やサーバー側の識別に影響するおそれがあります。
HTTPステータス:403 Forbidden
原因:サーバーが今回のリクエストを拒否しています。認証、アクセス制限、セキュリティポリシーなどが関係している可能性があり、ステータスコードだけでアプリの不具合とは判断できません。
対処法:自身のサービス提供元のアカウントでサブスクリプションの権限と現在のアドレスを確認し、ステータスコードと発生時刻を伝えて調べてもらいます。短時間に何度もリクエストしないでください。
HTTPステータス:429 Too Many Requests
原因:提供元がリクエスト頻度を制限しています。何度も更新すると、内容を正常に取得できない時間が長引くことがあります。
対処法:連続タップをやめ、提供元の案内に従って待ちます。応答にRetry-Afterが含まれている場合は、指定された時間または時刻まで待ってから再試行し、自動更新の間隔も確認してください。
アドレスからログインページ、認証ページ、通知ページが返された場合、HTTPステータスが200でも、解析可能なサブスクリプションが返されたとは限りません。解析エラーやリストが空になることがあります。自身のサービス提供元のアカウントでサブスクリプションの取得先を確認し、Webページのアドレスをサブスクリプションアドレスとして使わないでください。
- リンクの完全性:前後の空白や改行、欠落したクエリパラメーターがないか確認します。コピー時にtokenが途中で切れていないか、特に注意してください。
- 認証状態:サブスクリプションがリセット、取り消し、または差し替えられていないか確認します。以前使えたリンクでも、現在有効とは限りません。
- 応答内容:提供元から返されているのが、現在のアプリで利用できるサブスクリプション情報であることを確認します。アカウント管理ページや説明文だけが返されている場合は利用できません。
- 証明書の異常:まずデバイスの日付と時刻が正しいか確認し、証明書について自身のサービス提供元に問い合わせます。セキュリティ検証を無効にして問題を隠さないでください。
Update via Proxy:利用可能な接続を確認してから経路を選択
現在の直接接続ではサブスクリプションアドレスにアクセスできず、既存のサーバーは利用できる場合は、Settings → Subscribe → Update via Proxyを確認できます。この項目はサブスクリプション更新時のネットワーク経路を切り替えるもので、利用可能なサーバーを追加したり、取り消し済みのリンクや誤った応答内容を修復したりする機能ではありません。
- Homeで、すでに追加済みで利用可能と確認できているサーバーを選び、接続スイッチをオンにして実際にネットワークへアクセスできることを確認します。
- Settings → Subscribeを開き、Update via Proxyを有効にしてからHomeに戻り、同じグループのUpdateを1回実行します。
- 設定を切り替える前後の結果を比較します。既存の接続を経由した場合にのみ成功するなら、該当する設定を維持できます。どちらの経路でも失敗する場合は、アドレスと提供元の状態を引き続き確認してください。
- 追加済みのサーバーがすべて利用できない場合は、まず接続の問題を解決するか、自身のサービス提供元に現在有効な情報を確認してください。使えない接続で何度も更新を試すのは避けましょう。
Global RoutingのConfig、Proxy、Direct、Sceneは、トラフィックの処理方法に関する項目です。サブスクリプションの更新間隔を設定するものではありません。特にDirectを「サブスクリプションを強制更新する設定」と解釈したり、Proxyに切り替えれば必ず更新できると考えたりしないでください。診断では一度に変更する要素を1つにし、結果を記録します。ルーティング、DNS、サブスクリプションの設定を同時に変えると、原因を特定できなくなることがあります。
まとめ:再現できる条件を1組ずつ記録
同じサブスクリプションについて、ネットワークの種類、Update via Proxyの状態、更新結果をそれぞれ記録してください。安定して再現できる差を確認するほうが、サブスクリプションを何度も追加し直すより原因を特定しやすくなります。
よくある質問:更新間隔、リストの変化、ルールの更新
アプリを開いても更新されないのは、自動更新の故障ですか?
まずSettings → SubscribeでUpdate on Openが有効になっていることと、画面に表示される更新間隔を確認します。間隔が経過してから再度確認し、その後、手動でUpdateを実行してください。自動更新の条件に関する問題か、リクエスト自体の失敗かを切り分けられます。サーバーの件数が変わらないことだけで判断しないでください。
更新後、以前のサーバーが一覧から消えたのはなぜですか?
再取得した内容で、そのサーバーが削除または改名された可能性があります。まず正しいグループを見ているか確認し、現在の一覧からサーバーを選び直してください。提供元の想定と実際の内容が異なる場合は、自身のサービス提供元に応答内容を確認します。見覚えのないアドレスを編集してサーバーを追加しないでください。
自動更新の間隔は、できるだけ短く設定してもよいですか?
間隔を短くしても、安定性が高まるとは限りません。自身のサービス提供元の指定に従って設定してください。提供元側で変更がないときにリクエストを繰り返しても、新しい内容は得られません。429が表示されたら再試行を止めて待ち、手動更新と自動更新が重ならないようにしてください。
サブスクリプションを更新すると、DOMAIN-SUFFIXルールも更新されますか?
サブスクリプションの更新だけでは判断できません。サーバーのサブスクリプションとConfig内のルール管理は別の操作です。構成を更新する場合は、Configで現在有効なファイルとその取得元を確認してください。DOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALの内容と順序は個別に確認します。
更新に失敗しても古いリストで接続できます。すぐ削除すべきですか?
まず古いリストを残し、エラーを記録して追加済みのサブスクリプションアドレスを確認してください。以前の接続が使えることから分かるのは、そのサーバーに現在接続できるということだけです。サブスクリプションの利用権限が正常とは限りません。新しいアドレスが有効で、更新も成功したことを確認してから、重複または無効になったグループを整理してください。