Android で Clash を使う際の2つの重要設定:VpnService 許可と省電力ホワイトリスト
Android 版 Clash は VpnService でローカルトンネルを構築します。許可ダイアログ、バックグラウンド強制終了、アプリ別プロキシの3大トラブルを解説し、主要メーカー端末の省電力ホワイトリスト設定手順を紹介します。
なぜ Android の Clash では許可ダイアログが必ず表示されるのか
Windows や macOS 版の Clash クライアントは、システムプロキシ設定または TUN 仮想ネットワークアダプタを使ってトラフィックを取り込みますが、Android システムはセキュリティ上の理由からこの経路を塞いでいます——一般のアプリにはネットワークインターフェースを直接読み書きする権限がありません。そこでシステムは VpnService という公式チャネルを用意しており、全体のトラフィックを引き受けたいアプリ(プロキシツールだけでなく、正規の企業 VPN やペアレンタルコントロールソフトも含む)は、必ずこのインターフェースを通じてユーザーに許可を求める必要があります。
そのため、Android 版 Clash クライアントを初めて起動してプロキシを有効にすると、システムから「VPN 接続を開始しますか?このアプリはすべてのネットワークトラフィックを監視するために VPN 接続の確立を求めています」といった内容のダイアログが表示されます。これは Clash 自体の動作ではなく、Android システムが VpnService インターフェースに対して強制的に表示するものであり、この技術方式を採用するアプリはすべてこの表示を避けられません。「OK/許可」をタップすると、システムが仮想ネットワークインターフェースを割り当て、Clash はデバイスのトラフィックをカーネル処理に取り込んでルールに従って振り分けられるようになります。
一度許可すると、アプリをアンインストール・再インストールしたりデータを消去したりしない限り、システムは通常その選択を記憶し、以降の起動でダイアログが再表示されることはありません。プロキシを起動するたびに再度許可が必要になる場合は、電力管理ソフトがバックグラウンドでアプリの状態をクリアしたか、システム更新によって VPN 権限の記録がリセットされた可能性が高いです。
許可ダイアログが表示されない・タップしても反応がない場合の対処
一部の端末では、「起動」ボタンをタップした後にダイアログが一瞬だけ表示されて消えたり、ダイアログ自体が表示されなかったり、プロキシのスイッチはオンになっているのにトラフィックがプロキシを経由していないといった現象が起こります。以下の順序で一つずつ確認してください:
- 他の VPN 接続が存在していないか確認する。Android システムは同時に1つの
VpnServiceインスタンスしか有効にできません。デバイス上で企業 VPN や他のプロキシツールが動作していたり、「プライベート DNS」に仮想ネットワークアダプタを必要とする機能が設定されていたりすると、Clash のトンネルが横取りされるか、そもそも確立できなくなります。システム設定の「VPN」一覧で、現在使用中のアプリを確認できます。 - 「アプリロック」や権限管理でブロックされていないか確認する。一部のカスタム OS では VPN 権限が通常のネットワーク権限とは別に、プライバシー管理の項目として独立して扱われています。設定のプライバシーまたは権限ページで「VPN サービス」または「VPN 接続の確立」という項目を探し、手動でオンにする必要があります。
- アプリを再インストールしてデータを完全に消去してから再試行する。権限の記録がシステム側で不整合を起こしている場合、許可フローをもう一度やり直すことで解決するケースが多いです。再インストール前にサブスクリプションやカスタムルールをエクスポートしておき、設定が失われないよう注意してください。
- システムプロキシモードに切り替えて検証する。クライアントが TUN モードと従来のシステムプロキシモードの両方に対応している場合、まずシステムプロキシモードでサブスクリプションやノード自体に問題がないことを確認し、その後改めて VpnService の許可だけを個別に調査することで、問題の範囲を絞り込めます。
ホワイトリストに登録してもバックグラウンドで強制終了されるのはなぜか
VpnService が確立するトンネルは長時間動作し続けるバックグラウンドプロセスです。Android の電力管理機構は既定で、長時間フォアグラウンドでの操作がないプロセスを「不審なバックグラウンド活動」とみなして強制的に回収しますが、これは各メーカーのカスタム OS で特に強く適用される傾向があります。具体的には、画面ロックからしばらく経つとプロキシが切断される、バックグラウンドに切り替えて数分後に直接接続に戻ってしまう、深夜や長時間の放置中にプロセスが静かに終了させられる、といった現象として現れます。
このトンネルを維持するための基本的な考え方は、システムの電力最適化ポリシーからこのアプリを「見えなく」する、あるいは省電力制限の対象外であることを明示的にシステムへ伝えることです。これには通常、以下の2段階の設定が必要で、どちらも欠かせません:
- システムレベルのバッテリー最適化ホワイトリスト。ほとんどの Android システムの設定には「バッテリー最適化」「消費電力ランキング」「アプリのスマート管理」といった項目があります。Clash クライアントを見つけたら「最適化しない」または「バックグラウンド活動を許可」を選択してください。
- メーカー独自の省電力マネージャーのホワイトリスト。これは各メーカーの OS が追加している別レイヤーで、システム標準のバッテリー最適化とは独立した仕組みのため、両方を個別に許可する必要があります。次の節でメーカーごとの設定手順を紹介します。
主要メーカー端末のホワイトリスト設定手順
メーカーごとに項目名や階層は多少異なります。以下は現行の主流バージョンで一般的に見られる位置を基準にしています。メニューの表示名が一致しない場合は、設定の検索欄に「バッテリー」「省電力」「自動起動」などと入力すると、たいてい素早く見つかります。
小米 / Redmi(MIUI / HyperOS)
設定 → アプリ設定 → アプリ管理 → Clash クライアントを探す → 省電力ポリシーで「制限なし」を選択。さらに設定 → 電池とパフォーマンス → アプリのスマート管理で、該当アプリの「メモリとバックグラウンド占有の管理」制限をオフにします。両方を許可してはじめて安定してバックグラウンドに常駐できます。
华为(HarmonyOS / EMUI)
設定 → 電池 → その他の電池設定 → 起動管理で、Clash クライアントの自動管理をオフにし、「自動起動を許可」「連動起動を許可」「バックグラウンド活動を許可」の3つのスイッチを手動でオンにします。一部の端末では「アプリ起動管理」以外に、「スマート省電力」による該当アプリへの制限も別途オフにする必要があります。
OPPO(ColorOS)
設定 → 電池 → アプリの電力消費管理で該当アプリを探し、「バックグラウンド動作を許可」を選択します。続いて設定 → アプリ管理 → アプリ起動管理で手動管理に切り替え、3つのスイッチ(自動起動・連動起動・バックグラウンド動作)をすべてオンにします。
vivo(OriginOS / Funtouch OS)
i管家 → 省電力管理 → バックグラウンド高消費電力で、Clash クライアントをバックグラウンド高消費電力を許可するリストに追加します。さらにスマホマネージャー → アプリ管理 → 権限管理 → 自動起動管理で、該当アプリの自動起動スイッチをオンにします。
三星(One UI)
設定 → 電池とデバイスケア → 電池 → バックグラウンド使用の制限で、アプリを「休止状態のアプリ」「ディープスリープアプリ」のリストから除外します。さらに「アプリスタンバイ」制限の対象になっていないことを個別に確認してください。Samsung の省電力ポリシーは比較的緩やかで、通常はこの1箇所の調整だけで十分です。
アプリ別プロキシ:トンネルを通すアプリを選択する
Android の VpnService はトンネルを確立するだけでなく、どのアプリのトラフィックをプロキシに含め、どれをそのまま通過させるかをクライアント側で指定できます。これがアプリ別プロキシです(クライアントによっては「アプリホワイトリスト」「アプリブラックリスト」という逆方向の2モードとして呼ばれます)。典型的な使い方としては、ブラウザと特定のアプリだけをプロキシ経由にし、銀行や決済系アプリは直接接続のままにする、あるいは反対にプロキシに敏感な数個のアプリだけを除外する、といったケースがあります。
アプリ別プロキシを設定する際は2点に注意してください。1つ目は、ホワイトリストモードとブラックリストモードは排他的で、同時に有効にできるのはどちらか一方だけであり、モードを間違えると、プロキシを通すべきアプリが通らず、通すべきではないアプリが逆に通ってしまうことです。2つ目は、アプリ別リストを変更した後は通常プロキシサービスを再起動しないと反映されないことです。システムの VpnService トンネルパラメータは接続確立時に一度だけ書き込まれるため、稼働中にリストを変更してもリアルタイムには反映されません。
特定のアプリがプロキシを経由しているかを手早く確認したいだけなら、アプリ別機能に頼る必要はありません。クライアントの接続ログやトラフィックパネルで、該当アプリのドメインリクエスト記録を直接確認する方が、リストを何度も調整するより直感的です。
総合的なトラブルシューティングの手順まとめ
これまでの内容をつなげると、Android 端末でプロキシが不安定な場合の完全なチェック手順は次のようになります。まず VpnService の許可自体が正しく確立されているか確認する(システムの VPN 一覧にアクティブな接続アイコンがあるかを見る)、次に他のアプリが同じ VpnService の枠を占有していないか確認する、続いてシステムのバッテリー最適化とメーカー独自の省電力マネージャーという2段階のホワイトリストを順に確認する、最後にアプリ別プロキシを使っている場合はモードとリストが想定どおりになっているか確認する、という順序です。この4ステップで Android プラットフォームにおける「インストールしたのに不安定」というケースのほとんどをカバーでき、闇雲な再インストールやクライアントの変更よりもはるかに効率的です。