VPNサブスクリプションリンクは、クライアントが接続先の設定を取得するための入口です。特定の接続先そのものでも、アプリをダウンロードするURLでもありません。サービス側で管理されるリモート設定一覧です。対応クライアントにリンクを取り込むと、クライアントはノード名、サーバーアドレス、ポート、プロトコル設定、ルーティング情報を読み込み、ローカル設定として保存します。この仕組みを理解すれば、「取り込みは成功したのに接続できない」「接続先が更新されない」「端末を変えると設定が一致しない」といった問題が、どの段階で起きているか判断できます。
初心者が混同しやすいのが、サブスクリプション、ノード、クライアントです。クライアントは接続を確立し、ノードは実際に選択する接続先、サブスクリプションリンクは利用可能な設定をクライアントに渡します。どれか一つが欠けても、完全な接続にはなりません。問題を切り分ける際も、アプリを何度も再インストールしたり接続先を繰り返し変更したりせず、この役割分担に沿って確認しましょう。
サブスクリプションリンクに含まれる情報
サブスクリプションリンクには、通常アカウントに紐づくアクセス情報が含まれます。クライアントがURLにリクエストすると、サービス側は現在のアカウント状態に応じて接続先一覧を生成します。接続先が変更されても、サービス側で一覧を更新し、ユーザーが再取得すれば新しい設定を反映できます。サーバーアドレスを一つずつ手入力する必要はありません。
一覧に含まれる内容は、クライアントの形式とサービス側の提供方法によって異なります。一般的には、ノード名、接続先ドメイン、ポート、通信プロトコル、暗号化パラメータ、TLS設定、サーバー名表示、UDP対応状況、グループルールなどが含まれます。形式によっては、プロキシグループ、DNS設定、ルーティングルールも含まれます。一方、ノード情報だけを提供し、クライアント側のローカルルールを使う形式もあります。
Shadowsocks、VMess、Trojan、VLESS、Hysteria2、TUICは、それぞれ異なるプロトコルまたは設定体系です。利用するには、クライアントのコアが対応している必要があります。サブスクリプションに特定のプロトコルが含まれていても、すべてのVPNアプリで読み込めるとは限りません。一般的なOSのVPN設定は標準プロトコル向けで、この種の統合サブスクリプションURLを直接取り込めないことが多いです。
| 対象 | 主な役割 | よくある誤解 |
|---|---|---|
| サブスクリプションリンク | サービス側に最新の接続先と設定を要求する | 単一のノードアドレスだと思う |
| クライアント | 設定を解析し、ルーティングを実行して接続する | すべてのクライアントが同じ形式に対応していると思う |
| ノード | 実際の入口、通信経路、出口地域を提供する | 地域名だけを見て、回線種別を確認しない |
| ルーティングルール | どのリクエストをプロキシ経由にし、どれを直接接続するか決める | ルーティングの誤りをノード障害だと判断する |
| DNS設定 | ドメインの名前解決と、その経路を管理する | 接続後にDNS漏洩や汚染を確認しない |
同じサービスが、異なるコア向けに複数のサブスクリプション形式を提供することもあります。YAML設定はClashやMihomo系クライアント、JSON設定はsing-box系でよく使われます。汎用サブスクリプションは、複数のプロトコルURIで構成される場合があります。拡張子だけで形式を判断する統一ルールはないため、サービスの管理画面にあるクライアント別の案内を確認し、利用中のソフトに明確に対応した入口を選ぶのが安全です。
サブスクリプションリンクの取得先
サブスクリプションURLは、サービスの管理画面、クライアントページ、公式の利用ガイドから取得してください。通常はアカウント画面に入り、「サブスクリプション」「クライアントに取り込む」「ワンクリックで取り込む」「リンクをコピー」などの項目を探します。アプリのダウンロードページとサブスクリプションページは別の場合があります。前者はクライアント、後者はそのクライアントが読み込む設定を提供します。
コピーする際は、URL全体を保持してください。チャットアプリ、メモアプリ、ウェブページの表示では、長いURLが途中で切れたり末尾の句読点まで一緒にコピーされたりすることがあります。貼り付け後に認識されない場合は、管理画面に戻って再コピーし、不足部分を推測して手入力しないでください。専用のワンクリック取り込みボタンがある場合、インストール済みのクライアントが呼び出されます。呼び出しに失敗してもサブスクリプションが無効とは限らないため、URLをコピーして手動で取り込む方法も試せます。
- ✅ サービスの管理画面または公式ガイドからURLを取得し、対象アカウントでログインしていることを確認する。
- ✅ OS名だけでなく、クライアントのコアに合う形式を選ぶ。
- ✅ コピー後にURLの先頭、パス、クエリ部分が完全か確認する。
- ✅ 「リモート設定」または「URLから取り込む」の項目にリンクを直接貼り付ける。
- ❌ サブスクリプションURLを公開フォーラム、公開スクリーンショット、共有ドキュメントに貼り付けない。
- ❌ 認証情報を含むリンクを、出所の不明なオンライン変換サイトで処理しない。
サブスクリプションURLは認証情報として管理してください。完全なリンクを入手した人は、アカウントに紐づく設定の取得を試みる可能性があります。公開表示には適さず、一般的なウェブブックマークとして公開同期される場所に保存するのも避けるべきです。自分の端末間で移行する場合は、サービスの管理画面から再度コピーするか、管理可能なローカル転送を利用してください。
各プラットフォームでのクライアントへの取り込み方
プラットフォームによってボタン名は異なりますが、基本的な流れは共通です。対応クライアントをインストールし、リモート設定を追加してサブスクリプションURLを貼り付け、更新を実行してノードを選び、システム接続を有効にします。取り込みが完了したことは、クライアントが一覧を読み込めたことを示すだけで、通信が選択した接続先を経由しているとは限りません。
WindowsとmacOS
デスクトップクライアントでは、通常「設定」「サブスクリプション管理」「設定ファイル」などのメニューに取り込み項目があります。追加時は識別しやすい名前を入力し、リモートURLを貼り付けて更新を確定します。設定が表示されたら、プロキシグループとノードを選び、システムプロキシまたは仮想NICモードを有効にします。システムプロキシはプロキシ設定に従うアプリに適しています。仮想NICモードはより多くのアプリの通信を引き受けられますが、システム権限が必要で、他のネットワークツールとルーティングが競合することがあります。
macOSでは、ネットワーク拡張、VPN設定、バックグラウンド実行に関する個別の権限確認が表示されます。クライアントに一覧を取り込んだ後、システム接続が確立されない場合は、同じサブスクリプションを追加し直すのではなく、権限が許可されているか確認してください。Windowsでブラウザは使えるのに他のプログラムが接続できない場合は、そのプログラムがシステムプロキシを無視していないか、クライアントを仮想NICモードに切り替える必要がないかを確認します。
iOSとiPadOS
モバイルOSでは、通常、利用可能な経路から対応クライアントを入手し、クライアント内で「クリップボードから取り込む」または「サブスクリプションを追加」を選びます。初めて接続を有効にするとき、OSからVPN構成の追加許可を求められます。これはOSがネットワークトンネルを構築するために必要な権限です。拒否してもサブスクリプションが一覧に表示される場合はありますが、クライアントは実際の通信を引き受けられません。
一部のクライアントでは、リモートサブスクリプションとローカルポリシーを分けて保存します。サブスクリプションを更新するとノードは更新されますが、ユーザーが作成したルーティングルールまでは上書きされません。取り込み後に一部のウェブサイトだけ開けない場合は、接続先の名前だけで判断せず、ポリシーモード、ルールの一致、DNS設定も確認してください。
Android
Androidクライアントでは、通常、設定またはサブスクリプショングループ内に取り込み項目があります。URLを貼り付けて更新した後、設定を選択し、システムVPN接続を許可します。画面ロック後に接続が頻繁に停止する場合は、クライアントのバックグラウンド実行や省電力制限を確認してください。これはアプリのライフサイクルに関する問題であり、サブスクリプションリンクが無効になったことを意味しません。
AndroidでシステムVPNインターフェースを使う別のアプリも同時に有効にすると、後から起動した接続が先の接続に置き換わることがあります。切り分ける際は、まず競合するツールを停止し、対象クライアントだけを起動してください。ブラウザ拡張型のプロキシもシステム全体の接続とは異なり、通常はブラウザ自身にしか影響しません。
取り込み後の共通チェック
- ✅ サブスクリプション名がクライアントの設定一覧に表示されている。
- ✅ 手動更新後に地域と接続先のグループが表示される。
- ✅ ノードを明確に選択しており、空のプロキシグループのままになっていない。
- ✅ システムの状態で接続が有効になっている。
- ✅ 出口地域が現在選択しているノードと一致している。
- ✅ DNSリクエストが想定どおりクライアントの処理経路に入っている。
- ❌ 接続先一覧が表示されたことだけで、実際の接続確認を済ませたと判断しない。
取り込みに成功したのに開けない理由
取り込みの成功で確認できるのは、クライアントがサブスクリプションをダウンロードして解析できたことだけです。その後の接続には、プロトコルのハンドシェイク、入口のネットワーク、通信経路、出口への到達性、DNS解決、ルーティングの一致が関係します。どこか一つに問題があるだけでも、ウェブページの読み込み失敗として現れます。
まずクライアントのログで、どの段階のエラーか確認します。設定のダウンロードに失敗しているなら、サブスクリプションへのリクエストまたは認証に問題がある可能性が高いです。ノード接続に失敗するなら、プロトコルの対応状況と現在のネットワークを確認します。接続は確立しているのに特定のウェブサイトだけ失敗する場合は、出口地域、DNS、ルーティングルールが原因の可能性があります。段階を分けずに複数の設定を続けて変更すると、どの変更が効果をもたらしたのか分からなくなります。
| 現象 | 考えられる原因 | 対処の方向性 |
|---|---|---|
| 追加時に形式エラーが表示される | サブスクリプション形式とクライアントのコアが互換性を持たない | 管理画面に戻り、対応するクライアント形式を選ぶ |
| 設定のダウンロードに失敗する | URLが途中で切れている、認証情報が変更された、または現在のネットワークから入口にアクセスできない | URLを再コピーし、サブスクリプションへのリクエストを確認する |
| ノードはあるがハンドシェイクできない | クライアントがプロトコルに対応していない、または通信パラメータを正しく解析できていない | 対応するコアを更新し、再度取り込む |
| 一部のアプリだけ使える | アプリがシステムプロキシに従っていない、またはルーティングルールで直接接続に設定されている | プロキシモード、仮想NIC、ルールの一致を確認する |
| ドメインは開けないがアドレスには到達できる | DNSの解決経路に問題がある | クライアントのDNS設定とシステムキャッシュを確認する |
| ノード名が長期間変わらない | クライアントがローカルキャッシュを読み続けている | リモート設定を手動更新し、更新時刻を確認する |
回線種別も使用感に影響します。直接接続はクライアントが海外の入口へ直接接続する方式で、経路は単純ですが、国内の通信事業者から入口までの国際経路の品質に左右されやすくなります。中継接続は、まず近い入口に接続し、その後サービス側の経路を通じて出口へ転送するため、複雑なネットワーク経路を調整しやすい方式です。IEPL専線は入口と出口の間の専用国際区間に使われることがありますが、ユーザーから入口までの国内ネットワークは残ります。「専線」だからといって、経路全体が外部要因を受けないわけではありません。
プロトコルの選択もネットワーク環境と合わせて考える必要があります。Shadowsocks、VMess、Trojan、VLESSは、TCPなどの通信方式を使う設定で利用されることが多いです。Hysteria2とTUICはUDPの到達性により強く依存し、それぞれの仕組みで混雑やパケットロスに対応します。現在のネットワークがUDPを制限している場合、該当ノードに正常接続できない可能性があります。その場合は、サービス側が実際に提供し、クライアントも対応している別の接続先を選び、不明なパラメータを自己判断で変更しないでください。
サブスクリプション更新はいつ実行するべきか
サブスクリプションは、クライアントを開くたびに自動で再ダウンロードされるとは限りません。多くのクライアントは、まずローカルキャッシュを読み込み、設定されたタイミングでリモート設定を更新します。自動更新間隔に対応するものもあれば、ユーザーが手動操作したときだけリクエストするものもあります。サービス側でノード、ドメイン、証明書パラメータ、グループ構成が変更されることもあるため、長期間更新しないと古い設定を使い続けることになります。
接続を維持するために、常に更新を繰り返す必要はありません。現在の接続先が正常なら、ローカルキャッシュをそのまま使えます。サービスの管理画面で接続先の変更が案内されたとき、ノードがまとめて使えなくなったとき、地域一覧が明らかに減ったとき、またはクライアントを変更して設定が一致しなくなったときに、手動更新を行う意味があります。サブスクリプションを頻繁に削除して追加し直すと、ローカルポリシーやカスタムグループを失うことがあります。
更新の前後では、「リモートの内容」と「ローカルで加えた変更」を分けて考えます。更新時にサブスクリプションから生成されたプロキシグループを上書きしつつ、ローカルルールは保持するクライアントもあります。一方で、リモート設定全体を読み取り専用として扱うクライアントもあります。カスタムルールを長期的に管理する場合は、クライアントが提供するオーバーライド、パッチ、ローカルルール機能を優先し、次回更新で上書きされるリモート設定のコピーを直接編集しないでください。
ルーティングとDNSが正しく処理されているか確認する方法
接続済みと表示された後も、実際のリクエストが想定どおり流れているか確認する必要があります。最も直接的な確認方法は、出口地域を表示し、クライアントで選択したノードと照合することです。出口が依然として国内ネットワークのままなら、システムプロキシが有効になっていない、アプリがプロキシを回避している、またはルーティングルールがテスト対象を直接接続にしている可能性があります。
ルーティングモードには通常、ルール、グローバル、直接接続などの考え方があります。ルールモードは、ドメイン、IP、アプリ、ルールセットに応じて経路を決めます。グローバルモードは、より多くのリクエストを選択したノードへ渡します。直接接続モードでは、リモート接続先を使いません。名称はクライアントによって異なりますが、確認方法は同じです。リクエストログまたは接続履歴を開き、対象ドメインがどのルールに一致し、最終的にどのプロキシグループを使ったか確認します。
DNS漏洩とは、ドメインの名前解決リクエストが想定した解決経路に入らず、システムやローカルネットワークのDNSから照会内容を確認できる状態です。出口地域と一致しない名前解決結果になることもあります。クライアントで仮想NICや強化DNSを有効にした後は、競合する手動DNSがシステムに残っていないか、ブラウザで独自のセキュアDNSが有効になっていないか、ルーティングルールがDNSリクエストをクライアントの外へ出していないかを確認してください。
ブラウザ内蔵の暗号化DNSは、必ずしも誤設定ではありません。ただし、クライアントが指定したリゾルバーを迂回する可能性があります。ドメインの名前解決を接続先の出口と一致させたい場合は、ブラウザ、システム、クライアントのうち、どれが名前解決を担当するか明確にします。切り分けでは、独立した名前解決機能を一時的に無効にして基本経路が正常か確認し、その後プライバシーと性能の要件に合わせて一つずつ戻します。
リンクが流出したら最初にすること
完全なサブスクリプションURLが公開スクリーンショット、共有ドキュメント、コードリポジトリ、チャットグループに掲載された場合は、認証情報の流出として扱います。公開内容を削除するだけでは不十分です。すでにコピーやキャッシュが作成されている可能性があるため、サービスの管理画面でサブスクリプションリンクをリセットし、古い認証情報を取り消すか、新しいサブスクリプションURLを生成して旧URLを無効にしてください。
リセット後も、ローカルのクライアントがURLの変更を自動で認識するわけではありません。古いリモート設定を削除または無効にし、新しいリンクを取り込んで接続先を更新します。同じサブスクリプションを使っている自分の端末が複数ある場合は、すべて個別に置き換えてください。取り込み済みのノードがクライアントのキャッシュに残ることはありますが、次回更新は失敗するため、後で誤選択しないよう古い設定を積極的に整理します。
- ✅ サービスの管理画面からサブスクリプションURLをリセットするか、古い認証情報を直ちに取り消す。
- ✅ 公開ページ、スクリーンショット、共有ドキュメントから完全なリンクを削除する。
- ✅ 自分のクライアントで古いサブスクリプションを無効にし、新しいURLを取り込む。
- ✅ 同期メモ、ブラウザ履歴、クリップボードツールに古いリンクが残っていないか確認する。
- ✅ アカウントパスワードも同時に漏れていた場合は、別途パスワードを変更する。
- ❌ 「内容を削除した」ことだけで、古いURLが誰にも保存されていないと判断しない。
サブスクリプションの認証情報とアカウントパスワードは分けて考えてください。サブスクリプションリンクのリセットは、通常、設定へアクセスするURLを無効にするために行います。アカウントパスワードの変更は、管理画面へのログインを保護するためのものです。流出したのがサブスクリプションリンクだけなら、管理画面に用意されたリセット機能で対応できます。ログイン情報も含まれている場合は、アカウントの安全対策も同時に行う必要があります。