サブスクリプションURLを初めて受け取った方、クライアントのインポート画面が見つからない方、更新後に設定が表示されない方に向けた解説です。サブスクリプションURLと単一ノードURLの違い、v2rayNとv2rayNGの操作手順、代表的なデータ形式、タイムアウトや空の一覧、形式エラーの確認順を説明します。
まずはサブスクリプションURLと単一ノードURLを区別する
サブスクリプションURLは通常、HTTPSで始まるWebアドレスです。クライアントがこのURLにアクセスすると、サーバーから複数の設定データが返されます。その後「サブスクリプションを更新」を実行すると、同じアドレスへ再度アクセスし、新しい結果で対象グループを更新します。URL自体にvmessやvlessなどのプロトコル名が含まれるとは限らないため、見た目だけでノードの種類を判断することはできません。
単一ノードURLは、1つの設定を直接記述したものです。代表的な先頭部分には vmess:// と vless:// があります。一時的に1つの設定を追加する用途には向きますが、定期的に更新できるサブスクリプション関係は作られません。単一ノードURLを「サブスクリプションURL」欄に入力したり、サブスクリプションURLを「クリップボードからURLを一括インポート」に渡したりすると、インポート結果が空になることがあります。
クライアントのバージョンアップ後は、メニュー名が「サブスクリプショングループ」「サブスクリプション設定」「サブスクリプショングループ設定」などに変わる場合があります。ただし入口の判断方法は同じです。URLを保存して繰り返し更新する場合はサブスクリプショングループを使い、プロトコルスキームで始まるテキストを1つだけ追加する場合はクリップボードからインポートします。
サブスクリプションURL
おすすめリモートURLを保存し、グループ単位で複数の設定を更新できます。名前やパラメータが変更されても、最新データを再取得できます。
向いている用途:長期利用、設定数が多い場合、定期的な更新が必要な場合
単一ノード URI
VMessまたはVLESSの設定を1つ直接インポートします。以後の自動更新関係は作成されません。
向いている用途:一時的なテスト、単一設定の移行、プロトコルパラメータの確認
一括テキスト
複数のプロトコルURLを1行に1つずつ記載したテキストです。クリップボードから一括解析できますが、サブスクリプションではありません。
向いている用途:少数の既存設定をオフラインで移行する場合
v2rayNでサブスクリプションを追加・更新する
始める前にサブスクリプションURLを最後までコピーし、末尾のアクセスパラメータが欠けないようにします。URLに疑問符、等号、接続記号が含まれていても、そのまま保持し、手動で切り詰めないでください。サブスクリプションはアクセス認証情報にあたるため、公開ログやスクリーンショット、共有ドキュメントに貼り付けるのは避けましょう。
グループを開く
v2rayNを起動し、メイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」を選択します。7.x系の一部の画面では、左側のグループ欄から管理画面を直接開けます。
サブスクリプションを新規作成
「追加」または「+」をクリックし、識別しやすい名前を備考欄に入力して、完全なHTTPS URLをURL入力欄に貼り付けます。
グループを保存
有効状態を確認して保存します。この時点ではURLが記録されただけで、サーバー一覧に新しい設定が表示されるとは限りません。
更新を実行
メイン画面に戻り、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシを使用しない)」を選択します。現在のネットワークからURLへ直接接続できない場合は、プロキシ経由の更新を試します。
設定を選択
更新が完了したら対象グループを展開し、設定をダブルクリックするか、右クリックメニューからアクティブサーバーに設定して、システムプロキシを有効にします。
クリップボードに vmess:// または vless:// がある場合は、サブスクリプショングループを新規作成しないでください。「サーバー」→「クリップボードからURLを一括インポート」を使い、インポート後にアドレス、ポート、トランスポート方式、TLS関連フィールドを確認します。単一URIは「すべてのサブスクリプションを更新」をクリックしても自動的には変わりません。
v2rayNGでサブスクリプションを追加する
v2rayNGでも、サブスクリプション管理と単一設定のインポートは別の入口です。サブスクリプションURLは「サブスクリプショングループ設定」へ進み、QRコードやクリップボードのプロトコルURLは単一設定のインポートを使います。本記事は1.10.x系の画面を基準にしています。画面サイズによっては、サイドメニューが左上のメニューボタンとして表示されます。
設定を開く
サイドメニューを開き、「サブスクリプショングループ設定」に進みます。先にメイン画面の単一設定追加ボタンを押さないでください。
URLを入力
右上の「+」をタップし、サブスクリプションの備考と完全なURLを入力します。必要に応じて自動更新を有効にできますが、初回追加時は手動で一度更新することをおすすめします。
保存して戻る
サブスクリプショングループを保存してメイン画面に戻り、右上のメニューを開いて「サブスクリプションを更新」を実行します。完了通知が表示されてから設定一覧を確認してください。
設定を選択
一覧で対象の設定をタップしてアクティブ項目にし、接続ボタンをタップします。初回接続時には、システムのネットワーク接続確認が表示されます。
結果を確認
接続後にリアルタイムログを確認し、DNS、ハンドシェイク、証明書名、接続タイムアウトのエラーがないことを確認してから、ブラウザーで通常のHTTPSページにアクセスして再テストします。
単一ノードURIをコピーした場合は、メイン画面の「クリップボードから設定をインポート」を使います。インポート前に、クリップボードに対象URLだけが入っていることを確認し、前後に説明文が混ざらないようにしてください。複数URLを一括インポートするときは1行に1つ記載します。どれか1行が壊れていても、通常は他の行のプロトコルパラメータには影響しませんが、一部の解析に失敗したという通知が表示されることがあります。
- 更新後に一覧が空になる:サブスクリプショングループ設定に戻り、グループが有効になっていることと、URLの前後に空白がないことを確認します。
- 更新は成功したのに件数が変わらない:現在表示しているグループが正しいか確認し、サーバーから返された内容に実際の変更があるか確認します。
- 接続ボタンを押すとすぐ元に戻る:ログを開き、ポート、コアの起動状態、設定の解析エラーを確認します。サブスクリプションを何度も削除するのは避けてください。
- コアを切り替えたい:v2rayNGはXrayコアを使用します。v2flyコアが必要なAndroidクライアントではv2flyNGを使用できますが、新しいプロトコルパラメータへの対応範囲が両者で完全に同じとは限りません。
Base64、VMess、VLESS形式の見分け方
「Base64サブスクリプション」とは通常、サブスクリプションのレスポンス本文がBase64でエンコードされており、デコードすると1行に1つのプロトコルURLになるものを指します。Base64はテキストのエンコード方式であり、プロキシプロトコルではありません。また、接続が暗号化されるかどうかを決めるものでもありません。サブスクリプション更新時はクライアントが認識・デコードするため、通常は手動処理は不要です。
VMessの単一ノードURLは vmess:// で始まることが多く、その後にエンコードされたJSONデータが続く場合があります。デコードすると、アドレス、ポート、ユーザー識別子、トランスポート方式などのフィールドを確認できます。VLESS URIは通常、暗号化層、トランスポート層、サーバー名、フィンガープリント、フロー制御などをクエリパラメータで表すため、パラメータ構造を目視しやすい形式です。
サブスクリプションURL
- 外観
- https://で始まる
- 内容
- リモートから複数の設定を取得
- 更新
- 再取得に対応
- インポート入口
- サブスクリプショングループ設定
URLはデータへの入口にすぎず、実際のプロトコルは返される内容によって決まります。
Base64リスト
- 性質
- テキストエンコード
- デコード結果
- 複数行のプロトコルURI
- 主な入口
- サブスクリプションのレスポンス本文
- 手動編集
- 通常は不要
エンコードエラーが発生した場合は、まずレスポンスが完全かどうかを確認します。
VMess URI
- プレフィックス
- vmess://
- 識別情報フィールド
- UUID
- 代表的なトランスポート
- TCP、WebSocket
- インポート入口
- クリップボードからURLを一括インポート
エンコード済みの内容は、1文字欠けただけでも全体の解析に失敗することがあります。
VLESS URI
- プレフィックス
- vless://
- 識別情報フィールド
- UUID
- パラメータの位置
- クエリ文字列
- インポート入口
- クリップボードからURLを一括インポート
Reality、SNI、Flowなどのパラメータは、サーバー側の設定と一致させる必要があります。
サブスクリプションURLの構造:
https://sub.example.com/client/feed?id=7319&token=8f2d1a
単一ノードの構造:
vmess://エンコードされた設定テキスト
vless://[email protected]:443?security=reality&type=tcp&flow=xtls-rprx-vision#サンプル名
上記は構造を説明するための内容です。実際にインポートするときは、サンプルアドレスを接続可能な設定として使用しないでください。特にVLESS URIでは、security、type、flow、sni、fp、公開鍵などのフィールドに組み合わせの関係があります。アドレスとポートだけを残しても、通常は接続を確立できません。
サブスクリプション更新時にクライアントが行う処理
更新をクリックすると、クライアントはまずサブスクリプションURLへリクエストを送り、レスポンスがプレーンテキストのURI一覧、Base64テキスト、または対応する構造化データかを判別します。続いて各設定を解析し、対象グループに書き込みます。リクエストが成功しても、すべての設定の解析に成功したとは限りません。そのため、更新通知、設定数、ログを同時に確認してください。
サブスクリプションによっては、設定名、サーバーアドレス、プロトコルパラメータが変わると古い項目が置き換えられます。サブスクリプションから生成された設定を手動で変更しても、次回更新時にリモートデータで上書きされる可能性があります。長期間残したいローカル調整は独立した設定として複製し、名前に元の設定を示す印を付けて、自動更新項目と混同しないようにしてください。
- リクエスト段階:サブスクリプションのドメインを解決し、HTTPS接続を確立してレスポンスを待ちます。この段階の失敗は、通常タイムアウト、ドメイン解決失敗、証明書エラーとして現れます。
- デコード段階:レスポンス本文を判別し、Base64のデコードを試みます。ログインページ、エラーページ、ゲートウェイの案内に置き換わっている場合、形式エラーになることがあります。
- 解析段階:VMess、VLESSなどの設定を1件ずつ読み取り、必要なフィールドをクライアント内部の構造へ変換できるか確認します。
- 書き込み段階:結果を指定されたサブスクリプショングループに追加し、名前や内部識別子に基づいて既存項目を処理します。
- 利用段階:ユーザーがアクティブな設定を選択すると、コアがパラメータを読み込み、ローカルのリスニングポートを起動します。実際の接続が発生するのはこの段階です。
インポートに失敗したらこの順番で確認
まず、失敗がリクエスト、デコード、解析、コア起動のどの段階で発生したかを特定します。サブスクリプション更新時点ですでにエラーが出ているなら、先にシステムプロキシのポートを調整する必要はありません。設定が表示されているのに接続できない場合は、プロトコルパラメータ、コアのログ、ローカルのリスニング状態を確認します。
サブスクリプション更新がずっとタイムアウトする?
まずブラウザーでサブスクリプションのドメインへのHTTPS接続を確認します。ページ本文は公開しないでください。v2rayNでは利用可能な設定がある場合、「サブスクリプショングループ」→「すべてのサブスクリプションを更新(プロキシを使用)」に切り替えられます。利用可能な設定がない場合は、先にローカルネットワークとドメイン解決を確認します。
成功と表示されるのに一覧が空?
サブスクリプショングループ設定を開き、グループが有効か、URLの前後に空白がないかを確認します。また、現在の一覧がそのグループを表示するように絞り込まれているかも確認してください。レスポンスが実際にはログインページやエラー説明の場合、クライアントがプロトコルURLを1つも解析できないことがあります。
vmess URLを貼り付けても反応しない?
「サーバー」→「クリップボードからURLを一括インポート」を使っていることを確認し、サブスクリプションURL入力欄ではないことを確認します。コピー時は vmess:// からURL末尾までを完全に保持し、途中で改行しないでください。
vlessをインポートしたのにRealityパラメータがない?
URI全体をもう一度コピーし、security=reality、サーバー名、フィンガープリント、公開鍵、短い識別子、Flowを重点的に確認します。提供元がアドレス、ポート、UUIDしか示していない場合は、サーバー側で必要な残りのフィールドを補う必要があります。
設定は表示されるのにWebページを開けない?
まずアクティブな設定が選択され、システムプロキシが有効になっていることを確認してから、コアのログを確認します。10808などのローカルポートが使用中と表示された場合は、「設定」→「パラメータ設定」でローカルリスニングポートを変更し、そのポートに依存するプロキシ設定も更新します。
クロステストで原因を絞り込むこともできます。同じサブスクリプションがv2rayNでは更新でき、v2rayNGでは更新できない場合は、まずAndroid側のネットワーク権限、システム時刻、クライアントバージョンを確認します。両方で失敗する場合は、サブスクリプションURLの有効期限、リクエストパラメータ、サーバーのレスポンスを優先して確認してください。サブスクリプションが正常にデータを返すと確認できるまでは、コア設定を頻繁に変更しないでください。
インポート後の確認チェックリスト
サブスクリプションのインポートは、設定をクライアントに書き込む作業にすぎません。正常に利用できるかどうかは、アクティブな設定、コアの対応範囲、システムプロキシまたはネットワーク接続の状態、DNSの処理方法、リモートパラメータの一致にも左右されます。決まった順番で確認すれば、ローカルプロキシが有効になっていないだけなのにサブスクリプションの無効と誤認するのを防げます。
- 対象のサブスクリプショングループが有効で、更新後に想定した数の設定が表示される。
- 現在のアクティブ項目が正しいグループに属し、アドレス、ポート、プロトコル種別が空欄ではない。
- v2rayNのコアが起動でき、ローカルリスニングポートが他のプロセスに占有されていない。
- デスクトップ版で必要に応じてシステムプロキシを有効にし、v2rayNGではシステム接続の確認を完了している。
- コアのログにハンドシェイク、証明書名、Realityパラメータ、DNSのエラーが継続して表示されていない。
- サブスクリプション更新後にアクティブな設定を選び直し、置き換えられた古い項目を使い続けない。
- 単一ノードURLとサブスクリプションURLで正しい入口を使い、2種類のインポート方法を混同しない。
デバイスを移行するときは、サブスクリプションから生成されたノードを1つずつコピーするのではなく、新しいクライアントでサブスクリプションURLを追加し、更新を実行するのが基本です。グループ関係を維持でき、その後も更新できます。ローカルで手動作成し、リモートサブスクリプションから提供されない設定だけは、個別にエクスポートするか再入力してください。