サブスクリプションがタイムアウトする、空の内容が返る、形式の解析に失敗する、自動更新が反映されない場合に役立つ記事です。サブスクリプションURL、ネットワーク経路、HTTPステータス、内容の形式、クライアント設定の順に確認し、サーバー・ネットワーク・ローカル設定のどこに問題があるか切り分けます。
まずサブスクリプション更新の流れを確認する
サブスクリプション更新はノードの速度測定ではありません。クライアントはまずURLへアクセスしてテキストを受信し、base64、共有リンク一覧、ネイティブ設定などの形式として解析します。その後、ノードを現在のサブスクリプショングループへ登録します。どこか1つでも失敗すると画面には「更新に失敗しました」とだけ表示される場合がありますが、ログのステータスコードやエラー内容は通常異なります。
利用可能なノードへ接続できても、サブスクリプションへのリクエストが必ずプロキシを経由するとは限りません。v2rayN 7.xには「プロキシ経由で更新」と「プロキシを経由せずに更新」の2つの経路があります。前者は通常、ローカルHTTPプロキシポートからリクエストを送信し、後者は現在のシステムネットワークを直接使用します。直結ではアクセスできないURLの場合、経路を間違えるとタイムアウトが続きます。
切り分けでは既存のノードを残し、サブスクリプショングループを何度も削除しないでください。1回の更新失敗で古いノードが消えることは通常ありません。グループを直接削除すると、まだ接続できる設定まで失うおそれがあります。エラー原文、更新方法、発生時刻を記録し、サブスクリプションURLを個別に検証するのが安全です。
よくある6つの原因と対処法
次の6種類で、サブスクリプション更新に失敗するケースの大半をカバーできます。表示されたエラー内容に沿って原因を絞り込み、DNS、プロキシポート、サブスクリプション形式を同時に変更する必要はありません。1回に1つだけ条件を変えることで、本当の原因を確認できます。
エラー:The operation has timed out
原因と対処法:サブスクリプションサーバーがクライアントの制限時間内に応答しないか、リクエスト経路が遮断されています。まず利用可能なノードへ接続し、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシ経由)」を選択します。それでもタイムアウトする場合は、タイムアウト値を10秒から30秒に変更して再試行します。
エラー:The remote name could not be resolved
原因と対処法:サブスクリプションのドメイン名を解決できていません。DNSの一時的な障害、ドメイン名の入力ミス、ネットワーク切り替え後のキャッシュ未更新などが考えられます。ドメイン名の文字を確認し、ネットワーク切り替え後にクライアントを再起動して、プロキシ経由で更新を試します。
エラー:Response status code does not indicate success: 403
原因と対処法:サーバーが現在のリクエストを拒否しています。サブスクリプショントークンの期限切れ、アクセス元の制限、短時間でのリクエスト過多などが原因です。連続して更新せず、10分ほど空けて再試行してください。それでも403が返る場合は、有効なサブスクリプションURLを再取得します。
エラー:Response status code does not indicate success: 404
原因と対処法:サブスクリプションのパスが存在しません。URLが再発行された後も古いアドレスを使っている場合によく起こります。コピーした内容が完全か、特にURL末尾のトークンやパラメーターを確認してください。問題がないのに404が返る場合は、サブスクリプションURL全体を置き換えます。
エラー:Invalid length for a Base-64 char array or string
原因と対処法:レスポンスがbase64として認識されたものの、本文が途中で切れている、案内ページが混入している、または実際にはエンコード済みリンク一覧ではない可能性があります。まずレスポンスがHTMLエラーページで始まっていないか確認し、サブスクリプションの種類とクライアントが対応する形式が一致しているか確認します。
エラー:Sequence contains no elements
原因と対処法:クライアントが受信内容から有効なノードを解析できていません。空のサブスクリプション、コメントだけの内容、必須項目が不足した共有リンクなどが考えられます。サブスクリプション内容を再取得し、完全な vmess:// または vless:// リンクが少なくとも1件含まれていることを確認します。
原因1:サブスクリプションURLが無効になっている
サブスクリプションURLには通常、個別のトークンが含まれます。サーバー側でのトークン再発行、アカウント状態の変更、サブスクリプション移行後は、古いURLが403、404、空のテキスト、説明ページを返すことがあります。ブラウザーでURLを開けても内容が有効とは限りません。レスポンス本文をノード一覧として解析できるかが重要です。
原因2:更新リクエストがプロキシを経由していない
サブスクリプションのドメインへ直接アクセスできない場合、「プロキシを経由せずに更新」は失敗します。まず現在のノードが利用可能か確認し、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシ経由)」を実行します。ローカルHTTPプロキシが127.0.0.1:10809で待ち受けている場合は、そのポートが他のプログラムに使用されていないことも確認してください。
原因3:サーバーの応答が遅い
ネットワークをまたぐリクエスト、サーバー側の一時的な混雑、ノード経路のパケットロスはいずれも応答時間を延ばします。実測では、200 KB未満のサブスクリプション本文は通常1~5秒で完了します。3回連続で30秒を超える場合は、クライアントの解析速度よりも経路またはサーバー側の問題である可能性が高いでしょう。
原因4:サブスクリプション内容の形式が正しくない
よくあるサブスクリプション内容には、エンコードされた共有リンク一覧、1行ずつ並んだvmessまたはvlessリンク、クライアントがインポートできるネイティブ設定があります。ログインページ、エラーページ、料金プランの説明文はサブスクリプション形式ではありません。内容が「<!doctype html>」で始まる場合は、クライアントのパラメーターを繰り返し変更する前にアクセス権を確認します。
原因5:URLのコピーが不完全
チャット画面での改行、テキスト末尾の空白、URLの一部だけを選択する操作は、長いトークンを壊す原因になります。サブスクリプションを編集する際はURLの前後の空白を削除し、プロトコルがhttps://またはhttp://で始まっていることを確認してください。トークンの一部だけを置き換えず、サーバーが新しいURLを発行したら旧URL全体を完全に置き換えます。
原因6:ローカルの時刻、DNS、セキュリティポリシーに問題がある
システム時刻のずれはHTTPS証明書の検証失敗につながり、DNSの異常はドメインを解決できない症状として現れます。まずシステムの自動時刻合わせを有効にし、日付・タイムゾーンが実際の場所と一致していることを確認します。その後、ネットワークへ再接続してv2rayNを再起動します。1つのサブスクリプションドメインだけ失敗する場合は、まずそのドメインまたはサーバー側の問題を疑います。
結論:まずHTTPステータスを確認し、その後クライアントを調整する
403と404はサブスクリプションURLを優先して確認します。タイムアウトやドメイン解決エラーではプロキシ経路とDNSを確認します。本文を受信できているのにノードがない場合は、形式の解析を確認します。この順序なら複数の設定を同時に変更せずに済みます。
v2rayNで自動サブスクリプション更新を設定する手順
以下はv2rayN 7.12.5の日本語インターフェースを例にした手順です。7.xのマイナーバージョンによってメニュー名が多少異なる場合がありますが、サブスクリプショングループ、自動更新間隔、プロキシ経由での更新という3つの設定項目は同じ考え方で利用できます。
- 「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、管理するグループを選択します。
- 別名とサブスクリプションURLを確認し、URLの前後の空白を削除して、そのグループを有効にします。
- 自動更新間隔に分数を入力します。通常は360分または720分が適しており、5分などの高頻度設定はおすすめしません。
- 保存してメイン画面に戻り、まず「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシ経由)」を1回実行します。
- 情報欄またはログを確認し、追加・更新・ノード数の表示が出たことを確認してから、ノードを1つテストします。
- 「設定」→「パラメーター設定」を開き、HTTPプロキシポートを確認します。一般的な初期値は10809、SOCKSポートは10808ですが、実際のポートはローカル画面の設定を優先してください。
| 設定項目 | 推奨値 | 判断基準 |
|---|---|---|
| 自動更新間隔 | 360~720分 | 1日2~4回更新し、設定変更とリクエスト頻度のバランスを取る |
| リクエストのタイムアウト | 15~30秒 | 10秒以内に頻繁に失敗する場合は延長し、30秒を超えても失敗する場合は経路を確認する |
| 初回の手動更新 | プロキシ経由 | サブスクリプションURL、現在のノード、ローカルプロキシ経路がすべて機能することを確認するために使用 |
| ローカルHTTPポート | 10809 | 一般的な初期値。ポートが使用中の場合はクライアントの実際の設定を優先 |
自動更新はクライアントが起動していることが前提です。v2rayNが起動していなければ、設定した360分のタイマーがシステム単独で実行されることはありません。PCがスリープから復帰した後も、次のスケジュールまで更新されない場合があります。重要な変更がある場合は手動で1回更新してください。
v2rayNGのサブスクリプション更新と自動チェック
v2rayNGはXrayコアでノード接続を処理しますが、サブスクリプションのダウンロードと解析はクライアントの画面側で行われます。コアが正常に起動していても、サブスクリプションURLへアクセスできるとは限りません。「ノード接続の失敗」と「サブスクリプションリクエストの失敗」を分けて確認してください。
- v2rayNGを開き、サイドメニューの「サブスクリプショングループ設定」へ進みます。
- 既存のグループを選択するか新しいグループを追加し、名前と完全なサブスクリプションURLを入力します。
- 保存してメイン画面に戻り、右上のメニューを開いて「サブスクリプションを更新」を実行します。
- 直接更新がタイムアウトする場合は、まず利用可能なノードへ接続し、現在のプロキシをサブスクリプション更新に使用する設定を有効にして再試行します。
- 「設定」を開いてサブスクリプションの自動更新に関する項目を確認し、利用頻度に合わせてチェック周期を設定します。
- 更新完了後にノード数を確認します。画面上部に一時的に表示される通知だけで成否を判断しないでください。
モバイルネットワークでは、バックグラウンド実行の制限、バッテリー設定、ネットワーク切り替えの影響を受けます。定期チェックを設定していても、アプリを長時間起動していないと指定した分数どおりに実行されない場合があります。使用前にv2rayNGを開き、サブスクリプションを手動更新する方法が確実です。
v2rayNGがレスポンスを取得できてもノードを解析できない場合は、返された内容がvmess、vlessなどの共有リンク一覧か確認します。サーバーが他のプログラム向けの専用構造を返している場合、URLにアクセスできてもインポート数が0になることがあります。
更新間隔の選び方と成功確認の方法
自動更新間隔は短ければよいわけではありません。サブスクリプション更新が同期するのは、サーバーアドレス、ポート、ユーザー識別子、通信方式、ルーティング関連の項目です。各ノードの利用可能性を継続的にテストする機能ではありません。更新後も遅延測定または実際の接続テストが必要です。
- 設定変更が少ない:1440分に設定し、1日1回確認します。
- 日常的に安定して使用:720分に設定し、1日2回確認します。
- 設定変更が比較的多い:360分に設定し、1日4回確認します。
- 一時的な障害を切り分ける:手動で更新し、自動更新間隔を5分や10分に変更しないでください。
更新が成功したか確認するときは、まず更新時刻とノード数を確認し、その後ノードを1つ選んでテストします。ノード数が変わらなくても必ずしも失敗とは限りません。サーバーが前回と同じ内容を返している可能性があります。一方、ノード数が多くてもすべて利用できるとは限らないため、プロトコル、アドレス、ポート、通信パラメーターが揃っているかも確認します。
| 確認項目 | 正常な状態 | 異常時に疑う箇所 |
|---|---|---|
| 更新時刻 | 今回の操作時刻が表示される | タスクが実行されていない、または設定の保存に失敗 |
| ノード数 | サーバー上の現在の内容と一致 | 本文が空、対応形式でない、またはグループ選択が誤っている |
| HTTPステータス | 200 | 403、404、5xxはそれぞれ権限、パス、サーバー状態を確認 |
| 実際の接続 | コアが起動し、対象サイトへアクセスできる | ノードパラメーター、ルーティング、DNS、システムプロキシを引き続き確認 |
結論:更新時刻、解析数、実際の接続を分けて確認する
HTTP 200はレスポンスの取得に成功したことを示すだけです。ノードを解析できて初めて形式が利用可能だと分かり、ノードへ接続できて完全な経路が正常だと判断できます。3つの結果を順番に確認し、1つの結果だけですべての確認を代用しないでください。
よくある質問と最終的な切り分け手順
エラー内容が一定しない場合は、次の順序で範囲を絞り込みます。まず既存のノードに接続できるか確認し、次にプロキシ経由とプロキシを経由しない更新をそれぞれ試します。その後HTTPステータスを確認し、最後にレスポンス内容とサブスクリプション形式を調べます。
サブスクリプション更新がタイムアウトした場合、最初にどの設定を変更すべき?
まず利用可能なノードへ接続し、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシ経由)」を実行します。10秒でタイムアウトする場合は、リクエストのタイムアウトを30秒に変更します。30秒を超えても応答がない場合は、サブスクリプションサーバーとネットワーク経路を確認してください。
更新は成功と表示されたのに、ノード数が0なのはなぜ?
レスポンス本文が空でないか、HTMLページではないか、完全なvmess://またはvless://リンクを含んでいるか確認します。HTTPリクエストが成功しても、サブスクリプション形式をクライアントが解析できるとは限りません。
古いノードはまだ使える。サブスクリプションを削除して再追加すべき?
必要ありません。既存のグループを編集して完全なサブスクリプションURLに置き換え、手動で更新してください。古いノードを残せば現在の接続を維持でき、プロキシ経由で新しいサブスクリプションを取得する際にも便利です。
v2rayNの自動更新を360分に設定したのに、なぜ実行されない?
その周期中もクライアントが起動していることと、グループが有効になっていることを確認します。PCがスリープ中、クライアントが終了している、またはグループが無効になっている場合、定期タスクは予定どおり完了しません。
サブスクリプション更新後もノードが使えないのはなぜ?
サブスクリプションのダウンロードとノード接続は別の経路です。更新に成功した後も、ノードアドレス、ポート、VMessまたはVLESSのパラメーター、システムプロキシ、DNS、ルーティング設定を確認し、Xrayコアのログに記録された具体的なエラーを確認してください。
- システムの日付、時刻、タイムゾーンが正しいことを確認する。
- 現在利用できるノードを残し、エラー内容を完全に記録する。
- サブスクリプションURLが完全か確認し、前後の空白を削除する。
- プロキシ経由とプロキシを経由しない更新をそれぞれ試す。
- 403、404、タイムアウト、解析失敗などの種類に応じて対処する。
- 返された内容がログインページ、エラーページ、空のテキストではないことを確認する。
- 更新後にノード数を確認し、実際の接続をテストする。
- 自動更新間隔を360~1440分に設定する。