この記事は、自分で契約しているサービスのサブスクリプションをShadowrocketで利用している方向けです。まずHomeで手動更新し、一覧を確認します。次にSettings → Subscribeで起動時の更新を有効にします。更新に失敗した場合は、ネットワーク、更新経路、リンクの有効性を順に確認してください。サブスクリプションの更新で取得するのはサービス提供元から返される一覧です。契約の更新やGlobal Routingの切り替え、Config内のルール更新とは異なります。
サブスクリプション更新の対象:サーバー一覧。ルールやプランではありません
Shadowrocketは保存したサブスクリプションURLにリクエストを送り、読み取れるサーバー項目をHomeに反映します。サービス提供元がURL、ポート、認証情報、サーバー名を変更しても、接続をオンにするだけでは端末内の古い項目は更新されません。サブスクリプションを再取得してください。新しい項目が表示されるかどうかは、サービス提供元から実際に返される内容によって異なります。
まず、対象の項目がサブスクリプション由来であり、サーバーを個別に手動登録したものではないことを確認します。サブスクリプションURLがなく、サーバー情報だけを個別に入力している場合、下に引いても新しい一覧は取得できません。サブスクリプションを初めて追加する場合は、Home右上の「+」→ Type → Subscribeを開き、自分のサブスクリプションURLを入力して保存します。すでに読み込み済みなら、毎回追加し直す必要はありません。
- サブスクリプション一覧:サブスクリプションURLから取得します。更新により項目が追加、削除、変更されることがありますが、一覧の件数が変わるとは限りません。
- Config:設定ファイルとルールを管理します。サーバーのサブスクリプションを更新しても、Configで別途管理している設定ファイルは更新されません。
- Global Routing:接続にConfig、Proxy、Directなど、どの処理方式を使うかを決めます。サブスクリプションの更新頻度を設定する項目ではありません。
- サービスの有効期間:契約先のサービス提供元が管理します。更新を繰り返しても、プランの有効期間や利用可能量は増えません。
Homeで手動更新する:更新後に結果を確認
手動更新は、初回読み込み後の確認、サービス提供元から変更の連絡があった場合の同期、自動更新に失敗した場合の確認に適しています。操作前に、端末がネットワークに正常に接続されていることを確認してください。Homeに複数のサブスクリプショングループがある場合は、対象グループ名を控えておきましょう。別のグループの変化を今回の更新結果と取り違えずに済みます。
-
対象を確認
Homeを開き、更新するサブスクリプショングループを探します。そのグループが、個別サーバーの接続情報ではなく、自分が現在利用しているサービス提供元のサブスクリプションURLを使っていることを確認してください。
-
下に引いて更新
Homeの一覧を下に引き、サブスクリプションを更新します。複数のグループがある場合は、それぞれの更新結果を確認してください。一つのグループで成功しても、すべて更新できたとは限りません。
-
更新結果を待つ
更新が完了するまで待ち、タイムアウトや解析エラーなどの表示が出たか記録します。リクエスト処理中に何度も更新したり、サブスクリプションURLを変更したりしないでください。
-
項目を確認
対象グループを開き、サービス提供元が告知した新しい名称や項目が表示されているか確認します。選択中のサーバーが削除されていた場合は、一覧に残っている利用可能な項目を選び直してください。
-
接続を確認
実際に利用するページやサービスにアクセスし、接続を確認します。「更新に成功したか」と「選択したサーバーを利用できるか」は別々に記録し、一つの結果としてまとめないでください。
たとえば、更新前後で項目数がどちらも12件でも、更新されていないとは限りません。名称と件数が同じまま、項目のサーバーアドレスだけ変わっている場合があります。逆に、新しい名称が表示されても、すべてのサーバーに接続できるとは限りません。一覧の件数だけで判断せず、更新結果、予想される変更、接続状況を合わせて確認してください。
起動時に自動更新する:Settings → Subscribe
手動更新の手間を減らすには、Settings → Subscribeを開き、Update on Open(アプリ起動時に更新)をオンにします。設定後、次にShadowrocketを開いたときにHomeで更新結果を確認してください。初回設定後も、サブスクリプションURLと現在のネットワーク経路が正常に利用できることを確かめるため、一度手動更新することをおすすめします。
「起動時」とは、アプリを開いたときに更新を行う動作です。一定間隔でバックグラウンドから定期的にアクセスすることや、アプリが常にバックグラウンドで新しい一覧を取得することを意味しません。実際に更新が完了するタイミングは、システムの動作、ネットワーク状況、アプリがほかのリクエストを処理中かどうかなどに左右されます。この設定を契約期限の通知や接続維持の機能として使わないでください。
更新方法は2種類:使い方に合わせて選ぶ
手動更新
- 場所:Homeの一覧を下に引いて更新します。
- 用途:初回確認、変更通知を受けたとき、エラーの確認。
- メリット:一度の操作でリクエスト結果と一覧の変化を確認できます。
- 注意:関連する設定は一度に一つだけ変更し、更新して結果を確認してください。
起動時に更新
- 場所:Settings → Subscribe → Update on Open。
- 用途:サブスクリプションの有効性を確認済みで、アプリ起動時に一覧を同期したい場合。
- 前提:アプリ起動時にサブスクリプションURLへアクセスできること。
- 注意:アプリを開くだけでリクエストが必ず成功するわけではありません。
まず手動更新で有効性を確認してから起動時の更新を有効にしてください。併用できるため、サブスクリプションを何度も削除して読み込み直す必要はありません。
自動更新で新しい一覧を取得できない場合は、まず同じネットワークで手動更新してください。手動更新も失敗するなら、ネットワークまたはURLを確認します。手動では成功するのに起動時の更新が完了しない場合は、設定がオンになっているか、アプリ起動時も手動更新時と同じネットワーク条件を満たしているかを確認してください。
Update via ProxyとOn Demandの違い
現在のネットワークからサブスクリプションURLに直接アクセスできなくても、利用可能な接続を経由すればアクセスできる場合があります。その場合はSettings → SubscribeにあるUpdate via Proxyを確認してください。この設定はサブスクリプションのリクエストをプロキシ経由で送るかどうかを決めるもので、期限切れのtokenを修復したり、無効になったサーバーを再び利用可能にしたりするものではありません。
サブスクリプションのリクエスト経路
- 項目
- Settings → Subscribe
- 設定
- Update via Proxy
- 用途
- サブスクリプションの更新リクエストをプロキシ経由で送ります。
- 前提
- 利用可能なサーバーがあり、該当する接続経路が確立されていること。
この設定を切り替えたらHomeに戻って手動更新し、結果を比較します。タイムアウトしたからといって、必ずオンにする必要はありません。
自動接続の条件
- 項目
- Settings → On Demand
- 用途
- 設定したネットワーク条件に応じて、VPN接続を開始または停止します。
- 更新との関係
- 接続が利用可能かどうかに関係しますが、サブスクリプションの更新に代わるものではありません。
- 確認方法
- まず現在の接続状態を確認し、その後Homeで更新を試します。
On DemandとUpdate on Openは別の設定です。前者は接続条件を制御し、後者はアプリ起動時のサブスクリプション同期を行います。
原因を切り分けるため、比較条件をそろえてください。まず現在のネットワークで一度更新し、エラーを記録します。利用可能なサーバーに接続できる場合は、その接続を確立してUpdate via Proxyを確認してから再試行します。ネットワーク、Global Routing、複数のサブスクリプション設定を同時に切り替えると、更新できても何が影響したのか判断しにくくなります。
更新に失敗した場合:症状ごとに確認
まず元のサブスクリプションは残してください。「削除して追加し直す」ことから始めるのは避けましょう。同じ無効なURLを再登録しても同じ結果になることが多く、比較に役立つグループや選択状態を失う可能性があります。エラー表示、発生時のネットワーク、Update via Proxyの設定、問題が特定のグループだけで起きるかを記録すると、原因を特定しやすくなります。
下に引いてもタイムアウトする場合、まずどの設定を変えるべきですか?
まず、現在のWi-Fiでネットワーク認証が完了していることを確認し、Homeで再試行します。通常のインターネット接続に問題がないのにサブスクリプションのリクエストがタイムアウトする場合は、自分が利用できる別のネットワークで比較してください。利用可能なプロキシ接続がある場合は、Settings → Subscribe → Update via Proxyも確認します。一度に変える条件は一つにして、結果を記録してください。
解析エラーが表示されます。ネットワークを変えても直らないのはなぜですか?
解析エラーは、URLから有効なサブスクリプションではなく、ログイン画面、エラーメッセージ、非対応の内容が返されている可能性があります。契約先のサービス提供元のサブスクリプション管理画面に戻り、URL全体をコピーし直してください。プランの説明ページや個別サーバーの情報ではないことも確認します。それでも解決しない場合は、エラーの内容を添えてサービス提供元に問い合わせ、返されるデータ形式を確認してください。
昨日は更新できたのに、今日は権限がないと表示される場合は?
契約先のアカウントの有効期間と、サブスクリプションtokenがリセットされていないか確認してください。リクエスト結果にHTTP 401または403が含まれる場合は、まず認証情報とサービスの状態を確認します。403はサーバー側のアクセス制限が原因の場合もあるため、ステータスコードだけで契約切れと判断しないでください。新しいURLを取得したら、対象のサブスクリプションを変更してから更新します。
更新に成功したのに、一覧が変わらないのはなぜですか?
まず対象のサブスクリプショングループを確認し、サービス提供元が実際に変更を公開したか確認してください。同じ名前でも、接続パラメーターが更新されている場合があります。返された内容に変更がなければ、一覧が変わらないのは正常です。件数を変えるためにリクエストを何度も繰り返さないでください。
更新後に一覧が空になりました。すぐサブスクリプションを削除すべきですか?
まずグループが展開されているか、検索フィルターが適用されていないか確認し、更新時に解析エラーがなかったかを確認します。URLが完全でサービスも有効なのに一覧が空の場合は、そのアカウントに返される内容を契約先のサービス提供元に確認してください。原因が分かるまではURLとエラーの記録を残し、設定をすべて削除する操作を繰り返さないでください。
サブスクリプションURLの例は https://example.com/sub?token=xxxx のような形式ですが、これは利用できないサンプルです。実際のURLのパス、パラメーター名、文字列は、契約先のサービス提供元から案内された内容に従ってください。コピー時に改行、空白、チャットの文言を含めないでください。また、疑問符以降のパラメーターを勝手に削除しないでください。&などの区切り文字にも意味があるため、URL全体をコピーしてください。
更新後の確認:一覧の同期と接続の可否は分けて判断
サブスクリプションのリクエスト成功が示すのは、クライアントが返された内容を取得して処理できたことだけです。サーバーに到達できるか、認証情報が有効か、Global Routingが想定どおりかは、接続に関する別の確認項目です。一覧が更新されてもアクセスに失敗する場合、更新を繰り返しても通常はルールや接続の問題は解決しません。
- 選択状態を確認:Homeに戻り、選択中のサーバーが更新後のグループに残っているか確認します。元の項目が削除されている場合は選び直してください。
- モードを確認:ルールに基づいて通信を振り分ける場合は、Global RoutingがConfigになっていることと、実際に適用される設定を確認します。ProxyとDirectでは処理が異なるため、同じテスト条件として扱わないでください。
- ルールを確認:Config内のDOMAIN-SUFFIX、IP-CIDR、GEOIPなどのルールやFINALのフォールバックはルール設定です。サーバーのサブスクリプションを更新しても、自動的には修正されません。
- 認証情報を確認:特定のサーバーだけ接続に失敗する場合は、同じグループ内のほかの項目と個別に比較してください。一つの接続障害を、サブスクリプション全体の更新失敗と取り違えないようにします。
- 自動更新を確認:手動更新が正常に動作することを確認したら、Update on Openの設定を維持し、次回アプリを開いたときに結果を確認します。何度もアプリを終了・起動してリクエストを繰り返す必要はありません。
日常の確認手順を決めておくと便利です。サービス提供元から変更の連絡があったらHomeで手動更新し、想定した項目を確認して現在の選択を見直し、実際にアクセスして接続を確かめます。通常は起動時の更新で同期を補えます。失敗した場合は、リクエスト、内容の解析、接続のどの段階で問題が起きたかを切り分け、該当する箇所を確認してください。