Clash Android使い方ガイド:VpnServiceと省電力の対象外設定
Androidのシステムプロキシ依存、VpnService権限、省電力制限、バックグラウンド維持設定を解説し、接続が突然切れる問題を防ぎます。
AndroidスマートフォンでClashクライアントを使っていると、接続に失敗したり、しばらくすると自動停止したりする原因は、サブスクリプションだけとは限りません。Androidのネットワーク権限モデル、VpnServiceの許可、バッテリー最適化、メーカー独自のバックグラウンド管理、そしてクライアントの動作モードが、プロキシを継続利用できるかどうかに影響します。クライアントをインストールしたら、まずプロキシモードとシステム権限を確認し、その後で省電力設定を見直しましょう。接続先を何度も変更するより、効率よく原因を切り分けられます。
この記事では、Clash Meta(mihomo)カーネルに対応したAndroidクライアントを前提に、システムプロキシ、VpnService、TUNモードの関係と、初回の権限許可からバックグラウンド維持までの確認手順を解説します。スマートフォンのメーカーによってメニュー名は多少異なりますが、確認すべきポイントは共通しています。クライアントにVPN権限があるか、バックグラウンド動作が許可されているか、対象アプリの通信がプロキシを通っているか、そして設定内のDNSとルールが正常に名前解決できているかを確認してください。
1. Androidでプロキシ接続に必要なもの
Androidアプリは通常、Clashのローカルポートを直接読み取りません。Clashクライアントが端末上でプロキシカーネルを起動し、システムプロキシ設定またはAndroidのVpnServiceを通じてアプリの通信を処理します。両者は通信をカバーする範囲が異なるため、「スイッチをオンにすれば同じ」と単純には考えられません。どちらを選ぶかは、クライアントの実装、アプリがシステムプロキシに従うか、HTTPプロキシに対応していないアプリも処理したいかによって決まります。
システムプロキシとVpnServiceの違い
システムプロキシは通常、アプリにHTTPまたはSOCKSプロキシのアドレスを提供します。Androidのシステムプロキシ設定に対応するブラウザー、一部のネットワークツールやアプリは、リクエストをClashのローカル待受ポートへ送り、ルールグループによって直接接続、プロキシ、拒否が決まります。システムプロキシは比較的軽量で、すべてのアプリのネットワークインターフェースを引き受けるわけではありません。一方で、システムプロキシを無視したり、特定のリクエストだけ独自のネットワークスタックを使ったりするアプリもあります。
VpnServiceはAndroidが提供する仮想ネットワークインターフェースサービスです。クライアントが許可を得ると、端末内にローカルVPNインターフェースを作成し、そこを通過する通信を読み取ってmihomoカーネルに渡せます。ここでいうVPNはAndroidのローカル通信を取り込む仕組みであり、クライアントが遠隔VPNサーバーを自動的に持つという意味ではありません。実際の出口は、設定内のプロキシノード、ポリシーグループ、ルールによって決まります。初回起動時にはVPN接続の許可画面が表示されるため、ユーザーが明示的に許可しなければトンネルは確立できません。
システムプロキシに従わないアプリがある場合や、より多くのTCP・UDP通信をルール処理に通したい場合は、通常VpnServiceが適しています。ただし、ステータスバーにVPN状態が表示され、この権限は他のVPNアプリと競合することがあります。同時にシステムVPNインターフェースを使用できるアプリは1つだけです。他のVPN、一部のファイアウォール、ネットワーク高速化ツールを有効にすると、Clashが起動できなかったり、実行中の接続がシステムによって切り替えられたりします。
Clash Metaとローカルネットワーク経路
Clash Meta(mihomo)はYAML設定の読み込み、プロキシ接続の確立、ルール照合を担当し、DNS、HTTP、SOCKS、透過プロキシなどの機能を提供します。Androidクライアントはカーネルをアプリに組み込み、システム権限を申請し、グラフィカルな画面を提供します。「クライアントは開いているのに特定のアプリへアクセスできない」場合は、この2層を分けて確認してください。前者ではカーネル、設定、ノード状態を、後者ではVpnService、バックグラウンド動作、アプリ通信の除外設定を確認します。
システムプロキシだけを使う場合、一般的なローカル待受アドレスは 127.0.0.1 とHTTPまたはSOCKSポートの組み合わせです。TUNを有効にすると、アプリの通信はいったん仮想ネットワークインターフェースに入り、カーネルがルーティングとルールに基づいて処理します。遠隔サブスクリプションのアドレス、ノードサーバーのアドレス、ローカル待受ポートを混同しないでください。サブスクリプションは設定やノード情報を提供するもので、ローカルポートは端末上のアプリからアクセスするためのものです。両者の用途は異なります。
2. 初回インストールとVpnService許可の手順
インストール後は、問題の原因を判断しやすくするため、決められた順番で操作することをおすすめします。まず設定を準備してから接続を開始し、最初に単一ノードの利用可否を確認してからルールとアプリをテストします。サブスクリプションを取り込んだ直後に高度なパラメータを大量に変更せず、切り戻せる基本設定を1つ残しておくと、DNS、ルーティング、ルールグループに起因する問題を特定しやすくなります。
- クライアントの入手元とカーネル対応を確認します。クライアントの概要ページまたはカーネル情報ページを開き、現在のバージョンがmihomoまたは対応するClash Meta機能をサポートしていることと、必要なAndroidバージョンを確認します。TUN、スクリプト、DNS機能はクライアントによって異なります。
- サブスクリプションを取り込み、1回更新します。サブスクリプションのアドレスにアクセスできることを確認し、更新後にプロキシノード一覧とポリシーグループを確認します。更新に失敗した場合は、まずネットワーク、システム時刻、サブスクリプションアドレスが完全かを確認してください。更新失敗をVpnServiceの障害と決めつけないようにしましょう。
- 使用するプロキシモードを明確に選びます。初回テストではルールモードを使い、プロキシ用ポリシーグループのノードを手動で選ぶとよいでしょう。グローバルモードは基本的な接続性の確認に向いていますが、長期利用ではルールによる振り分けをおすすめします。ダイレクトモードでは、ほとんどのリクエストにプロキシノードは使われません。
- システムVPNの許可を開始します。クライアントの接続スイッチをタップすると、AndroidにVPN接続リクエストが表示されます。アプリ名を確認して「許可」を選択してください。すでにVPNがあるという通知が出た場合は、他のVPN、通信ファイアウォール、同種のネットワークツールを切断してから、もう一度許可を求めます。
- ローカルの動作状態を確認します。クライアントに「実行中」と表示されているか、VPNアイコンが表示されているか、カーネルログが継続して出力されているかを確認します。その後、直接接続されるはずのサイトと、プロキシ経由になるはずのサイトをそれぞれテストしてください。1つの対象だけで設定全体を判断しないことが大切です。
AndroidのVPN許可はシステムレベルの操作であり、クライアントが確認手順を回避することはできません。システムによっては初回許可後に「常に許可」に相当する選択肢が表示されますが、再起動、ユーザー切り替え、セキュリティポリシーの変更後に再確認を求められる場合もあります。許可画面が表示されないときは、いったんクライアントを停止し、他のVPNを切断してから、システム設定のVPNページで古い接続記録を削除するか、対象アプリを選び直してください。
TUNモードを有効にするタイミング
TUNモードは仮想ネットワークインターフェースで通信を受け取るため、システムプロキシに従わないアプリを処理したい場合や、TCP・UDPリクエストをmihomoのルール処理へ統一して通したい場合に適しています。ノード速度を上げるスイッチではなく、無効なサブスクリプション、誤ったDNS、利用できないノードを自動修復する機能でもありません。TUNを有効にすると、システムルーティング、DNSリダイレクト、アプリの除外リストがより重要になります。設定を誤ると、すべてのアプリがネットワークに接続できなくなることがあります。
まずシステムプロキシまたはクライアントの標準モードで基本接続を確認してから、TUNを有効にすることをおすすめします。有効化する前に、DNS、モード、ノード選択を記録してください。有効化後は1つの設定だけを変更して再テストします。TUN有効化後に通信できなくなった場合は、サブスクリプションをすぐ削除するのではなく、TUN権限、自動ルーティング、DNSモード、IPv6処理、他のVPNとの競合を優先して確認します。
3. 省電力制限がバックグラウンド切断を招く仕組み
Androidは、アプリの使用頻度、画面の状態、充電状況、メーカー独自のポリシーに応じてバックグラウンドプロセスを制限します。Clashクライアントがバックグラウンドで動作するには、カーネルプロセス、VPNサービス、ノード接続、DNSリクエストを維持する必要があります。システムがサービスを一時停止したりプロセスを回収したりすると、ステータスバーのVPNアイコンが消える、アプリに戻る前に停止している、画面ロック後にアクセスできない、接続中と表示されているのに実際のリクエストがタイムアウトするといった症状が現れます。
「省電力の対象外設定」という名称は、すべての端末で統一されているわけではありません。代表的な入口には、「バッテリー」「アプリのバッテリー使用量」「バックグラウンドアクティビティ」「自動起動管理」「バッテリー最適化」「バックグラウンドポップアップ」「画面ロック時のアプリ終了」などがあります。対象にするのはブラウザーやプロキシ先のアプリではなく、クライアント本体です。クライアントを「制限なし」または「バックグラウンドアクティビティを許可」にすると、VpnServiceの一時停止やカーネルプロセス回収の可能性を下げられます。
一般的な設定手順
- システム設定を開き、アプリ一覧から使用中のClash Androidクライアントを探します。
- バッテリーまたは電池使用量の管理画面で、バックグラウンド使用を「制限なし」「無制限」など同等の項目に変更します。
- モバイルネットワークとWLANのページで、バックグラウンドデータを許可します。データセーバーの例外設定がある場合は、クライアントも許可リストに追加します。
- 自動起動管理がある場合は、クライアントの起動時起動またはバックグラウンドサービスの起動を許可します。端末起動時に自動接続する必要がある場合だけ有効にし、バックグラウンドアプリを増やしすぎないようにしてください。
- 最近使ったアプリの画面でクライアントをロックします。メーカーによっては「すべて閉じる」を実行すると、バッテリー設定を緩和していてもロックされていないバックグラウンドアプリを終了します。
- 画面をロックして5〜10分後にもう一度テストします。アプリを前面に表示した状態だけで確認すると、バックグラウンド制限の影響を判断できません。
メーカーによっては、同じ制限が複数のページに分散しています。たとえばバッテリーページではバックグラウンド動作が許可されていても、「スリープ時の待機最適化」によって夜間にネットワークが凍結されることがあります。また、クライアント自体に制限がなくても、システムのバックグラウンドポップアップ権限が無効なため、接続状態を再表示できない場合があります。設定後はクライアントを一度再起動し、実際の動作を確認してください。画面ロック、アプリ切り替え、モバイルネットワークへの切り替え時だけ問題が起きるなら、省電力やネットワーク切り替えポリシーとの関連性が高いと考えられます。
省電力の対象外設定によるトレードオフ
バックグラウンド動作を許可すると、クライアントのプロセスとネットワーク接続を維持しやすくなりますが、待機中の消費電力が増えることもあります。長期利用では、まず「制限なし」にして安定性を確認し、原因が分かったら制限を1つずつ戻すとよいでしょう。自宅で主に使い、画面ロック中にプロキシが不要なら、クライアント内の自動起動を無効にできます。即時通信、同期、リモートアクセスが必要なら、VPNサービスのバックグラウンド動作権限を維持してください。
4. サブスクリプション・ルール・DNSをまとめて確認する
権限とバックグラウンド設定が正常でも、「一部のアプリは使えるのに、別のアプリは使えない」ことがあります。この場合は設定レイヤーに戻って確認します。サブスクリプションの更新は設定内容をクライアントへダウンロードするだけで、すべてのノード、ポリシーグループ、ルールが現在のネットワークに適しているとは限りません。まずサブスクリプションの更新日時を確認し、現在のモード、ポリシーグループの選択、ルールの適用結果を確認してください。
症状から問題の範囲を切り分ける
- すべてのアプリにアクセスできない:VPNが実際に接続されているか、現在のノードが利用可能か、TUNにシステム許可があるか、他のVPNが存在しないか、デフォルトのポリシーグループが有効なノードを選択しているかを確認します。
- ブラウザーは使えるが、特定のアプリだけ使えない:そのアプリがクライアントの除外対象になっていないか、独自DNS、QUIC、特殊なネットワークインターフェースを使用していないかを確認します。TUNモードで通信の取り込み範囲を広げられますが、クライアントのアプリバイパス設定には従う必要があります。
- ドメインを開けず、直接IPなら時々使える:DNSモード、上流DNSへの到達性、Fake-IP設定、DNSリクエストに対するルール処理を重点的に確認します。プロキシノードを変更するだけでは解決しないことがあります。
- 画面ロック後に切断され、前面に戻すと復旧する:まずバッテリー最適化、自動起動、バックグラウンドデータ、最近使ったアプリのロックを見直してください。先にルールを変更する必要はありません。
- 特定の地域やサービスだけ異常がある:ルールに適用されたポリシーとノードの出口地域を確認します。ポリシーグループがダイレクトを選んでいるか、ルールが対象ドメインを適さないポリシーへ送っている可能性があります。
ルールモードでは、上から順にルールを照合し、最初に一致したルールを対応するポリシーへ渡します。末尾のMATCHは通常、最終的なフォールバック処理を担います。異なる配布元のサブスクリプションを取り込むと、ルールセット名、ポリシーグループ名、DNSの動作が変わる場合があります。ルールやポリシーグループを変更したら、必ず保存して設定を再読み込みし、リクエストを再実行してください。クライアントの接続ログでドメイン、適用ルール、最終ポリシーを確認すると、ブラウザーのエラーページだけを見るより実際の通信経路を把握しやすくなります。
Fake-IPとAndroidアプリの互換性
Fake-IPモードではドメインに仮想アドレスを割り当て、後続の接続でマッピングをもとにドメインを復元してからルール処理へ渡します。一部のDNS名前解決の待ち時間を短縮できますが、すべてのアプリに適しているわけではありません。LAN内検出、銀行系アプリ、ゲーム、実際のローカルネットワークアドレスを必要とするプログラムでは問題が起きることがあります。特定の種類のアプリだけに異常がある場合は、関連ドメインをFake-IPの除外設定に追加するか、クライアントが提供する互換モードを試してください。具体的な項目は、使用中のカーネルがサポートする設定仕様に従います。
DNS設定は、TUNとルール設計に合わせる必要があります。TUNを有効にした状態でDNSリクエストがカーネルを迂回すると、ルール判定と実際の名前解決先が一致しないことがあります。また、上流DNSに現在のネットワークから到達できなければ、すべてのドメインがタイムアウトすることもあります。切り分けでは、いったんクライアント推奨の基本DNS設定を使い、接続を確認してからカスタム上流DNSに戻してください。変更は毎回1項目だけにし、変更前後の結果を記録します。
5. 接続が切れたときの標準トラブルシューティング
トラブルシューティングは、「システム層、クライアント層、設定層、対象アプリ層」の4段階に分けることをおすすめします。こうすることで、バックグラウンドによる終了、ノード障害、ルール設定ミスを混同せずに済みます。以下の手順は、画面ロック後の切断、Wi-Fiとモバイルネットワークの切り替え後に使えない、AndroidではVPN接続中と表示されるのにアプリが通信できない、といった場合に適しています。
- システム層を確認します。ステータスバーのVPNアイコンを確認し、システムのVPNページで対象アプリが接続中のままか確認します。他のVPN、プロキシ、プライベートDNS、通信ファイアウォールが有効になっていないかも確認してください。
- クライアント層を確認します。クライアントを開き、動作状態、カーネルログ、アクティブな接続を確認します。プロセスが停止している場合は再起動し、バッテリー制限を確認してください。プロセスが動作しているなら、次に設定を確認します。
- 設定層を確認します。サブスクリプションの有効期限、ノードの利用可否、ポリシーグループが利用可能なノードを指しているか、現在のモードがルールまたはグローバルになっているかを確認し、対象リクエストに適用されたルールも確認します。
- DNSとルーティングを確認します。TUNモードでは自動ルーティングとDNS設定を確認し、システムプロキシモードでは対象アプリがシステムプロキシに従うか確認します。必要に応じてIPv6またはFake-IP関連の項目を一時的に無効にして比較テストを行います。
- 対象アプリを確認します。対象アプリのネットワーク状態をリセットして再試行し、独自プロキシ、証明書検証、地域制限、ログインセッションの問題がないか確認します。1つのアプリだけが失敗している場合、Clash全体の障害と即断しないでください。
クライアントを再起動するとすぐ復旧するものの、再び画面をロックすると切断される場合は、バックグラウンド設定を重点的に確認します。Wi-Fiを変更した後に使えなくなった場合は、ネットワーク切り替え時にVPNが再確立されたか、新しいネットワークがサブスクリプションやノードのポートを遮断していないかを確認します。VPNアイコンが表示され続けているのにすべてのドメインを解決できない場合はDNSを、ドメインは解決できるのに接続がタイムアウトする場合はノード、ルールポリシー、通信プロトコルを重点的に確認します。症状から層を特定すれば、目的なくサブスクリプションを何度も取り込む必要がなくなります。
確認する順番:
1. VPNの許可と他のVPNとの競合
2. クライアントのバックグラウンド動作とバッテリー最適化
3. カーネルの状態、サブスクリプションの更新日時、ノードの利用可否
4. モード、ポリシーグループ、ルールの適用、DNS
5. 対象アプリ独自のネットワーク動作
6. 長期利用に適したAndroid設定の習慣
長期運用では、動作する基本設定を1つ残し、変更前に現在の設定をエクスポートまたはコピーしておくことをおすすめします。サブスクリプション更新、カーネル更新、システムアップデート、メーカーのセキュリティポリシー変更によって、ネットワークの挙動が変わることがあります。更新後は、普段使うブラウザー、メッセージアプリ、ログインが必要なアプリを先にテストし、その後TUN、Fake-IP、IPv6、カスタムルールなどの高度な機能を段階的に有効にしてください。
ノードを選ぶときは、遅延が安定し、連続テストに成功するノードを選んでから実際のアクセスを確認します。遅延テストで分かるのはテスト対象とノード間の一部の経路だけで、すべてのサービスが使えることを証明するものではありません。サブスクリプション更新後に利用できない、または適さないノードが自動選択されないよう、ポリシーグループには明確なデフォルトノードを1つ設定しておくとよいでしょう。ルールによる振り分けもできるだけ読みやすく保ち、異常時にドメインに対応するポリシーをすぐ見つけられるようにします。
Androidをアップデートした後は、4つの設定を再確認してください。VPNの許可が有効か、クライアントにバックグラウンドアクティビティが許可されているか、バッテリー最適化が再び有効になっていないか、最近使ったアプリでクライアントがロックされたままかを確認します。仕事用プロファイル、アプリの複製、マルチユーザー機能を使っている場合は、実際にクライアントを動かすユーザー領域に独立したVPN権限があることも確認してください。システムによっては仕事用と個人用でネットワークサービスを別々に管理するため、片方だけを確認しても不十分です。
設定後は、完全な動作確認を1回行います。クライアントを前面で起動してVPNアイコンが表示されることを確認し、ルールモードで直接接続先とプロキシ接続先をテストします。画面をロックして数分待ってから再テストし、Wi-Fiとモバイルネットワークを1回切り替え、最後にログへ接続エラーが継続して出ていないか確認してください。この手順で、AndroidでClashを使う際によくある権限、バックグラウンド、設定の問題を確認でき、システム制限とノード自体の障害も切り分けられます。