サブスクリプションURLは入手済みでも、どこに貼り付ければよいか分からない方に向けた内容です。v2rayN 7.xとv2rayNG 1.10.xを対象に、サブスクリプションURLと単一ノードの共有リンクを区別し、両方の端末での取り込み、手動更新、グループ管理、ログ確認まで説明します。
サブスクリプションURLと単一ノードの共有リンクを区別する
まずリンクの先頭を確認します。https://で始まり、アクセスすると複数のノード情報が返るURLは、通常サブスクリプションURLです。vmess://、vless://、trojan://で始まる内容は、通常1つのノードだけを表します。両者は使う入口が異なるため、貼り付け先を間違えると「保存は成功したのに一覧が空になる」ことがあります。
サブスクリプションURLは、繰り返し取得できるデータソースに相当します。クライアントにはURL、メモ、更新設定が保存され、「サブスクリプションを更新」を実行するたびにノード一覧を再取得します。一方、単一ノードの共有リンクにはサーバー、ポート、ユーザー識別子、通信方式、TLSパラメーターが直接含まれており、取り込み後にリモートのノード一覧へ自動追従することはありません。
サブスクリプションURL
- よくある先頭部分
- https://
- 内容の数
- 通常は複数のノード
- 更新方法
- リモートURLを再取得
- 保存先
- サブスクリプショングループ
ノードの追加・削除、名前、パラメーターを定期的に同期したい場合に適しています。
共有リンク
- よくある先頭部分
- vmess、vless、trojan
- 内容の数
- 通常は1行につき1ノード
- 更新方法
- 削除してから再取り込み
- 保存先
- サーバー一覧
単一設定の一時的なテストや、特定プロトコルのパラメーター確認に適しています。
v2rayNでサブスクリプションを追加・更新する
以下ではv2rayN 7.xのデスクトップ画面を例に説明します。まずクライアントを起動し、メインウィンドウを開きます。メニュー名が多少異なる場合も、「サブスクリプショングループ」「URLの追加」「サブスクリプションの更新」の3段階を目印にしてください。サブスクリプションURLをVMessサーバーの手動追加画面に貼り付けないよう注意します。
-
グループを開く
メイン画面で「サブスクリプショングループ」→「サブスクリプショングループ設定」を開き、「+」をクリックしてグループを新規作成します。グループ名には用途や提供元の名前を付けると分かりやすくなります。
-
URLを貼り付ける
完全なHTTPSサブスクリプションURLをURL入力欄に貼り付けます。先頭と末尾に空白がないことを確認してから、グループを保存します。
-
コアを確認する
「設定」→「パラメーター設定」→「Core タイプ」を開き、VLESS、XTLS、REALITYを含む設定にはXrayコアを選択します。
-
更新を実行する
メイン画面に戻り、「サブスクリプショングループ」を開いて「すべてのサブスクリプションを更新」を実行します。完了後、ステータスバーで追加・削除・失敗の件数を確認します。
-
ノードを選択する
サーバー一覧からノードを選択してアクティブサーバーに設定し、必要に応じてシステムプロキシを有効にします。ノードを取り込んだだけでは、システムの通信経路は自動的に変わりません。
更新に成功すると、サーバー一覧にプロトコル、別名、アドレス、ポートが表示されます。まずグループで絞り込み、その後ノードを1つ選んで遅延テストを実行します。遅延テストの数値はテスト先が応答したことを示すだけで、実際のダウンロード速度を意味しません。50個のノードが約2~5秒ですべて取り込まれたのに遅延欄が空の場合は、同じサブスクリプションを繰り返し追加せず、コアが起動しているか確認してください。
v2rayNでよく使われるローカルポートには、SOCKSポート10808があります。実際の値は「設定」→「パラメーター設定」のローカルリスニング項目を確認してください。ブラウザーやコマンドラインツールで手動プロキシを使う場合は、プロトコルとポートを一致させる必要があります。HTTPプロキシのリクエストをSOCKSポートへ送ると、接続はそのまま失敗します。
- 更新前にサブスクリプショングループを保存してください。保存していないURLは更新キューに入りません。
- 一覧が重複している場合は、同じURLのグループを2つ作成していないか確認し、ノードを1つずつ削除しないでください。
- サブスクリプションの更新後も古いノードが残る場合は、グループ設定の古い設定を削除する項目を確認してください。
- ログにタイムアウトが表示されたら、まずサブスクリプションURLへ到達できるかテストし、その後、現在のプロキシ経由で更新するか判断します。
v2rayNGでAndroidのサブスクリプションを追加する
v2rayNGのサブスクリプション入口はグループ管理にあり、右下の単一ノード取り込みメニューではありません。以下ではv2rayNG 1.10.xを例に説明します。取り込む前にサブスクリプションURLをシステムのクリップボードへコピーし、Webページのプラン名や有効期限ではなくURLをコピーしたことを確認してください。
-
設定を開く
サイドメニューを開き、「サブスクリプショングループ設定」に進みます。右上の「+」をタップして、新しいサブスクリプションソースを追加します。
-
サブスクリプションを入力する
メモ欄に識別しやすい名前を入力し、URL欄に完全なサブスクリプションURLを貼り付けます。必要に応じて自動更新を有効にし、右上の保存をタップします。
-
グループを更新する
メイン画面に戻り、右上のメニューを開いて「サブスクリプションを更新」を選択します。画面下部に更新完了の通知が表示されるまで待ち、その後設定数を確認します。
-
設定を切り替える
対象ノードをタップして現在の設定にします。接続ボタンをタップした後、ステータスバーに接続状態が表示されたことを確認してからアクセスをテストします。
-
ログを確認する
接続に失敗した場合は「ログ」を開き、最初のエラーを確認します。まずドメインの名前解決、接続タイムアウト、証明書名、ポート拒否の問題に対処してください。
単一のvmess://、vless://、trojan://を受け取った場合は、サブスクリプショングループを作成しないでください。完全な共有リンクをコピーし、メイン画面の「+」→「クリップボードからインポート」を使います。取り込み後は設定詳細を開き、アドレス、ポート、通信プロトコル、TLS、SNI、パスを確認します。
両端末のグループ・更新・ノード同期
デスクトップ版とAndroid版には同じサブスクリプションURLを保存できますが、両端末がローカル設定を直接送受信するわけではありません。ここでいう同期とは、両端末が同じリモートサブスクリプションソースへ個別にアクセスすることです。リモート側でノードが追加・削除された後は、両端末でそれぞれ更新を実行して初めて一覧が一致します。
推奨構成:両端末で同じサブスクリプションソースを使う
デスクトップ版(v2rayN)
- 用途ごとにサブスクリプショングループを作成
- VLESS設定にはXrayコアを使用
- 更新後にグループでノードを絞り込む
- 接続前にシステムプロキシの状態を確認
Android版(v2rayNG)
- 同じ完全なサブスクリプションURLを保存
- 更新後に現在のノードを選び直す
- 必要に応じてアプリごとのプロキシを設定
- 失敗時は実行ログからパラメーターを確認
ノード一覧は同じリモートデータソースから生成されますが、グループ名、現在のノード、ローカルルーティング設定は各クライアントが個別に保存します。
グループは提供元や用途で分け、プロトコルごとに重複したサブスクリプションを作りすぎないようにします。たとえば1つのサブスクリプションにVMessとVLESSが含まれている場合は、同じグループにまとめて問題ありません。クライアントの一覧にはプロトコル欄があり、種類を区別できます。同じURLを重複して追加すると、ノード名は同じなのに提供元が異なる状態になり、更新結果の確認がかえって難しくなります。
自動更新はリアルタイムのプッシュ通知ではありません。クライアントは通常、起動時または設定した間隔に達した時点でサブスクリプションを取得します。スリープ、オフライン、バックグラウンド制限によってスケジュール処理が遅れることがあります。リモート側でノードが変更されたと分かったら、手動更新を実行するのが確実です。更新前に現在のノード名を控え、更新後にそのノードが削除されていた場合は、新しい一覧からアクティブな設定を選び直します。
| 確認項目 | v2rayN | v2rayNG |
|---|---|---|
| サブスクリプションの保存先 | サブスクリプショングループ設定 | サブスクリプショングループ設定 |
| 単一ノードの入口 | クリップボードから複数URLを取り込む | 「+」→「クリップボードからインポート」 |
| 更新後の操作 | アクティブサーバーを確認 | 現在の設定を選び直す |
| トラブル時の入口 | メインウィンドウのログ | サイドメニューのログ |
vmess、vless、trojanの共有形式
VMess共有リンクは、vmess://に続いてBase64テキストが置かれる形式が一般的です。デコードすると通常はJSONオブジェクトになり、アドレス、ポート、ユーザー識別子、通信ネットワーク、パス、TLSなどのフィールドが含まれます。Base64はテキスト表現のための形式であり、暗号化を意味するものでも、ノードが利用可能かどうかを判断する基準でもありません。
VLESSとTrojanは通常、標準的なURI構造を使用します。サーバーアドレスとポートはホスト部分にあり、通信方式、セキュリティ層、SNI、フィンガープリント、Flowなどのパラメーターは疑問符以降のクエリに記載されます。ハッシュ記号以降の文字列はノードのメモです。コピー時にクエリ部分が欠けると、アドレスは正しくてもハンドシェイクに失敗することがあります。
VMess + WS + TLS
- ユーザー識別子
- idフィールド
- 通信方式
- WebSocket
- パス
- /ray
- セキュリティ層
- TLS
共有内容はBase64でエンコードされたJSONとして格納されることが多いため、取り込み後にhost、path、SNIを確認してください。
VLESS + Reality
- 通信方式
- TCP
- セキュリティ層
- Reality
- Flow
- xtls-rprx-vision
- フィンガープリント
- chrome
Xrayコアで処理する場合、public key、short id、server nameは完全な状態で保持する必要があります。
Trojan + TLS
- 認証情報
- URIのユーザー情報
- よく使われるポート
- 443
- セキュリティ層
- TLS
- サーバー名
- SNIパラメーター
パスワード、サーバー名、証明書に対応するドメイン名は、すべて一致している必要があります。
Base64サブスクリプション本文
- 外側の内容
- Base64テキスト
- デコード結果
- 複数行の共有リンク
- 各行の記録
- 1つのノード設定
- 取り込み入口
- サブスクリプショングループ
サブスクリプションによっては、プレーンテキストのリンク一覧を直接返します。Base64を使うかどうかはサブスクリプションソースによって決まります。
vless://[email protected]:443?type=tcp&security=reality&flow=xtls-rprx-vision&sni=www.example.com&fp=chrome&pbk=AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abc&sid=1a2b3c4d#VLESS-Reality
trojan://[email protected]:443?security=tls&type=tcp&sni=www.example.com#Trojan-TLS
上記のアドレスはフィールド位置の説明用です。実際のVLESSリンクに含まれるUUID、Reality公開鍵、short idは設定元から提供されたものを使用する必要があります。Trojanリンクの認証情報も完全な状態でなければなりません。security、type、flowを手動で変更しても、サーバー側の設定を別のプロトコルへ変換することはできません。
従来のBase64サブスクリプションをデコードすると、通常は複数行の共有リンクになり、各行が1つのノードに対応します。クライアントはまずサブスクリプション本文を取得し、デコードしてから行ごとにプロトコルを判別します。本文がログインページ、エラーメッセージ、有効期限切れの通知だった場合、HTTPリクエストが成功しても「0件の設定を認識しました」と表示されます。この場合はローカルポートを変更せず、サブスクリプションURLの返却内容を確認してください。
vmess://:id、add、port、net、host、path、tls、sniを重点的に確認します。vless://:UUID、security、type、flow、sni、fp、pbk、sidを重点的に確認します。trojan://:認証情報、サーバーアドレス、ポート、security、sniを重点的に確認します。#以降のメモは表示名にのみ影響し、接続認証には使用されません。
サブスクリプションの失敗、ノードが空、接続エラーのトラブルシューティング
トラブルシューティングでは、「サブスクリプションを取得できるか」「ノードを解析できるか」「コアを起動できるか」「通信がプロキシに入っているか」の4段階で確認します。最初からすべての設定を削除しないでください。元のグループとログを残しておけば、どの段階で失敗したかは通常メッセージから判断できます。
サブスクリプションの更新がずっとタイムアウトする?
まず端末のネットワークが正常か確認し、ブラウザーでサブスクリプションURLが内容を返すかテストします。現在のノード経由でしかURLへアクセスできない場合は、サブスクリプション設定でプロキシ経由の更新を有効にし、現在のノードが接続済みであることを確認します。
更新は成功したのに一覧が空?
更新ログで認識件数を確認します。0件の設定と表示された場合は、返却内容がBase64のノード一覧、プレーンテキストの共有リンク、エラーページのいずれであるかを確認し、サブスクリプショントークンの有効期限も確認してください。
同じノードが重複して表示されるのはなぜ?
サブスクリプショングループ設定を開き、同じURLを2つ保存していないか、同じグループを重複作成していないか確認します。重複グループを削除して完全更新を1回実行し、生成されたノードを1つずつ削除しないでください。
ノードを取り込んだのに接続できないのはなぜ?
まずコアのログにある最初のエラーを確認します。VLESS Realityでは、Core タイプ、server name、public key、short id、フィンガープリント、Flowを重点的に確認します。WebSocket設定ではhostとpathを重点的に確認してください。
接続は成功したのにWebページが直接接続になる?
v2rayNでシステムプロキシが有効になっているか確認し、ルーティングモードも確認します。手動プロキシを使うプログラムは、正しいローカルプロトコルとポートに接続してください。例:SOCKS 127.0.0.1:10808。
ログにconnection refusedと表示される場合、通常は対象アドレスには到達できるものの、指定ポートが接続を受け付けていないことを示します。タイムアウトの場合は、ネットワーク経路、ドメイン名解決、リモートサービスへの到達性に問題がある可能性があります。TLS名のエラーではSNIを確認し、Realityのハンドシェイクエラーでは公開鍵、short id、フィンガープリント、server nameを確認してください。異なるエラーをローカルプロキシポートの切り替えだけで解決することはできません。
v2rayNでは取り込めるのにv2rayNGでは取り込めない場合は、まず両端末で同じ完全なURLをコピーしているか確認し、クライアントのバージョンとコア対応状況を比較します。新しいXrayパラメーターを含むVLESS設定には、v2rayNGのXrayコアを使用してください。互換性のある設定をV2Flyコアで処理する必要がある場合はv2flyNGを使用できますが、RealityとXTLS関連のパラメーターはコアの対応状況に合わせて選択し、プロトコル名だけを変更しないでください。