まず確認:VPNの許可設定か、バックグラウンド制限か
初回起動時に接続できない場合はVPNの許可を確認。画面点灯中は使えても、ロック後に切れる場合はバッテリーやバックグラウンドの制限を確認しましょう。この2つでは対処する設定が異なります。通信が途切れたからといってすぐにアプリを再インストールしたり、DNS・ノード・ルールを一度に変更したりすると、原因を特定しにくくなります。
この記事では、AndroidのローカルVPNによる通信制御を前提に説明します。Clash for Android 2.5.12はサポートが終了した旧クライアントのため、メニューの見分け方を確認する参考として扱い、現行の推奨バージョンを示すものではありません。mihomoなどを搭載するほかのAndroidクライアントはボタン名が異なる場合がありますが、システムの許可、バッテリー制限、VPNの競合を確認する順序は同じです。
- 起動を押すとすぐ停止する:システムの接続リクエストをキャンセルしていないか、ほかのVPNが起動していないか、設定の読み込みに失敗していないかを確認します。
- 画面ロックから数分後に停止し、アプリを開くと復旧する:省電力設定、バックグラウンド動作、メーカー独自の自動起動管理を優先して確認します。
- VPNは接続済みなのに、一部のサイトだけ開けない:バックグラウンドでアプリが終了したと決めつけず、ノード、ルール、DNS、アプリごとの振り分けを確認します。
VpnServiceの許可でできること
VpnServiceは、Androidがアプリに提供するVPN用のAPIです。クライアントはこれを使ってローカルの仮想ネットワークインターフェースを作成し、システムから渡された通信データを受け取ります。その後、プロキシのコアが設定に応じて、直接接続するか、プロキシ経由にするか、接続を拒否するかを決定します。この仮想インターフェースは一般にTUNと呼ばれ、ブラウザーのHTTPリクエストだけでなくIPパケットを処理します。
そのため、スマートフォンにVPNの鍵アイコンが表示されても、すべての通信が同じリモートVPNサーバーを経由するとは限りません。実際の通信経路は、ルール、プロキシグループ、ノードの選択、アプリの除外設定によって決まります。DIRECTはクライアントが直接接続し、プロキシルールに一致した通信は該当するノードを経由します。
システムの許可と設定のインポートは別
- サブスクリプションのインポート:ノード、ルール、プロキシグループなどの設定をクライアントに取り込みます。
- VPN接続を許可:アプリがシステムレベルのローカルVPNインターフェースを作成できるようにします。
- バックグラウンド実行を許可:画面消灯後にクライアントのサービスが制限される可能性を減らします。
この3項目は個別に確認が必要です。サブスクリプションのインポートに成功しても、VPNの許可を得たことにはなりません。VPNを許可しても、ノードが使えるとは限りません。一般的な個人用Android環境では、同時に有効にできるVPNは通常1つです。別のプロキシクライアント、ファイアウォール、ローカルVPNを使うフィルタリングアプリが、現在の接続を置き換えることがあります。仕事用プロファイルのVPNには別の管理ルールが適用されるため、端末のポリシーも確認してください。
初回起動:VPNを許可して接続を確認する
- まず設定を読み込みます。クライアントの「設定」画面でサブスクリプションをインポートし、更新後に使用する設定を選択します。一覧に設定があるだけで有効化されていない場合、正常に起動できないことがあります。
- ほかのVPNを一時的に停止します。システムの「設定」を開いて「VPN」を検索し、別のアプリが接続を使用していないことを確認します。広告ブロックアプリやパケットキャプチャツールなど、ローカルVPNを使うアプリも確認してください。
- クライアントに戻って起動を押します。初回接続時、AndroidにVPN接続のリクエストが表示され、アプリがVPN接続を作成することが通知されます。アプリ名を確認して「OK」または「許可」を選びます。
- 2か所で状態を確認します。クライアントに実行中と表示され、システムの「VPN」画面でも該当アプリが接続済みになっていることを確認します。ステータスバーのアイコンはシステムの表示設定によって異なるため、アイコンだけで判断しないでください。
- 実際の通信をテストします。通常どおり直接接続できるWebページと、プロキシ経由にするサイトを開きます。その後、クライアントの接続履歴やログを確認し、想定したルールが適用されているか確認します。
誤ってキャンセルした場合は、通常、もう一度起動を押せば許可が再度求められます。すぐにアプリのデータを消去する必要はありません。何度試してもダイアログが表示されない場合は、まずシステムのVPN画面に接続済みのVPNがないか確認し、その後クライアントのエラーログを確認してください。端末の管理ポリシーによってVPNの追加が禁止されている場合もあります。
Android 13以降の通知権限
Android 13以降では、通知の許可とVPN接続の許可は別々に管理されます。通知を許可すると、通知欄でサービスの状態を確認したり接続を停止したりしやすくなります。ただし、通知を拒否してもVPNの許可が取り消されるわけではなく、フォアグラウンドサービスが動いていないとも限りません。トラブル時は、まずシステムのVPN状態を確認し、次にクライアントのサービス状態を確認してください。
常時接続VPN:2つの設定の違いを確認
標準に近いAndroidでは、「設定」→「ネットワークとインターネット」→「VPN」→対象アプリ横の歯車が一般的な設定場所です。Samsungなどでは、「接続」→「その他の接続設定」→「VPN」にある場合があります。見つからない場合は、システム設定で「VPN」を検索してください。
| システム設定 | 主な機能 | 利用条件 |
|---|---|---|
| 常時接続VPN | 選択したVPNサービスの維持や再接続を試みる(再起動後の再接続を含む) | クライアントが対応を宣言しており、設定を正常に読み込める |
| VPN未接続時の通信をブロック | VPN未接続のとき、VPNを経由しないネットワーク通信を遮断する | 通信、アプリの除外、障害時の復旧動作を確認済み |
| バッテリー使用量:制限なし | バックグラウンドでのバッテリー制限を緩和する | メーカー独自のバックグラウンド管理ルールも確認が必要 |
「常時接続VPN」は、すべてのクライアントが対応しているわけではありません。Android 7.0以降で利用できますが、アプリ側が非対応としている場合や、管理対象端末で変更が制限されている場合があります。設定がグレーアウトしている、または項目が表示されない場合は、まずクライアントの対応状況を確認してください。サブスクリプションを変更してシステム設定を探す必要はありません。
通信が安定していることを確認してから、通信をブロックする設定を検討してください。「VPN未接続時の通信をブロック」を有効にすると、クライアントの起動失敗、設定の読み込みエラー、サービスの復旧失敗などにより、スマートフォン全体がインターネットに接続できなくなることがあります。VPNから除外したアプリの通信もブロックされる可能性があるため、「除外したアプリは必ず直接接続できる」とは限りません。
初回のテストでは、復旧手段を確保しておきましょう。システムのVPN設定画面を開く方法を確認しておきます。通信をブロックする設定を有効にしてネットにつながらなくなった場合は、まずその画面でブロックを解除し、その後クライアントを調べてください。常時接続を有効にしてもプロキシノードが常に使えるとは限らず、バッテリーやバックグラウンドの設定の代わりにもなりません。
バッテリー最適化の除外:アプリの電池設定を変更し、メーカー独自の管理も確認
AndroidのDozeは端末がアイドル状態のときに電力を節約する機能です。アプリのスタンバイやメーカー独自のバックグラウンド管理によって、ほかの制限が加わることもあります。「最適化の除外」は、通常、そのアプリがバックグラウンドで動作しやすくなる設定を指し、端末全体の省電力機能を無効にするものではありません。使用中のクライアントだけを優先して調整し、すべてのアプリの制限を解除するのは避けましょう。
まずは次の3項目を確認
- クライアントのアイコンを長押し→「アプリ情報」→「バッテリー」。「制限なし」があれば選択します。「バックグラウンドでの使用を許可」などの設定がある場合は、許可されていることを確認してください。
- 「バッテリー最適化」を検索します。システムに最適化対象アプリの一覧がある場合は、「すべてのアプリ」に切り替え、クライアントを見つけて「最適化しない」に設定します。システムによっては前の設定と同じ項目を指すため、別々のスイッチを探す必要はありません。
- 現在の省電力モードを確認します。テスト中は、スーパー省電力モードや超省電力モードを解除してください。通常の省電力モードがサービスに影響するかどうかは、端末ごとに確認が必要です。アプリが最適化対象から除外されているだけでは判断できません。
メーカー別に確認する追加設定
以下はよくあるメニュー名の例で、すべてのバージョンに共通する固定の手順ではありません。HyperOS、One UI、EMUIなどはシステム更新で設定場所が変わることがあります。端末の「アプリ情報」と設定内検索を優先してください。
| システム | まず確認する設定場所 | 見落としやすい設定 |
|---|---|---|
| Pixel/標準に近いAndroid | 設定→アプリ→すべてのアプリを表示→クライアント→アプリのバッテリー使用量 | バックグラウンドでの使用を許可。一部のバージョンでは、この項目を開いて「制限なし」を選択 |
| Xiaomi MIUI/HyperOS | アプリ情報→バッテリーセーバー→制限なし | 権限またはアプリ管理で自動起動を確認。一部のバージョンでは「バックグラウンド自動起動」と表示 |
| Samsung One UI | 設定→バッテリー→バックグラウンドでの使用制限 | スリープ中・ディープスリープ中のアプリ一覧から削除。「スリープ状態にしないアプリ」があればクライアントを追加 |
| Huawei EMUI | 設定→アプリとサービス→アプリの起動管理 | 自動管理をオフにし、必要に応じて自動起動、他のアプリによる起動、バックグラウンド動作を許可 |
| OPPO/OnePlus/realme | アプリ情報→バッテリー消費管理またはバッテリー使用量 | バックグラウンドでの動作を許可する設定を確認。自動起動の許可は別のアプリ管理画面にある場合があります。 |
| vivo/iQOO | 設定→バッテリー→バックグラウンドでの電力消費管理 | バックグラウンドでの高い電力消費を許可し、アプリの自動起動権限も確認 |
最近のアプリ画面で「アプリをロック」すると補助になる場合がありますが、通常は一括終了時にアプリが消されにくくなるだけで、システムのバッテリー制限を解除する設定ではありません。また、タスクカードをスワイプして消すこと、システムによるプロセス終了、「強制停止」は別の操作です。強制停止後は通常、アプリを手動で再度開く必要があり、自動起動ですぐに復旧するとは限りません。
画面ロック後に切断する:手順に沿ってサービス停止と通信障害を切り分ける
テストでは一度に変更する設定を1種類にし、時刻を記録してください。以下の5分、15分は目安の確認時間であり、特定の端末での動作を保証するものではありません。短時間のテストに成功しても、一晩の待機中に安定するとは限りません。
- 画面点灯中の状態を記録します。利用できることを確認済みのノードを1つ選び、Wi-Fiまたはモバイルデータの接続状況、VPNの状態、テスト用Webページが開けるかを記録します。
- 画面ロック後5分で確認します。ロックを解除したら、クライアントを開く前にシステムのVPN画面を確認してください。先にアプリを開くと、再起動によって停止していた現象が隠れることがあります。
- 次に15分間テストします。VPNが接続状態を保っているか、Webページへの最初のリクエストが成功するか、クライアントのログにサービスの再起動、接続タイムアウト、名前解決エラーがないかを記録します。
- ネットワークの切り替えをテストします。Wi-Fiからモバイルデータ、モバイルデータからWi-Fiに切り替えた後、それぞれ新しいリクエストを送ります。ネットワーク切り替えで既存のTCP接続が切れるのは珍しくありません。新しい接続が復旧するかを確認してください。
- 最後に再起動をテストします。起動後にロックを解除し、正常に復旧するか確認してください。VPN未接続時の通信をブロックする設定を有効にしている場合は、障害時の復旧方法も使えることを確認します。
確認結果に応じて原因を切り分ける
- システムのVPNが切断され、クライアントを開くと復旧する:バックグラウンド制限、クラッシュ履歴、ほかのVPNによる接続の置き換えを重点的に確認します。最適化の除外で解決できる原因は一部に限られます。
- システムのVPNは接続中なのに、新しいリクエストがすべてタイムアウトする:現在のノードと上流ネットワークを確認します。利用できることを確認済みの別のノードに切り替えて再テストし、すぐにDNSが原因だと決めつけないでください。
- ログにドメインの名前解決エラーがある:DNS設定と、設定された上流DNSに到達できるかを確認します。ブラウザーのアドレス欄にIPアドレスを入力した結果だけで判断しないでください。HTTPS証明書や仮想ホストもアクセスに影響します。
- 1つのアプリだけで問題が起きる:アプリの通信除外、選択したアプリのみプロキシを使用する設定、システムによるバックグラウンド通信の制限を確認します。最終的に適用されたルールも確認してください。
- 画面ロック中の通知だけ遅れる:対象アプリ自体のバッテリー制限、プッシュ通知の経路、バックグラウンドデータの権限も確認してください。Clashの設定だけでは解決しない場合があります。
間違えやすい設定に関する質問
TUNを有効にしていても、VPN接続の許可は必要?
root権限を取得していない一般的なAndroidのローカルVPN方式では必要です。TUNは仮想ネットワークインターフェースや、それを使った通信制御方式を指し、VpnServiceはクライアントがその機能を利用するために申請するシステムAPIです。サブスクリプション内のTUN設定、クライアント画面の通信制御スイッチ、Androidの許可設定はそれぞれ別のものです。設定が読み込まれるかどうかは、クライアントの実装にも依存します。
バッテリー最適化から除外すれば、常時接続できる?
いいえ。最適化からの除外でバックグラウンド制限は軽減できますが、ネットワークの切り替え、ノード障害、システムのメモリ不足、クライアントのクラッシュ、手動の強制停止によって接続が途切れることがあります。遅延テストの数値だけでなく、システムのVPN状態、サービスログ、新しいリクエストの結果を合わせて判断してください。
画面ロック後の切断を直すには、ポート7890を変更する必要がある?
通常は不要です。7890は一部の設定でローカルHTTPプロキシや混合プロキシの待ち受けポートとして使われますが、すべてのクライアントで固定されているわけではありません。Androidのバックグラウンドサービスの許可とは別の問題です。ログにポート競合やローカルプロキシへの接続失敗が明記されている場合に限り、待ち受けポートを確認してください。
デュアルアプリや仕事用プロファイルでも、設定し直す必要がある?
通常はそれぞれ個別に確認が必要です。ユーザーや仕事用プロファイルごとに、アプリのインスタンス、許可、管理環境が異なります。個人用プロファイルで最適化を除外していても、仕事用プロファイルのアプリに許可があるとは限りません。企業端末ではVPNが管理者によって指定されていることもあります。変更できない項目がある場合は、まず管理ポリシーを確認してください。
最後に次の順で確認します:設定が有効になっている、システムのVPN接続を許可している、ほかのVPNが接続を使用していない、アプリのバックグラウンド実行を許可している、メーカー独自の省電力制限を調整していることを確認し、画面ロックとネットワーク切り替えのテストを行います。それでも問題が続く場合は、何度も再インストールするより、発生時刻、システムのバージョン、クライアントのバージョン、個人情報を除いたログを記録すると原因を特定しやすくなります。基本的な設定手順は利用ガイド、用語が分からない場合は用語集を確認してください。