Android版Clash利用ポイント:VpnService権限付与とバッテリー最適化ホワイトリスト設定

Android版クライアントの重要設定を整理:VpnServiceの権限付与フロー、アプリ単位のプロキシ、メーカー独自のバッテリー最適化による切断の原因、そしてクライアントをバッテリー最適化のホワイトリストに追加する具体的な手順を解説。

VpnService権限付与:Android代理の基本メカニズム

Androidプラットフォーム上のClashクライアント(および Clash Meta / mihomo コアの移植版)は、root権限を取得していない状態では、すべてシステムが提供する VpnService インターフェースに依存して通信を横取りする仕組みになっています。この仕組みは、クライアントがシステムに仮想ネットワークインターフェース(TUNデバイス)の作成を申請し、システムが一度だけ確認ダイアログを表示し、ユーザーが「許可」をタップすることで、そのクライアントがすべて、あるいは一部アプリのネットワーク通信を横取り・転送する権限を得るという流れです。この権限付与は本来のVPN接続とは無関係で、Androidシステムが「どのアプリが仮想ネットワークカードを作成できるか」を制限するためのセキュリティ機構であり、透過プロキシ機能を必要とするツールであれば(実際に遠隔のVPNサーバーに接続するかどうかにかかわらず)必ずこの手順を通ります。

クライアントを初めて起動して「プロキシ開始」や「接続」ボタンをタップすると、システムから「Clashにすべての通信のVPN接続確立を許可しますか」といった内容の確認ダイアログが表示されます。この確認は一度だけで済み、その後はユーザーが自分で権限を取り消したり、アプリデータを削除したり、クライアントを乗り換えたりしない限り、システムは許可状態を保持します。長時間このダイアログが表示されないのにプロキシが機能しない場合、考えられる理由は主に2つです。1つはクライアントの権限がバックグラウンドで静かに取り消されている場合、もう1つは同一デバイスにVPNインターフェースを占有する別のアプリがインストールされている場合です(システムは同時に1つのVpnServiceしか有効化できません)。この場合は先にもう一方のアプリを終了させる必要があります。

権限付与エラーの確認手順

  • 設定内で「常にVPNを使用」が他のアプリに紐付けられていないことを確認する。紐付けられていると新しいクライアントがインターフェースを取得できません。
  • システムの「VPN」設定ページ(通常はネットワークとインターネットのカテゴリ内)を開き、現在有効になっているのが目的のクライアントかどうか確認する。
  • 一部のカスタムOSでは、アプリ詳細ページに別途「VPN権限」というスイッチが用意されている場合があります。これは初回ダイアログの許可とは別の記録として管理されており、システム更新後に再確認が必要になることがあります。

アプリ単位プロキシ:どの通信をノード経由にするか細かく制御

大半のAndroidクライアントはTUNモードをベースに「アプリのホワイトリスト/ブラックリスト」設定を提供しています。これは本質的に仮想ネットワークカードの層でパッケージ名によって通信をフィルタリングするものであり、各アプリ内部のネットワーク処理を書き換えているわけではありません。アプリ単位プロキシを有効にすると、通常は次の2つのモードから選べます。

  1. ブラックリストモード:デフォルトでは全アプリがプロキシ経由になり、チェックを入れたアプリのみ直接通信になります。「特定のアプリだけ影響を受けさせたくない」場合に向いており、銀行系や行政系アプリなど、直接通信でないと正常に認証できないケースでよく使われます。
  2. ホワイトリストモード:デフォルトでは全アプリが直接通信になり、チェックを入れたアプリのみプロキシ経由になります。「特定のアプリだけノード経由にしたい」場合に向いており、通信量とバッテリー消費を抑えられるため、必要に応じて使うほとんどのユーザーにおすすめです。

注意点として、アプリ単位プロキシが有効になる範囲はユーザー空間のネットワークリクエストに限られます。システムレベルのコンポーネント(一部のシステムDNS解決や、一部メーカー独自のプッシュサービスなど)はパッケージ名フィルタリングの制約を受けない場合があります。これはシステム実装上の差異であり、クライアント側の不具合ではありません。また、アプリリストを変更した後は、プロキシサービスを一度手動で再起動(切断してから再接続)することをおすすめします。すでに確立された接続に設定がリアルタイムで反映されることは期待しない方がよいでしょう。

メーカー独自のバッテリー最適化が切断を引き起こす理由

Android上のClashクライアントはフォアグラウンドサービスとして長時間メモリに常駐し、TUN仮想ネットワークカードの接続を絶えず維持し続けます。この「長期間バックグラウンドでリソースを占有する」という動作パターンは、多くのメーカー独自カスタムOSのバッテリー管理ポリシーがまさに重点的に取り締まる対象です。メーカー独自のバッテリー最適化は、おおむね3つの層から介入してきます。

  • プロセスの凍結・強制終了:画面ロックや消灯から一定時間が経過すると、システムがそのアプリを「非アクティブなバックグラウンドプロセス」と判定し、プロセスを凍結または強制終了します。これに伴いTUNインターフェースも無効化され、すべてのプロキシ通信が切断されます。
  • 自動起動の制限:終了させられたプロセスは自身でフォアグラウンドサービスを再起動できません。クライアントに切断時の自動再接続ロジックが組み込まれていても、プロセス自体が存在しない以上、再接続は成立しません。
  • バックグラウンド通信の制限:プロセスが生きていても、システムが消灯状態でのそのアプリのバックグラウンド通信権限を個別に制限する場合があり、その結果「プロキシは動作しているように見えるが、通信が実際には流れていない」という状態になります。

これが、同じ設定ファイル・同じクライアントバージョンでも、純正に近いAndroid(Pixelなど)では数時間途切れずに安定動作するのに、一部のカスタムOSに切り替えると頻繁に切断してしまう理由です。差異はクライアント自体ではなく、システムがバックグラウンド常駐サービスに対してどれだけ寛容かという点にあります。

よくある誤解

切断後にクライアント画面上は「接続済み」と表示されているのにネットワークにアクセスできない場合、多くはTUNインターフェースがシステムに回収済みで、画面の状態表示が更新されていないだけであり、ノードやサブスクリプション自体に問題があるわけではありません。まずプロキシサービスを一度再起動してから他の要因を確認しましょう。

クライアントをバッテリー最適化ホワイトリストに追加する具体的な手順

上記の切断問題を解決する基本方針は、システムに対して「このアプリを自動最適化の対象から外してほしい」と伝え、バッテリー最適化ポリシーの管理範囲から除外することです。カスタムOSごとに設定項目の名称は異なりますが、操作の考え方はほぼ共通しています。以下は代表的なシステムでの参考パスです(設定メニューでよく使われる表記に基づいており、システムバージョンによって多少表現が異なる場合があります)。

純正Android/純正に近いシステム

  1. 「設定」→「アプリ」→対象のクライアントを探す。
  2. 「バッテリー」または「バッテリー使用状況」をタップ。
  3. 「バッテリー最適化」を「最適化する」から「最適化しない/無制限」に変更する。

MIUI(Xiaomi/Redmi)

  1. 「設定」→「アプリの設定」→「アプリ管理」→クライアントを探す。
  2. 「バッテリー最適化ポリシー」を「無制限」に設定する。
  3. あわせて「自動起動管理」でそのアプリの自動起動が許可されているか、また「バックグラウンドロック」(バージョンによっては「ロック画面アプリ」と表示)で最近使用したタスク一覧からアプリのアイコンをロックしているかも確認する。

ColorOS / realme UI(OPPO/OnePlus/realme)

  1. 「設定」→「バッテリー」→「アプリの電力管理」→クライアントを探す。
  2. 「休止時にアクティビティを停止」をオフにし、電力管理ポリシーを「バックグラウンド動作を許可」に設定する。
  3. 最近使用したタスク一覧でクライアントのカードを長押しし、ロックアイコンを選択して、バックグラウンド一括クリアの対象から外す。

EMUI / HarmonyOS(HUAWEI/HONOR)

  1. 「設定」→「バッテリー」→「アプリ起動管理」→クライアントの自動管理をオフにし、「自動起動」「連動起動」「バックグラウンド動作」の3つを手動でオンにする。
  2. 「設定」→「バッテリー」→「その他のバッテリー設定」→電力消費アプリ管理でそのクライアントが制限されていないか確認する。

One UI(Samsung)

  1. 「設定」→「アプリ」→クライアントを探す→「バッテリー」。
  2. 「休止状態のアプリ」「詳細な休止状態のアプリ」のリストからそのアプリを除外する。
  3. 「長期間使用していない場合はアプリを休止状態にする」スイッチをオフにする。

設定完了後は、プロキシに一度再接続し、消灯状態を20〜30分保って検証し、バックグラウンド切断の問題が解消したか確認することをおすすめします。一部のシステムバージョンでは更新後に設定がリセットされることがあるため、大きなバージョンアップのたびに上記のスイッチを再確認する必要があります。

日常利用における安定性向上のポイント

バッテリー最適化ホワイトリストのほかにも、Android版Clashクライアントの長期的な安定性を明確に高められる細かなポイントがいくつかあります。

  • クライアント内で「通知を常時表示」やフォアグラウンドサービス通知を有効にしておくとよいでしょう。この種のフォアグラウンドサービス通知はシステムから強制終了される確率を明らかに下げてくれます。これは生存権を得るための正規の仕組み上の代償です。
  • サードパーティのワンタップクリーナー系アプリの使用は避けましょう。この種のツールはシステムのホワイトリスト機構を無視してプロセスを強制終了させることが多いです。
  • ルーターやシステム側で既にDNS分流を行っているユーザーは、アプリ単位プロキシをホワイトリストモードで使うことを優先すると、仮想ネットワークカードが処理する接続数を減らせ、間接的にバッテリー消費も抑えられます。
  • サブスクリプションの更新は、定期自動更新に任せるより手動で行うことをおすすめします。定期タスクはバックグラウンド制限がかかっているときに黒く失敗しやすく、ルールと実際のノード情報がずれる原因になります。

権限付与のフローを整理し、必要に応じてアプリ単位プロキシを設定し、さらに使用機種に合わせてバッテリー最適化ホワイトリストの設定を完了すれば、Android版で最もよくある「使っているうちに切れる」問題はほぼカバーできます。上記の手順を終えてもなお切断が繰り返される場合は、ノードやサブスクリプション自体の問題を掘り下げて確認する方がよく、システム設定の中だけを堂々巡りするのは避けましょう。

Clashクライアントを入手

Android版のインストールパッケージが必要な場合や他プラットフォーム版に切り替えたい場合は、ダウンロードページから最新バージョンを入手できます。Clashを初めて使う方は、まずクイックスタートガイドに目を通して基本の設定手順を把握することをおすすめします。

ダウンロードページへ クイックスタート
クライアントをダウンロード