Android VPNの設定は、接続ボタンをタップするだけでは完了しません。まずクライアントがサブスクリプションの内容を認識し、AndroidシステムがVPN権限を許可したうえで、経路、ルール分岐、DNS、バックグラウンドの省電力制限も適切に設定する必要があります。どこか一つでも未完了だと、「接続済みなのにウェブページが開かない」「アプリを切り替えると切断される」「一部のサイトだけ元のネットワークを使う」といった現象が起こります。
このAndroid VPNガイドでは、実際の操作順に沿って説明します。クライアントとプロトコルの対応を確認し、サブスクリプションを追加、経路を選択してシステムのトンネルを確立し、最後に出口アドレスとDNSを確認します。Shadowsocks、VMess、Trojan、VLESS、Hysteria2、TUICの位置付けや、ダイレクト接続、中継、IEPL専線の経路上の違いも解説します。
インストール前の準備:クライアント、サブスクリプション、システム権限を確認
開始前に、三つの要素を区別しましょう。サブスクリプションサービスは経路設定を提供し、クライアントは設定を解析して接続を開始し、AndroidシステムはVPNServiceインターフェースを通じてローカルの仮想ネットワークを構築します。サブスクリプション自体は直接実行できるアプリではなく、クライアントにも自動的に利用可能な経路が備わるわけではありません。両者に互換性があって初めて接続できます。
よくある誤解は、クライアントに「サブスクリプションのインポート」機能があれば、すべての形式を読み込めると思ってしまうことです。実際には、対応するプロトコル、サブスクリプション形式、ルール構文はクライアントごとに異なります。汎用ノード一覧を返すサービスもあれば、クライアントの種類に応じて専用設定を生成するサービスもあります。追加する前に、サービスの管理画面にあるAndroid向け案内を確認し、推奨クライアントが対象プロトコルに対応しているか確かめてください。
| プロトコル | 主な特徴 | 追加時の確認点 |
|---|---|---|
| Shadowsocks | プロキシプロトコル。Androidクライアントは通常、VPNServiceを利用してシステムまたは指定アプリの通信を引き受けます | 暗号化方式、プラグインのパラメータ、クライアントの対応状況を確認する |
| VMess | 関連するプロキシエコシステムでよく使われ、複数の通信設定に対応できます | サーバーアドレス、通信方式、TLSパラメータを完全に一致させる必要があります |
| VLESS | プロトコル自体はシンプルで、TLSなどの通信セキュリティ設定と組み合わせて使われることが多い方式です | クライアントがサブスクリプションで指定された通信方式とセキュリティパラメータに対応している必要があります |
| Trojan | 通常はTLS接続上で動作し、証明書とドメイン設定の影響を受けやすい方式です | 証明書の検証をむやみに無効にしたり、サーバー名を自己判断で変更したりしないでください |
| Hysteria2 | QUICをベースとし、変動の大きいネットワークでは従来のTCP方式とは異なる通信特性を持ちます | クライアントのバージョンが対象プロトコルに対応し、必要な通信を許可していることを確認してください |
| TUIC | 同じくQUICをベースとし、具体的な機能はクライアントの実装とサーバー側の設定に左右されます | 旧バージョンのクライアントでは認識できない場合があるため、サブスクリプションを追加できたかだけで判断しないでください |
クライアントをインストールする際は、サービスの案内にある正式な入手方法を優先し、アプリ名、開発者情報、インストールパッケージの入手元を確認してください。現在の入手元からのアプリをインストールできないと表示された場合は、まずファイルの入手元を確認し、そのうえでシステム設定から一時的に許可します。インストール後は、その入手元からのインストール権限を無効にして、別のパッケージを誤ってインストールしないようにしましょう。
- ✅ 有効なサブスクリプションURLを取得し、公開されていない場所に保存している。
- ✅ クライアントがサブスクリプションで使われているプロトコルと設定形式に対応していることを確認している。
- ✅ クライアントが正常に通信するために必要なネットワーク権限を保持している。
- ✅ システムのVPN経路を使用中の他の同種アプリを終了している。
- ❌ サブスクリプションURLを不明なウェブページに貼り付け、いわゆる形式変換を行わないでください。
サブスクリプションを追加:URLからノード一覧へ登録
クライアントを開くと、「サブスクリプション」「設定」「設定ファイル」「リモート設定を追加」などの項目が表示されます。名称は異なっても、基本的な流れは同じです。クライアントにサブスクリプションURLを保存し、そのURLから設定内容を取得して、返された内容をノードとルールに解析します。初回は、サービスが単一ノードのパラメータだけを提供している場合を除き、「ノードを手動で追加」は選ばないでください。
- サービスの管理画面で完全なサブスクリプションURLをコピーし、先頭、末尾、URLパラメータを削除・変更しないでください。
- クライアントのサブスクリプションまたは設定管理画面を開き、URLからリモート設定を追加する項目を選びます。
- 名前欄には判別しやすい名前を入力し、アドレス欄にサブスクリプションURLを貼り付けます。
- 保存後に更新または再読み込みを実行し、クライアントがダウンロードと解析を完了するまで待ちます。
- 経路一覧に戻り、地域名、プロトコル表示、経路グループが表示されていることを確認します。
- まず現在のネットワーク環境に比較的適した経路を一つ選び、複数の設定を同時に有効にしないでください。
貼り付け直後に形式エラーが表示された場合は、余分な空白、改行、句読点がURLに含まれていないか確認してください。一部のチャットツールでは、URL末尾の文字まで一緒に選択されたり、表示時に内容が省略されたりすることがあります。正しい対処は管理画面に戻って再度コピーすることであり、不足部分を推測して手入力することではありません。
保存できたのにノード一覧が空の場合は、サブスクリプションのリクエストまたは解析処理に問題がある可能性があります。まず手動更新を一度実行し、クライアントに表示されたエラーを確認してください。「リクエストに失敗しました」はクライアントがまだ内容を取得できていないことを示し、「解析に失敗しました」は内容を受信したものの、現在のクライアントと形式が合っていないことを示します。両者では確認すべき方向が異なります。
サブスクリプションの更新と個別の経路切り替えは別の操作です
サブスクリプションの更新は、サービス側が公開したノード、グループ、ルールを再取得する操作です。経路の切り替えは、現在保存されている設定の中で接続先を変更するだけです。特定の経路が利用できない場合は、まず同じグループの別の経路へ切り替えてください。ノード一覧が古い場合、管理画面で設定変更が案内されている場合、またはクライアントが長時間更新されていない場合に限り、サブスクリプションを更新します。
サブスクリプションを更新すると、一部のクライアントではローカルの変更が上書きされます。ノード名、DNS、ルール分岐を自分で変更している場合は、クライアントが「完全上書き」方式か「統合更新」方式かを確認してください。初心者はサービス提供の初期設定を維持し、ローカル変更を経路障害と誤認しないようにするのが無難です。
VPN権限を許可して初回接続を完了
経路を選択して接続をタップすると、AndroidシステムにVPN接続リクエストが表示されます。これはシステムによる確認であり、クライアントが独自に作成した通知ではありません。許可すると、クライアントが仮想ネットワークインターフェースを作成し、設定に従って通信を引き受けられるようになります。その後、システムのステータス領域にVPNの表示が現れ、クライアントのボタンも接続済みに変わります。
システムの許可画面が表示されない場合は、以前に許可済みであるか、別のVPNアプリが経路を使用中である可能性があります。Androidでは通常、現在有効なシステムVPN設定だけが通信を引き受けられます。他のVPN、ネットワークフィルター、VPNServiceを使うローカルファイアウォールツールを切断・終了してから、現在のクライアントで再試行してください。
- 経路一覧で目的の経路を選択します。
- 接続をタップし、Androidに表示されたVPN接続リクエストを確認します。
- アプリ名が現在使用しているクライアントと一致することを確認してから、接続を許可します。
- クライアントの状態が接続済みになるまで待ち、その後ブラウザーで確認します。
- システムに別のアプリによって接続が置き換えられたと表示された場合は、現在動作中のネットワークツールを確認してください。
ダイレクト接続、中継、IEPL専線の選び方
経路名には、ダイレクト接続、中継、IEPLなどの表記が含まれることがあります。ダイレクト接続は、端末がパブリックインターネットを通じて出口サーバーへ直接接続する方式です。経路はシンプルですが、品質は国内の通信事業者と国際的なパブリックネットワークの経路に左右されます。中継では通常、入口に接続してから中間経路を経由して出口へ転送します。好ましくないパブリックネットワーク経路を一部回避できますが、最終的な品質は入口、転送経路、出口全体の状態に依存します。
IEPL専線は通常、経路内の国際専用伝送区間を指し、一般的な国際パブリックネットワークの経路とは異なります。特定方向の通信安定性を改善できる場合がありますが、すべての区間がパブリックネットワークから完全に分離されるわけではなく、プロトコル自体の暗号化や証明書検証に代わるものでもありません。実際のネットワーク環境と用途を基準に選び、経路名だけで判断しないでください。
省電力の対象外設定:画面ロックやアプリ切り替え後の切断を防ぐ
Androidシステムやメーカーごとのユーザーインターフェースは、バックグラウンドアプリに省電力制限を適用します。VPNクライアントはトンネルの維持、通信の処理、必要なネットワーク動作を継続する必要があります。画面ロック後にシステムがクライアントを一時停止すると、前面の画面には古い状態が表示されたままでも、実際の通信は正常に通らなくなります。
システム設定を開き、アプリ管理から現在のクライアントを探し、バッテリーまたはバックグラウンド動作の項目を確認します。バッテリー設定を「制限なし」または同等の項目にし、アプリのバックグラウンド動作を許可してください。システムによっては、省電力設定、バックグラウンド消費電力管理、アプリ起動管理、バッテリー最適化などの名称が使われ、場所も異なります。
システムに自動起動やバックグラウンド起動の管理機能がある場合は、システムによる整理後もクライアントが動作を再開できるよう許可します。最近使ったアプリの画面でアプリをロックできる場合は、手動の整理による中断を減らすのにも役立ちます。ただし、タスクのロックはバッテリー最適化の代わりにはなりません。通常はタスク整理の動作だけに影響し、システムがバックグラウンドのネットワークリソースを継続的に提供することを保証するものではありません。
- ✅ クライアントのバッテリー使用を「制限なし」またはシステム上の同等の設定にする。
- ✅ クライアントのバックグラウンド動作を許可し、自動起動の管理も確認する。
- ✅ システムの整理ツールで、クライアントが優先的に終了される対象になっていないことを確認する。
- ✅ 画面ロック後にウェブページを再度開き、接続が有効なままか確認する。
- ❌ ローカルVPNを作成する複数のフィルタリング・高速化ツールを同時に実行しないでください。
接続の有効性を確認:出口、DNS、ルール分岐をチェック
クライアントに接続済みと表示されても、アプリがトンネルの確立を認識していることしか分からず、すべての通信が想定どおり転送されているとは限りません。出口アドレス、対象サイトへのアクセス、DNS解決、ルール分岐の結果を確認して初めて、十分な検証になります。テスト中は設定を変えず、確認途中で経路を切り替えて判断を混乱させないでください。
まず接続前後の出口情報を比較する
接続前に信頼できるネットワーク確認ページを開き、表示された出口地域を記録します。接続後にページを更新し、出口が選択した経路に対応する地域へ変わったか確認してください。まったく変化がない場合は、現在のアプリがプロキシ対象に含まれていないか、ルール分岐によって確認サイトがダイレクト接続のままになっている可能性があります。
クライアントにグローバルモードがある場合は、診断のため一時的に切り替えます。グローバルモードで出口が変わるなら、トンネル自体はおおむね利用可能で、元の問題はルール分岐にある可能性が高いです。診断後は必要に応じてルールモードに戻し、すべてのローカルサービスが遠隔経路を通らないようにします。
次にDNSが設定どおりか確認する
DNSはドメイン名をネットワークアドレスに変換します。DNSリークとは通常、通信がトンネルを通っている一方で、ドメイン名の問い合わせが現在の設定の想定に合わないローカルのリゾルバーへ送られる状態です。アクセスしたドメインの問い合わせが露出したり、対象ドメインから適切でないアドレスが返されたりする可能性があります。
AndroidのプライベートDNS、クライアント内蔵DNS、リモートDNS、ルール分岐は、同時に解決結果へ影響することがあります。「アドレスにはアクセスできるのにドメインが開けない」場合は、まずクライアントログのDNSエラーを確認し、次にシステムのプライベートDNSとクライアント設定が競合していないか確かめてください。最初から不慣れなパブリックDNSを適当に入力すると、本当のルールの問題が隠れる可能性があります。
最後にルール分岐が想定どおりか確認する
ルール分岐は、どのリクエストをプロキシへ送り、どれをダイレクト接続にするかを決めます。一般的なモードには、グローバルプロキシ、ルールによる分岐、ローカルネットワークの除外、アプリ単位の選択があります。グローバルモードは切り分けに便利ですが、日常利用に最適とは限りません。ルールモードでは、国際サイトとローカルサービスに異なる経路を使えますが、ルールの継続的なメンテナンスが必要です。
アプリ単位の分岐は特に誤判断が起こりやすい設定です。ブラウザーをプロキシ対象にし、別のアプリを除外すると、ブラウザーは正常でも別のアプリは元のネットワークを使うことがあります。これは経路が突然使えなくなったのではなく、二つのアプリが異なる通信経路を使っているためです。
| 確認項目 | 正常な状態 | 異常時にまず確認する点 |
|---|---|---|
| システムのVPN状態 | システムにVPNが動作中と表示され、クライアントの状態も接続を維持している | 権限が許可されているか、他のVPNServiceアプリと競合していないか |
| 出口地域 | 選択した経路と現在のルール分岐に一致している | アプリ単位の分岐、ルールの適用結果、グローバルモードでのテスト |
| ドメイン解決 | ドメインを安定して解決し、アクセスできる | クライアントDNS、システムのプライベートDNS、リモート解決の設定 |
| 画面ロック後の接続 | 再び使用した後もアクセスを継続できる | バッテリー最適化、バックグラウンド動作、自動起動の設定 |
| ローカルネットワークの機器 | 設定したルールどおりアクセス可能、または隔離されている | ローカルネットワークを迂回する設定とルーティングルール |
よくあるトラブルの解決:一度に一つの条件を確認する
トラブル解決のポイントは、一度に一つの条件だけを変更することです。クライアント、プロトコル、経路、DNS、分岐モードを同時に変えると、接続が復旧しても本当の原因が分かりません。まずサービス提供の初期設定を維持し、システムネットワーク、サブスクリプション更新、経路の状態、クライアントログの順に確認してください。
接続中のまま進まない
まず同じサブスクリプション内の別の経路へ切り替えます。すべての経路が接続中のままなら、別のネットワーク環境で試し、ローカルネットワークの制限か個別経路の問題かを切り分けます。Hysteria2、TUICなどQUICベースの方式では、現在のネットワークによる通信処理が接続に影響することがあります。プロトコルパラメータを手動で書き換えるのではなく、サブスクリプションにある別のプロトコルと比較してください。
接続済みなのにすべてのウェブページが開かない
まず接続を切断し、元のネットワークでウェブページにアクセスできることを確認します。再接続後は一時的にグローバルモードでテストしてください。グローバルモードでもアクセスできない場合は、クライアントログにハンドシェイク、証明書、タイムアウト、DNSのエラーがないか確認します。Trojan、VLESSなどの設定では、ドメイン、TLS、サーバー名が相互に関連しています。証明書検証を適当に無効にするのは適切な解決方法ではありません。
一部のアプリだけ通信できない
アプリ単位のプロキシ一覧を確認し、対象アプリが含まれているか除外されているかを確認します。次に、ルールモードで対象ドメインがダイレクト接続と判定されていないか確認してください。一部のアプリは独自の接続方式を使ったり、古いネットワーク状態をキャッシュしたりします。VPN接続を維持したままアプリを完全に終了し、再度開いてください。
サブスクリプションの更新に失敗するが、既存の経路は使える
これは通常、保存済みのノード設定は接続できるものの、クライアントが新しいサブスクリプション内容を一時的に取得できないことを示します。すぐに既存設定を削除しないでください。まずサブスクリプションが有効か、システム時刻が正確か、元のネットワークからサブスクリプションURLにアクセスできるかを確認し、その後手動更新を試します。削除すると、現在も使えるローカル設定を失う可能性があります。
頻繁に切断される、または画面ロック後に使えなくなる
バッテリー最適化とバックグラウンド動作の権限を再確認し、無線ネットワークとモバイルネットワークの切り替えが起きていないか確認します。ネットワークが切り替わると基盤となる接続が変わります。自動再接続できるクライアントもあれば、セッションを再確立する必要があるクライアントもあります。画面ロック後だけ問題が起きるなら、経路そのものより省電力設定を優先して確認してください。
- ✅ 切断中でも基礎ネットワークが正常に利用できることを先に確認する。
- ✅ 次にサブスクリプションを更新し、更新前から使えていた設定を残す。
- ✅ 経路を一つ変更して再確認し、他の設定は同時に変更しない。
- ✅ クライアントログのエラー種別を確認し、問い合わせ時はサブスクリプションの認証情報を隠す。
- ✅ グローバルモードとルールモードを比較し、分岐の問題かどうか判断する。
- ❌ 証明書検証を無効にしてTLS設定のエラーを回避しないでください。
日常のメンテナンス:サブスクリプション更新、認証情報の保護、初期設定の維持
初回設定が完了した後の日常的なメンテナンスは、サブスクリプションの更新、クライアントのアップデート、システムのバックグラウンド設定の確認が中心です。クライアントをアップデートする前にバージョン情報を確認し、現在のプロトコルと設定形式が引き続き対応しているか確かめてください。接続が安定しているなら、慣れていない項目を試すために基盤パラメータを頻繁に変更する必要はありません。
サブスクリプションURLの漏えいが疑われる場合は、サービスの管理画面で利用できるリセット操作を実行し、クライアントで古いURLを置き換えてください。チャット履歴を削除するだけでは、すでに漏えいしたURLを無効にできません。サポートへログを送る際は、サブスクリプションURL、ノードのパスワード、ユーザー識別子、その他の認証パラメータを隠し、エラー発生時刻、エラー種別、必要なクライアントバージョンだけを残してください。
Androidクライアントは、インターフェースや重視する機能がそれぞれ異なります。簡単なサブスクリプション追加とワンタップ接続を得意とするものもあれば、細かなルール分岐、DNS、ルーティング設定を提供するものもあります。初心者が機能数だけを理由に複雑なクライアントを選ぶ必要はありません。サービス設定を正しく読み込み、接続を継続的に維持し、ログを分かりやすく表示できることのほうが、使わない高度な項目が多いことより重要です。