Clash Android クライアント使用のポイント:VpnService の許可と省電力ホワイトリスト設定
Android 版のプロキシクライアントはシステムの VpnService インターフェースに依存して動作しており、許可フロー・バックグラウンド維持・省電力戦略の三者は互いに絡み合っています。どれか一つでも設定が不十分だと、「使っているうちに切れる」という症状として現れます。本稿では実際の切断トラブル対応の手順に沿って、各ステップで何をすべきかを解説します。
VpnService の許可フローと鍵アイコンの意味
Android システムはアプリが端末全体のネットワーク通信を直接乗っ取ることを許可しておらず、TUN 方式を採用するすべてのプロキシクライアント(Clash for Android、ClashMeta for Android などを含む)は、システムが提供する VpnService インターフェース経由で許可を申請する必要があります。プロキシを初めて有効化する際、システムは「アプリが VPN 接続の設定を要求しています」という標準ダイアログを表示します。これは市販の VPN アプリのインストール時に表示される許可画面と同じシステムコンポーネントであり、クライアント側が独自に描画した画面ではありません。ユーザーが許可をタップした後、システムはそのアプリ用に仮想ネットワークカードを作成し、以降のすべての通信がこの仮想ネットワークカードで捕捉され、ルールに従って振り分けられるようになります。
許可が有効になると、ステータスバーに鍵の形をしたアイコン(端末によっては錠前アイコンや「VPN」の文字バブルとして表示)が現れます。これは Android 標準の強制表示であり、「現在このアプリが端末のネットワーク通信を代行している」ことをユーザーに知らせるためのものです。VpnService を利用するアプリであれば必ず表示され、クライアント自体の安全性とは無関係です。このアイコンが表示されている間はわずかに消費電力が増えますが、これは仮想ネットワークカードがパケットを継続的に転送している正常な負荷であり、異常な状態ではありません。
許可は初回有効化時、またはシステム更新後に一度再表示されるだけで済みます。プロキシを毎回有効化するたびに許可ダイアログが出る場合、通常はシステムがそのクライアントを「信頼できないアプリ」として扱っているためで、システム設定のアプリ詳細画面から手動で信頼設定を行う必要があります。
一部のメーカー独自カスタム OS(深度カスタマイズされた ROM など)では、VpnService の許可に加えて「常時オンの VPN」というオプションが追加されている場合があります。これをオンにすると、システムはそのアプリの仮想ネットワークカードの優先度を高く保証し、他のバックグラウンド整理機構による中断を受けにくくなるため、合わせて有効にしておくことを推奨します。
バックグラウンドがシステムに強制終了される理由
Android は全体の消費電力を抑えるため、バックグラウンドプロセスに対して複数階層の制限を課しており、システムバージョンが新しいほど制限は厳しくなります。これが Clash Android クライアントで「画面ロック後しばらくするとプロキシが失効する」という典型的な不具合報告の根本原因です。主に次の三つの仕組みが関係しています。
- Doze モード:端末が静止状態かつ充電されていない状態が一定時間続くと、システムは低電力状態に入り、ネットワークアクセスとバックグラウンドタスクのスケジューリングを大幅に制限します。優先度の高いフォアグラウンドサービスのみ動作を継続できます。
- App Standby(アプリ待機グループ):システムは使用頻度に応じてアプリを「アクティブ」「ワーキングセット」「常用」「ほとんど使わない」などのグループに分類し、後方のグループほど利用できるバックグラウンド実行の枠が少なくなります。
- メーカー独自の省電力管理:Android 標準の仕組みに加えて、多くの国産カスタム OS は独自のバックグラウンド整理ポリシーを重ねて実装しています。この部分は標準システムより積極的なことが多く、プロキシが「理由不明に切断される」主な原因となっています。
規格に沿って正しく実装されたプロキシクライアントは、転送処理を行うコアプロセスをフォアグラウンドサービスとして登録し、通知バーに常駐させます。フォアグラウンドサービスはシステムの優先度体系の中で生存の重みが高く設定されており、理論上は Doze や App Standby によって直接終了させられることはありません。しかし、メーカー独自の省電力ポリシーはフォアグラウンドサービスのマークを無視して強制的にプロセスを凍結・終了させることが多く、これが手動でホワイトリスト設定を行う必要がある理由です。
省電力ホワイトリストと自動起動許可リストの設定
Clash クライアントをバックグラウンドで安定動作させるには、システム設定内で次の二種類の許可設定を両方完了させる必要があります。
| 設定項目 | 役割 | 典型的な設定場所 |
|---|---|---|
| バッテリー最適化ホワイトリスト | システムがバックグラウンドで該当アプリの CPU・ネットワークスケジューリングを制限するのを防ぐ | 設定 → バッテリー → バッテリー最適化 → 対象クライアントを「最適化しない」に設定 |
| 自動起動管理 | 起動時やプロセス終了後にアプリが自身でサービスを再起動できるようにする | 設定 → アプリ管理 → 自動起動 / 権限管理 |
| バックグラウンド動作権限 | 一部の OS では「バックグラウンド動作の許可」がバッテリー最適化とは別の独立したスイッチとして存在 | 設定 → アプリ詳細 → バッテリー / 権限 |
| バックグラウンドタスクのロック | マルチタスク画面でクライアントのカードを長押しし、ロック設定を選ぶことで、一括クリーンアップ時に回収されるのを防ぐ | 最近使用したアプリ一覧 |
メーカーごとにメニュー名称は完全には一致しませんが、考え方は共通です。「スマート管理」「省電力モード」「自動管理」といった名称のオプションは、デフォルトでバックグラウンドを制限する設定になっているため、手動で「許可」または「制限しない」に変更する必要があります。以下の順序で一つずつ確認することを推奨します。
- まずバッテリー設定でクライアントを「スマート省電力」から制限なしに変更する。
- 次に自動起動権限がオンになっているか確認する。オフのままだと端末再起動後にプロキシが自動的に復旧しない。
- 最後に最近使用したアプリ一覧でアプリカードをロックし、「ワンタップでメモリを解放」機能によってフォアグラウンドサービスがまとめて終了されるのを防ぐ。
クライアントをホワイトリストに追加した後でも、極端な低電力状態や非常に長い静止状態では、システムがバックグラウンドのネットワークを制限することがあります。これはハードウェア・システム層での保護的な措置であり、設定漏れではないため、クライアントを再度開けば接続は復旧します。
アプリ単位プロキシの設定方法
Android クライアントの多くは「アプリ単位プロキシ」に対応しており、チェックを入れたアプリのみ仮想ネットワークカードを経由させ、それ以外のアプリはシステムの通常ネットワークで直接通信させることができます。よくある用途は二つあります。一つはブラウザやメッセージングアプリのみプロキシを経由させ、銀行や決済系アプリは直接接続のままにしておくケース。もう一つは VPN 環境に敏感で接続が不安定になるアプリを除外するケースです。設定画面はクライアントの「ネットワーク」または「アプリ一覧」カテゴリー内にあり、二つのモードが用意されています。
- ホワイトリストモード:チェックを入れたアプリのみプロキシ経由の通信になり、チェックしていないアプリは直接接続。どのアプリにプロキシが必要かが明確な場合に適しています。
- ブラックリストモード:チェックを入れたアプリ以外はすべてプロキシ経由となり、チェックを入れたアプリのみ直接接続。「基本は全体プロキシ、一部アプリだけ例外」というケースに適しています。
注意点として、アプリ単位プロキシはシステムの VpnService が提供する addAllowedApplication / addDisallowedApplication インターフェースに依存しており、設定を変更した後は通常 VPN 接続を一度切って再度有効化する必要があり、リアルタイムには反映されません。また、システム自体の一部サービス(DNS 解決コンポーネントなど)はアプリ一覧に表示されない場合がありますが、これはシステム層の動作であり、通常アプリに対するプロキシルールの振り分け判定には影響しません。
よくある質問
鍵アイコンは非表示にできますか?
できません。これは Android システムがすべての VpnService 系アプリに対して行う強制表示で、セキュリティ上の告知を目的としています。どのクライアントもシステム層でこれを隠すことはできず、正常な仕様です。
ホワイトリストに追加済みなのに、なぜたまに切断されますか?
極端な低電力状態、長時間の静止による深い Doze モード、あるいは端末再起動によって自動起動権限がシステムに再度リセットされることなどが原因で、バックグラウンドサービスが一時的に停止することがあります。クライアントの画面を再度開けば接続は復旧し、再設定は不要です。
アプリ単位プロキシとルール振り分けは同じものですか?
異なります。アプリ単位プロキシは特定アプリの通信が仮想ネットワークカードを経由するかどうかを決めるシステム層のスイッチです。ルール振り分け(ドメイン名や GEOIP による一致判定など)は、仮想ネットワークカードに入った通信をどのプロキシノードに送るかを決めるものです。両者は異なる段階で働くため、同時に使用できます。
プロキシを有効にすると一部のアプリでネットワークエラーが表示されるのはなぜですか?
一部のアプリは端末上にアクティブな VPN 接続があることを検知し、意図的にサービスを拒否します。ネットワーク環境に敏感なアプリでよく見られます。アプリ単位プロキシの設定でこのようなアプリを直接接続の除外対象にすれば、他のアプリのプロキシ利用には影響しません。