Clash Android クライアント利用ガイド:VpnService 許可と省電力ホワイトリスト設定
Android の Clash はVpnService でローカルトンネルを構築します。初回起動時の許可設定、省電力機能によるバックグラウンド強制終了の挙動、各メーカー端末での省電力ホワイトリスト登録手順を項目別に解説します。
Android の Clash はVpnService でローカルトンネルを構築します。初回起動時の許可設定、省電力機能によるバックグラウンド強制終了の挙動、各メーカー端末での省電力ホワイトリスト登録手順を項目別に解説します。
デスクトップ版の Clash(mihomo カーネルを採用した各種クライアントを含む)は通常、システムプロキシ設定または TUN 仮想ネットワークカードでトラフィックを引き受けますが、Android はセキュリティモデルの制約上、一般アプリに TUN デバイスを直接作成する権限がありません。Android は公式に VpnService という API を提供しており、ユーザーから明示的な許可を得たアプリだけがローカル仮想トンネルを構築し、端末上のネットワークトラフィックをアプリ内部に引き込んでからプロキシルールに従って転送できる仕組みになっています。Clash の Android クライアント(Clash Meta for Android、ClashMetaForAndroid 派生の FlClash、Clash for Android など)はすべてこの仕組みを利用しています——これは特定のクライアントの独自設計ではなく、Android システムが「全トラフィック引き受け」を許可する唯一の公式な入口です。
この点を理解しておくことが重要です。というのも、後述する「バグに見える現象」の大半は、システムが VpnService 系アプリに課す追加制限が原因であり、クライアント自体の問題ではないからです。VpnService が構築したトンネルは、ステータスバーに常時表示される鍵アイコンや「VPN 接続中」の通知として現れます。これは Android の強制的なセキュリティ設計であり、現在ネットワークトラフィックを読み取っているアプリがあることをユーザーに知らせるためのものです。この方式を採用するプロキシツールであれば必ずこのアイコンが表示され、消すことも消す必要もありません。クライアントの異常を示すものではありません。
クライアントをインストールした後、初めて起動ボタン(またはスイッチを「接続済み」)を押すと、システム標準のダイアログが表示され、「このアプリが VPN 接続の作成を要求しています。ネットワークトラフィックの監視を許可しますか」といった内容が示されます。このダイアログは Android システムが直接描画するもので、クライアント側でデザインをカスタマイズすることはできず、表示をトリガーすることしかできません。「許可/OK」をタップすると、そのクライアントはシステムに VPN 許可済みアプリとして記録され、以降は基本的に再表示されません。ただし、設定でユーザーが手動で許可を取り消した場合や、クライアントのバージョンを変更した場合(パッケージ名や署名が変わるとシステムは別アプリとして扱います)は再度表示されます。
VpnService が構築するプロセスは理論上フォアグラウンドサービスに分類され、通常のバックグラウンドプロセスよりシステムによる回収の対象になりにくいものの、あらゆる省電力機構から完全に免除されるわけではありません。Android は近年のバージョンで、Doze(ディープスリープ)モードや App Standby(アプリスタンバイグループ)機構を段階的に強化しており、端末が長時間静止し画面が消灯かつ未充電の状態が続くと、ホワイトリスト外のアプリのネットワークアクセスや CPU スケジューリングを周期的に停止させます。フォアグラウンドサービスの通知が表示されていても対象になり得ます。国内メーカー系 ROM(MIUI、ColorOS、原生UI、Flyme などのカスタム OS)は、Android 標準の省電力ポリシーの上に独自のバックグラウンド管理ロジックを重ねており、標準 Android よりも一般的に制限が厳しくなっています。これが同じクライアントでもメーカーによって「常時接続の安定性」の体感が大きく異なる主な理由です。
典型的な症状としては、画面ロック後しばらくするとプロキシが突然機能しなくなる、ステータスバーの鍵アイコンは表示されているのに実際のトラフィックはすでに切断されている、バックグラウンドに切り替えて数分後に手動で再度開かないと復帰しない、などが挙げられます。これらの現象は本質的にプロセスがシステムによってフリーズまたは制限されたことが原因であり、解決策はクライアント側の設定変更ではなく、システムの電池管理側でそのアプリを省電力ポリシーの対象外に設定することです。
以下の手順は各メーカーの主流バージョンでよく見られるメニュー構成をまとめたものです。実際のメニュー名称はシステムバージョンによって多少異なる場合があります。完全に一致する名称が見つからない場合は、設定の検索窓で「電池」「自動起動」「バックグラウンド」などのキーワードで検索してください。
省電力機能以外にも、「許可設定が正しくできていない」と誤解しやすい現象が2種類あるため、ここで個別に説明します。
一部の Android クライアントは、アプリ単位でどのアプリをプロキシトンネル経由にし、どのアプリを直接通過させるかを設定できます。この機能は VpnService が提供する addAllowedApplication/addDisallowedApplication インターフェースを利用しています。「指定アプリのみプロキシ経由」モードを設定したのに、ブラウザや対象アプリをリストに追加し忘れると、そのアプリのトラフィックは完全にトンネルを迂回してしまい、「Clash は接続済み表示なのにブラウザで目的のサイトにアクセスできない」という現象が起こります。トラブルシューティングでは、まずクライアントのアプリ単位プロキシ設定がグローバルモードかホワイトリストモードか、そして現在テストしているアプリがリストに入っているかを確認してください。
Android クライアントには「DNS の引き受け」といった名称のスイッチがよく見られ、TUN モードと併用している場合、システムのドメイン名解決リクエストもトンネル内に引き込まれてプロキシルールに従って処理されます。このスイッチが誤ってオフになっている状態で、キャリアの DNS が返した誤った解決結果がシステムにキャッシュされていると、「一部のドメインには接続できるが、一部は接続できない」という間欠的な現象が起こります。この場合はまず機内モードをオン・オフして再接続しシステムの DNS キャッシュをクリアし、その後 DNS 引き受けスイッチがオンになっているか確認してください。
| 症状 | 優先して確認すべき方向 |
|---|---|
| 起動ボタンを押しても反応がなく、許可ダイアログも表示されない | 他の VPN アプリがチャンネルを占有していないか確認し、いったん切断してから再試行 |
| 接続直後は正常だが、画面ロック後しばらくすると失効する | 電池最適化・自動起動管理・バックグラウンド高消費電力の3つのホワイトリストがすべて許可されているか |
| ステータスバーの鍵アイコンは常時表示されているのにサイトが開けない | アプリ単位プロキシのリスト、DNS 引き受けスイッチ、現在のノードが利用可能かどうか |
| バックグラウンドに切り替えて数分後、再度開かないと復帰しない | メーカーの自動起動管理がシステムによって「スマート管理」に自動的に戻されていないか |
| クライアント更新後、再度許可設定が必要になった | 正常な現象です。署名やパッケージ名が変わるとシステムに別アプリとして認識されます |
Android で Clash クライアントを使う際の中核となる流れは「VpnService 許可 → トンネル構築 → トラフィック転送」であり、この流れ自体は十分に安定しています。実際に体感を左右する問題のほとんどは、許可設定以外のシステム省電力管理に起因します。クライアントを電池最適化のホワイトリストに登録し、自動起動権限を許可し、バックグラウンド高消費電力の許可を確認したうえで、アプリ単位プロキシと DNS 引き受けスイッチが想定通り設定されているかをチェックすれば、日常利用における常時接続の安定性の問題はほぼカバーできます。メーカーごとに設定メニューの名称は異なりますが、基本的なロジックは共通しているため、新しい端末で該当項目が見つからない場合は「電池 / 自動起動 / バックグラウンド管理」というキーワードで設定内を検索すれば、たいてい正しいスイッチにたどり着けます。
Android を含む各プラットフォーム向けの公式インストールパッケージを入手し、入門ガイドに沿って初回設定を完了しましょう。