利用中のサービス提供元とサブスクリプションがある場合は、まずHomeで手動更新し、結果を確認してから起動時の自動更新を設定しましょう。この記事ではiPhone / iPad版Shadowrocketを例に、リクエスト失敗・解析失敗・更新後の接続失敗を見分ける方法を説明します。Mac、Windows、Android、Linuxでも確認の考え方は同じですが、メニューの場所は各プラットフォームの画面で確認してください。
1. サブスクリプション更新で反映される内容・されない内容
サブスクリプションを更新すると、登録済みのサブスクリプションURLに再度アクセスし、応答に含まれるサーバー項目を該当グループに読み込みます。サービス提供元がアドレス、ポート、項目一覧を変更した場合、変更を反映するには再取得が必要です。更新に成功しても、すべての項目に接続できるとは限らず、サービス提供元のアカウントが更新されたことを意味するものでもありません。
HomeのサーバーサブスクリプションとConfigのルール設定は別のものです。サーバーサブスクリプションを更新しても、Configファイル内のDOMAIN-SUFFIX、GEOIP、IP-CIDR、FINALルールまで更新されるわけではありません。トラブル時は、まずどの段階で問題が起きているか確認しましょう。項目を更新するためにルール設定を何度も入れ替える必要はありません。
2. Homeでサブスクリプションを手動更新する
初回の読み込み後、サービス提供元から項目変更の連絡があったとき、または一覧が長期間変わらないときは、手動で更新してみましょう。操作前に対象グループ名を確認してください。複数のサブスクリプションがある場合は、更新後に同じグループを確認します。Home上部で選択中のサーバー名だけを見て判断しないでください。
- Homeを開きます。画面にサブスクリプショングループが表示されていることを確認してください。手動で追加したサーバーはサブスクリプションではありません。サブスクリプションURLがなければ、更新してもリモートの一覧は取得できません。
- 画面を下に引いて指を離します。サブスクリプションの更新が始まったら、リクエストが完了するまで待ちます。処理中に何度も引き下げると、複数回の結果が混ざり、判断しにくくなるため避けてください。
- 対象グループを確認します。項目が残っているか、名前に変更があるか、エラーメッセージが表示されていないかを確認します。サブスクリプションごとに成功・失敗が分かれることがあるため、1つのグループに変化があっても、すべてのグループが更新されたとは限りません。
- 有効な項目を選んで接続をテストします。選択中の項目が削除されていた場合は、更新後の一覧から選び直してください。まずサブスクリプションを取得できたか確認し、その後に実際のアクセスをテストします。2つの確認は分けて行いましょう。
一覧の項目数が変わらないことだけで、更新失敗とは判断できません。リモート側でアドレスやポートだけが変更された可能性も、内容が更新されていない可能性もあります。逆に項目数が増えても、異なる一覧を取得できたことが分かるだけで、接続テストの代わりにはなりません。更新確認のためにサブスクリプションをすべて削除すると、調査に必要な元のグループやURLの手がかりも失われるため避けてください。
3. 起動時の自動更新を有効にする方法と対象範囲
iPhone / iPadでは、Settings → SubscribeでUpdate On Openを探して有効にします。アプリを開いたときにサブスクリプションを更新する機能で、Homeを表示した際に新しい一覧を取得したい場合に便利です。画面上の表記が異なる場合は、「アプリを開いたときにサブスクリプションを更新する」設定かどうかを確認し、別の機能を誤って有効にしないようにしてください。
- まずHomeに戻って手動更新し、URLが利用できることを確認します。
- Settings → Subscribe → Update On Openを開き、この項目を有効にします。
- 次にアプリを開いたときは、サブスクリプションのリクエストが完了するまで待ってから、グループの内容を確認してください。一覧がすぐに変わるかどうかだけで判断しないようにしましょう。
- アプリを開くたびに同じエラーが出る場合は、下記の手順でネットワークやURLを確認してください。スイッチのオン・オフを繰り返しても、問題の解決にはなりません。
起動時の自動更新は、一定間隔でバックグラウンド更新を繰り返す機能でも、サービス提供元が内容を公開した直後にプッシュ通知を受け取る機能でもありません。アプリがバックグラウンドにあるとき、端末がロックされているとき、またはシステムがバックグラウンド動作を制限しているときに、サブスクリプションが更新されたと判断することはできません。最新の内容を確認するには、Homeに戻って手動更新してください。
| 設定・操作 | 動作 | この設定だけでは判断できないこと |
|---|---|---|
| Homeで下に引いて更新 | サブスクリプションの内容を手動で取得する | すべてのサーバーで接続テストに成功したこと |
| Update On Open | アプリを開いたときにサブスクリプションを更新する | 画面ロック中に一定間隔で更新すること |
| Settings → On Demand | 設定した条件に応じてVPN接続を開始する | サブスクリプション一覧を自動取得・修復すること |
まとめ:手動更新を確認してから自動更新を有効にする
手動更新にも失敗する場合は、まず同じURLへのアクセス経路を確認してください。自動更新で変わるのは更新のタイミングだけです。期限切れのtoken、不正な応答、サービス提供元のアカウント状態は修正されません。
4. 更新に失敗したらネットワーク・URL・サービス提供元の順に確認
まず「有効な応答を受信できていない」場合と「内容は受信したが解析できない」場合を切り分けます。前者ではネットワーク、DNSによる名前解決、リクエスト経路を確認します。後者ではURLが正しいか、サブスクリプションの内容ではなくログインページやエラーページが返されていないかを確認してください。「失敗」という表示だけを見てプロトコルを変更しても、原因の解決につながらないことがほとんどです。
- ネットワーク接続を確認します。Wi-Fiまたはモバイル通信でインターネットに接続できることを確認してください。Webログインが必要なネットワークでは、先に認証を済ませます。別のネットワークに切り替えて再度更新する場合は、一度に変更する条件を1つにしてください。
- 更新リクエストの経路を確認します。現在の直接接続ではサブスクリプションのドメインにアクセスできず、利用可能なサーバーに正常に接続できる場合は、Settings → SubscribeでUpdate via Proxyを確認し、有効にしてから再試行します。利用可能な接続がない場合、この設定を有効にしても初回取得の問題は解決しません。
- URL全体を確認します。サービス提供元のアカウントページからサブスクリプションURLをコピーし直し、スキーム、ドメイン、パス、クエリパラメーターを確認してください。アカウントのログインページやWebページのタイトル、説明文を一緒に貼り付けないようにしましょう。
- サービス提供元側の状態を確認します。アカウントで有効期限、使用量、サブスクリプションのリセット有無、メンテナンスのお知らせを確認してください。tokenがリセットされていると古いURLは無効になることがあります。その場合はサービス提供元の案内に従ってURLを変更します。
https://example.com/sub?token=xxxx
上記は構造を示す例であり、利用可能なサブスクリプションではありません。?以降のパラメーターもURLの一部です。複雑に見えても削除しないでください。また、パラメーターを追加したりポートを変更したりしないでください。サブスクリプションURLにはアクセス用の認証情報が含まれることがあります。スクリーンショットや調査記録を共有する前に、token全体を隠し、URLを公開しないようにしてください。
エラー:The request timed out.
原因と対処:制限時間内にリクエストが完了しませんでした。ネットワークまたはリモート側の応答に問題がある可能性があります。まずインターネット接続を確認できたネットワークに切り替えて再試行し、利用可能な接続を経由した更新が必要か確認してください。短時間に何度も更新するのは避けましょう。
エラー:A server with the specified hostname could not be found.
原因と対処:リクエスト先のホスト名を解決できませんでした。サブスクリプションのドメインを誤って入力していないか確認し、ネットワークを切り替えて再試行してください。それでも解決しない場合は、ドメインが変更されていないかサービス提供元に確認しましょう。
エラー:Failed to load subscription
原因と対処:サブスクリプションを読み込めませんでした。このメッセージだけでは具体的な原因を特定できません。まずURL全体とアカウントの有効性を確認し、ログインページやエラーページが返されていないか調べてください。あわせて表示された詳細メッセージも記録しましょう。
上記の英語メッセージは、問題の種類を見分けるためのエラー例です。実際の表示はシステムや失敗した段階によって異なる場合があります。HTTP 401または403の場合は、認証、token、アクセス制限を優先して確認してください。429の場合は短時間の再試行をやめ、リモート側の指示に従って待ちます。これらのステータスコードは調査の手がかりであり、「アカウントの期限切れ」と即断しないでください。
5. 更新成功後に一覧が空、または接続できない場合
サブスクリプションのリクエストに成功したということは、取得処理が完了したという意味にすぎません。リモート側から空の一覧や対応していない形式のテキスト、あるいは正常なステータスのWebページが返される場合もあります。項目が空の場合は、サービス提供元が案内するURLがShadowrocketに対応したサブスクリプションか確認してください。Webページが開けることだけでは、形式が正しい証明にはなりません。
- 特定のグループだけが空:まず、そのグループのURLと関連アカウントの状態を確認します。問題のない他のグループを先に削除する必要はありません。
- 項目はあるが接続できない:更新後も有効な項目が選択されていることを確認し、端末のネットワークとサービス提供元側の利用状況を確認してください。
- 一部のWebサイトへの接続経路が想定と異なる:Home → Global Routingを確認します。Configは設定されたルールに従って通信を振り分け、ProxyとDirectはそれぞれプロキシ経由と直接接続を使用します。Sceneはシーン関連の設定であり、サブスクリプションの更新ボタンではありません。
- 更新すればルールも修正されると思っていた:Configで現在有効な設定を個別に確認してください。サーバー一覧とルールファイルは別々に管理されており、一方を更新しても、もう一方が更新されたことにはなりません。
プロトコル名だけでは問題の原因を特定できません。サブスクリプションに含まれるShadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardの項目は、サービス提供元から案内されたパラメーターと一致している必要があります。更新を成功させるために、プロトコル、TLS、トランスポートの設定をむやみに変更しないでください。サブスクリプションの取得失敗は一覧の読み込み段階の問題であり、個々の項目の接続失敗とは別の段階で発生します。
6. サブスクリプション更新のよくある質問とトラブル記録
アプリを開くたびに更新に失敗します。自動更新をオフにすべきですか?
繰り返しエラーが表示される場合は、まずSettings → Subscribe → Update On Openをオフにして、通知を抑えます。その後、Homeから手動更新し、エラーを記録してください。URLとネットワークが正常に戻ったら、この設定を再び有効にします。オフにするのは更新の実行を一時停止するだけで、サブスクリプションの問題を修復するものではありません。
更新後も名前も件数も変わりません。更新できていないのでしょうか?
必ずしもそうとは限りません。サービス提供元が一覧を変更していないか、項目内部のパラメーターだけを変更した可能性があります。まず更新時にエラーが出たか確認し、サービス提供元が実際に変更を公開したか問い合わせてください。何度も削除して追加し直して確認するのは避けましょう。
サブスクリプションの更新にはプロキシ接続が必要ですか?
必ずしも必要ではありません。現在のネットワークからサブスクリプションのドメインにアクセスできるかどうかによります。まず通常の方法で更新してください。直接接続で取得できず、利用可能な接続がある場合に限り、Update via Proxyを確認します。すべてのサブスクリプションで必要な設定というわけではありません。
サービス提供元から新しいURLに変更するよう案内されました。古いグループはどうすればよいですか?
まず古いグループ名と必要な情報を控え、サービス提供元の案内に従って該当するサブスクリプションURLを変更してください。手動更新を1回行い、一覧と接続が正常であることを確認してから、重複したグループを整理します。新旧どちらの認証情報も公開して比較しないでください。
原因を特定できない場合は、発生時刻、Wi-Fiとモバイル通信のどちらを使用したか、具体的なエラー、手動更新の成否、Update via Proxyの状態、他のグループが正常かどうかを記録してください。これらの情報を添えてサービス提供元にアカウントとサブスクリプション応答を確認すれば、「更新できない」とだけ伝えるより原因を絞り込みやすくなります。記録にはサブスクリプションの認証情報全体を含めないでください。