Clash Androidの設定:VpnServiceとバッテリー最適化の除外設定

AndroidのローカルVPNによる通信制御の仕組みを解説し、バックグラウンド動作、バッテリー制限、通知権限、接続断からの復旧に必要な設定を紹介します。

Android版Clashクライアントは通常、システムが提供する VpnService を利用して端末の通信を制御します。初回起動時に「接続リクエスト」が表示され、VPNの鍵アイコンが現れる場合、システムがアプリの通信をローカルの仮想ネットワークインターフェースへ渡していることを示します。端末が従来型の遠隔VPNサーバーへ直接接続したという意味ではありません。Clashのコアはこの通信を読み取り、設定内のルール、プロキシグループ、ノード選択に従って、プロキシ経由、直接接続、または拒否を判断します。

この仕組みにより、システムプロキシを自分で利用しない多くのアプリも通信を制御できますが、Androidのバックグラウンド制限の影響も受けやすくなります。画面ロック後に切断される、Wi-Fiの切り替え後に復旧しない、通知を無効にするとサービスが消えるといった現象は、サブスクリプションそのものではなく、VpnService、フォアグラウンドサービス、バッテリー設定、ネットワーク切り替えが重なって起きることがあります。設定は、まず構成が利用可能か確認し、次にシステム権限を整え、最後に待機中とネットワーク切り替え時の動作を確認する順番がおすすめです。

VpnServiceはAndroidの通信をどのように制御するか

システムの許可を得ると、クライアントはTUNタイプの仮想ネットワークインターフェースを作成します。Androidは対象アプリが生成したIPパケットをこのインターフェースへ送り、ClashまたはmihomoのコアがDNS処理、ルール照合、プロキシ転送を行います。ルールモードでは通常、設定ファイルを上から順に照合します。ドメイン、IP、プロセス、ルールセットのいずれかに一致すると、対応するプロキシグループへ振り分けられます。一致しない接続は通常、末尾のフォールバックルールで処理されます。

ここでいう「VPN」は、主にAndroidが提供する通信の入口を指します。プロキシノードはClashの設定で決まり、VpnService自体がノードを提供するわけでも、サブスクリプションの代わりになるわけでもありません。サブスクリプションを取り込んだ後も、設定を更新し、プロキシグループを選択して、現在のノードが利用可能か確認する必要があります。サブスクリプションにルールとプロキシグループしかなく、有効なプロキシが含まれていない場合、VPNアイコンが表示されていても、プロキシが必要な外部接続は確立できません。

構成要素 主な役割 よくある状態
Android VpnService 仮想インターフェースを作成し、アプリの通信をクライアントへ渡す ステータスバーにVPNマークが表示される
Clashまたはmihomoのコア 設定を解析し、DNS処理、ルール照合、接続転送を行う ログにルールとプロキシグループの一致結果が表示される
サブスクリプション設定 ノード、プロキシグループ、ルール、関連パラメーターを提供する 更新後にノードやプロキシ選択が変わることがある
フォアグラウンドサービスの通知 プロキシサービスが継続して動作していることをシステムに知らせる 通知欄に実行状態への入口が残る

Androidでは、同じユーザー領域で有効にできるVPNサービスは通常1つだけです。他のVPNクライアント、仕事用プロファイルのVPN、広告ブロッカー、一部のファイアウォールアプリもVpnServiceを使用することがあります。新しいサービスを起動すると、以前のサービスが直ちに停止する場合があります。そのため、Clash Androidが起動しないときは、起動ボタンを何度も押すのではなく、まずシステムのVPN設定に動作中の接続が残っていないか確認してください。

初回起動とサブスクリプション取り込み後の設定手順

初回利用時は決まった順番で操作すると、ノードの障害、ルールの問題、システム権限の問題を切り分けやすくなります。まず設定を取り込み、更新を完了させてから、プロキシまたはプロキシグループの画面で利用するノードを明確に選択します。プロキシグループが自動選択になっている場合は、先にレイテンシテストを実行しても構いません。ただし、レイテンシの数値はテスト先の応答状況を示すだけで、すべてのサイトへ正常にアクセスできることを意味しません。

  1. サブスクリプションを取り込む:サブスクリプションURLが有効で、設定の更新中に解析エラーが発生していないことを確認します。YAMLのインデントミス、参照先ルールセットのダウンロード失敗、サブスクリプションの期限切れなどにより、設定を読み込めないことがあります。
  2. プロキシを選択する:主要なプロキシグループを開き、現在到達可能なノードを選択します。設定を更新するとプロキシグループの内容がリセットされることがあるため、更新後に選択肢をもう一度確認してください。
  3. サービスを起動する:VPNまたはTUNの動作スイッチを有効にし、Androidに表示される接続リクエストを確認して、このクライアントによるVPN接続を許可します。
  4. 実行通知を表示する:通知欄にクライアントのフォアグラウンドサービス状態が表示されることを確認します。通知がシステムによって制限されている場合は、アプリの通知設定で該当する通知カテゴリを確認してください。
  5. 接続を確認する:直接接続する想定のサイトと、プロキシ経由の想定のサイトをそれぞれ開き、クライアントのログでルールの一致状況を確認します。

アプリごとのプロキシに対応している場合は、「選択したアプリのみプロキシ」または「選択したアプリをプロキシから除外」を選べます。前者は一部のアプリだけClash経由にしたい場合に適し、後者は銀行アプリ、LAN管理ツール、互換性に問題があるアプリを除外したい場合に便利です。アプリごとのリストを変更した後は、対象アプリを完全に終了して再起動してください。既存の接続が新しい通信経路へすぐに移行するとは限りません。

DNS設定も初回接続の結果に影響します。mihomoのコアでは、ドメイン処理に fake-ipredir-host の拡張モードを使うことがあります。設定でDNSサーバー、フォールバックルール、ドメインポリシーが定義されている場合は、複数の場所でむやみに上書きしないでください。Androidの「プライベートDNS」は暗号化DNSを使用するため、ネットワークや設定の組み合わせによっては、クライアントによるDNS制御と挙動が異なることがあります。ドメインでは開けないのにIPアドレスではアクセスできる場合は、すぐにクライアントを再インストールするのではなく、比較のため一時的にプライベートDNSを自動へ戻してみてください。

mode: rule
dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 1.1.1.1
    - 8.8.8.8

上記の断片は、よくあるフィールドの関係を説明するためのものです。実際のサブスクリプションには、すでに完全なDNS設定が含まれている場合があります。変更前に元の設定を保存し、リモートサブスクリプションの再更新でローカルの変更が上書きされる可能性にも注意してください。Androidクライアント画面のVPNスイッチは、通常システムの仮想インターフェースを作成するためのものであり、設定ファイル内のすべての tun フィールドと単純に同一視すべきではありません。

バックグラウンド動作、バッテリー最適化の除外、通知権限

Androidは、バッテリー残量、利用頻度、メーカー独自の方針に基づいてバックグラウンドプロセスを制限します。Clashの動作中は通常フォアグラウンドサービスが起動しますが、長時間の画面ロック、低バッテリーモード、メモリ不足の際には制限を受けることがあります。画面点灯中は正常なのに、数分ロックするとリクエストがタイムアウトする、クライアントを開き直すと接続が復旧する、最近のタスクをシステムが削除するとVPNアイコンも消える、といった症状が典型です。

バッテリー使用量を「制限なし」に設定する

システムの「設定 → アプリ → Clashクライアント → バッテリー」のような画面を開き、バックグラウンドでのバッテリー使用を「制限なし」「バックグラウンドアクティビティを許可」またはメーカー端末に相当する項目へ変更します。Androidのバージョンによって名称は異なり、「アプリのバッテリー使用量」「バッテリーの最適化」「特別なアプリアクセス」などに入口が置かれている端末もあります。設定後は画面をロックしてしばらく待ってからテストし、数分間の前面利用だけで判断しないでください。

いわゆるバッテリー最適化の除外とは、システムによるアプリの待機中の制限を緩和することです。無効なノードを修復したり、ノードの帯域幅を向上させたりするものではありません。前面利用中から接続できない場合は、まず設定、ノード、DNSを確認してください。前面では正常でバックグラウンドだけ失敗する場合に、バッテリー設定を重点的に見直します。

自動起動とバックグラウンド動作を許可する

一部の端末には「自動起動」「関連起動」「バックグラウンドでのポップアップ表示」「バックグラウンド動作」といったスイッチがあります。起動後にプロキシを復旧したい場合は、クライアントの自動起動を許可します。手動で使うときだけプロキシを有効にする場合は、すべての起動権限を有効にする必要はありません。クライアント側も起動時の復旧またはVPN常時接続に対応している必要があり、自動起動だけを許可してもサービスの確立が保証されるわけではありません。

端末によっては、最近のタスクを消去すると同時にバックグラウンドサービスも終了します。端末に最近のタスクをロックする機能がある場合は、クライアントをタスク一覧に残せます。ただし、タスクのロックはメーカー独自の補助策にすぎず、VpnServiceの許可、フォアグラウンドサービス通知、バッテリー最適化の設定に代わるものではありません。

通知とフォアグラウンドサービスの状態を確認する

Android 13以降では、通知権限が個別に確認されます。クライアントの常駐通知には、サービス状態、通信量、停止操作への入口などが表示されます。通知権限を拒否すると、フォアグラウンドサービスの表示方法が変わる可能性があり、サービスが動作中か判断しにくくなります。アプリの通知設定で実行状態に関するカテゴリを許可し、頻繁に音が鳴る高い通知レベルには設定しないことをおすすめします。

システムのデータセーバーも確認してください。「データセーバー」を有効にしている場合は、クライアントがバックグラウンドでモバイルデータを使用できるよう許可します。許可しないと、Wi-Fiからモバイルネットワークへ切り替えた際、フォアグラウンドサービスが動作していても新しいプロキシ接続を確立できないことがあります。デュアルSIM端末では、現在のデータ用SIMが通信可能か確認し、SIMを切り替えた後はデフォルトネットワークが安定するまで待ってからClashの再接続を確認してください。

VPNを常時接続と「VPN未接続時の通信をブロック」

AndroidのシステムVPN設定には通常、「VPNを常時接続」が用意されています。Clashクライアントを選択すると、システムはそのVpnServiceを有効な状態に保ち、端末の起動後に復旧を試みます。日常のすべての通信を継続的にルールシステムへ通したいユーザーに適していますが、起動時にクライアント、設定、ノードを正常に読み込めることが前提です。

「VPN未接続時の通信をブロック」は、より厳格なシステム設定です。有効にすると、VpnServiceが確立されていない間は端末の通信が遮断される可能性があります。クライアントのクラッシュ、設定の読み込み失敗、サブスクリプションのルールセット未ダウンロード、端末の起動直後などに、一時的にインターネットへ接続できなくなることがあります。有効にする前に、システムのVPN画面からこの設定を無効にする方法を確認し、Wi-Fi、モバイルデータ、画面ロックからの復旧でクライアントが安定動作することを検証してください。

厳格な通信ブロックモードは、アプリごとの除外、LANアクセス、端末の検出を必要とするアプリにも影響することがあります。プリンター、キャスト機器、ルーターの管理画面など、ローカルネットワークに依存する用途では、設定でLANアクセスが許可されていることを確認し、対象通信が DIRECT に一致しているか確認してください。ルールで直接接続を選んでいても、通信はいったんVpnServiceに入り、コアがローカルルートに従って送信する場合があります。そのため、誤ったルート、DNS、厳格な制限が結果に影響することがあります。

Androidのテザリング通信は、端末上でVpnServiceを起動しただけで同じようにClashへ流れるとは限りません。テザリング転送に対応するかどうかは、クライアントの実装、システムバージョン、端末の権限によって異なります。端末自身でアクセスできることだけを根拠に、接続先の端末もプロキシを利用しているとは判断できません。共有が必要な場合は、クライアントに専用のテザリング、LAN待受、転送設定があるか確認し、ローカルポートの公開範囲にも注意してください。

ネットワーク切り替え後に切断された場合の復旧手順

自宅のWi-Fiからモバイルデータへ切り替える場合、ログインが必要な公共Wi-Fiに接続する場合、圏外から復帰する場合などは、Androidのデフォルトネットワークが変わります。既存のTCPまたはUDP接続は通常そのまま利用できず、Clashは新しいネットワーク上でノードへの接続を再確立する必要があります。短時間の中断は正常です。しばらく待っても復旧しない場合は、外側から内側へ順に確認してください。

  1. まず基本ネットワークを確認する:一時的にClashを停止し、現在のWi-Fiまたはモバイルデータ自体でインターネットへ接続できるか確認します。公共Wi-Fiでは、先に認証ページへログインしてください。
  2. VpnServiceを再起動する:クライアントの動作スイッチをオフにし、VPNアイコンが消えるまで待ってから再度オンにします。短時間に連続してタップすると状態が同期しないことがあります。
  3. ノードを変更する:既知の利用可能な別のノードを選び、もう一度テストします。特定のノードに到達できないからといって、Androidのバックグラウンド設定が無効とは限りません。
  4. サブスクリプションを更新する:サブスクリプションの期限が切れていないことを確認し、更新中にネットワーク、証明書、設定解析のエラーが出ていないか確認します。
  5. システム時刻を確認する:日付、時刻、タイムゾーンが自動設定になっていない、または誤っていると、TLS接続に失敗することがあります。ログにはハンドシェイクや証明書時刻の異常として現れることがあります。
  6. DNSを比較する:ドメインだけが失敗する場合は、プライベートDNS、設定内DNS、現在のネットワークによるDNS改変を確認します。IPアドレスとドメインの両方が失敗する場合は、ノードとルーティングを引き続き確認してください。
  7. 他のVPNを確認する:VpnServiceを同時に使用するファイアウォール、フィルター、企業VPNを停止してから、Clashにもう一度許可を与えます。

ログは障害の層を切り分けるための主な手がかりです。接続タイムアウトが繰り返される場合は、ノードのアドレス、ポート、現在のネットワークからの到達性、ファイアウォールを確認します。ドメイン解決に失敗する場合は、DNSとネットワーク認証を確認します。設定解析エラーの場合は、サブスクリプションとYAMLの内容に戻って確認します。サービスが突然消え、ログに新しいネットワークエラーがない場合は、バックグラウンドプロセスが制限またはシステムによって終了された可能性が高いです。

症状 優先して確認する項目 推奨する対処
画面ロック後にVPNアイコンが消える バッテリー最適化、バックグラウンド動作、フォアグラウンドサービス 「制限なし」に設定し、実行通知を表示する
モバイルデータへの切り替え後もタイムアウトが続く バックグラウンドデータ、ノードの到達性、古い接続 サービスを再起動し、別のノードでテストする
ドメインだけ開けない 設定内DNS、プライベートDNS、公共ネットワークの認証 プライベートDNSを自動に戻して比較し、名前解決ログを確認する
起動直後に別のサービスへ置き換わる 他のVPN、フィルター、仕事用プロファイル VpnServiceを1つだけ残し、Clashにもう一度許可を与える
端末の再起動後に自動接続しない VPN常時接続、自動起動、クライアントの復旧設定 項目を1つずつ有効にし、再起動で検証する

安定動作のための日常チェックリスト

長期利用では、アプリデータを頻繁に消去したり、何度も再インストールしたりする必要はありません。データを消去すると、付与済みの権限状態、取り込んだ設定、ローカルの選択内容が削除され、問題の切り分け手順が増えてしまいます。システム更新、クライアント更新、サブスクリプション更新の後に項目を順番に確認できる、簡単なチェックリストを用意しておく方が適切です。

Clash Androidの安定性は、3つの条件に左右されます。土台は利用可能なネットワークとノード、中間は正しいClashまたはmihomoの設定、上層はAndroidによるVpnServiceとバックグラウンドプロセスの管理です。この順番で切り分ければ、バッテリー制限をサブスクリプションの障害と誤認したり、ノードが無効なのにシステム権限を何度も変更したりするのを避けられます。一度、順序に沿った設定と待機テストを行えば、その後のメンテナンスでは通常、サブスクリプションの更新、プロキシグループの選択、システム更新による権限変更だけを確認すれば済みます。

Clashをダウンロード