Android版Clashの使い方|VpnServiceの許可とバッテリー最適化の除外設定
Android版ClashのVPN接続に必要なVpnServiceの許可手順と、画面ロック後に切断される場合の対処法を解説。主要メーカー別にバッテリー最適化の解除やバックグラウンド設定を紹介します。
VpnService:Androidの通信経路であり、リモートノードではない
VpnServiceは、Androidが提供するVPNサービス用のインターフェースです。Android版Clashクライアントは通常、これを使ってローカルの仮想ネットワークインターフェースを作成し、対象となるパケットをプロキシコアに渡します。その後、ルールに従って直接接続、プロキシ接続、または拒否を行います。サブスクリプションサービスそのものではなく、通信が必ずリモートVPNサーバーを経由するという意味でもありません。
そのため、ステータスバーにVPNアイコンが表示されても、システムにVPN接続があることを示すだけです。サブスクリプションの有効性やノードへの到達性、すべてのアプリがプロキシを経由していることまでは確認できません。逆に、ポリシーがDIRECTでも、ローカルの通信経路が稼働しているためVPNアイコンが表示され続けることがあります。
- システムの許可:VpnServiceを使ってローカルVPNを確立することをクライアントに許可します。
- 設定とコア:ノード、プロキシグループ、DNS、ルールを読み込みます。クライアントによって、採用しているClashまたはmihomoコアの世代は異なります。
- バックグラウンド実行:サービスとコアのプロセスを維持し、画面ロック後にシステムから制限されないようにします。
この3つは分けて確認しましょう。サブスクリプションを何度インポートしても、バッテリー管理によって終了したバックグラウンドサービスは復旧しません。VPN接続を何度許可しても、期限切れのノード認証情報は直りません。
初回起動時:VPNの許可と通知の状態を確認
利用可能な設定から接続を始める
- 現在のAndroidバージョンとプロセッサーアーキテクチャに対応したクライアントをインストールし、設定画面から自分のサブスクリプションまたはYAMLファイルをインポートします。
- 設定を選択し、正常に読み込まれたことを確認します。まずはサービス提供元のDNSやルール設定を維持し、複数の項目を同時に変更しないでください。
- クライアントの起動または接続ボタンをタップします。「接続リクエスト」などの確認画面が表示されたら、要求元のアプリ名を確認してから許可します。
- システムの「設定」→「ネットワークとインターネット」→「VPN」を開き、接続先が対象のクライアントであることを確認します。メーカーによっては「接続と共有」や「その他の接続」にあります。
- クライアントの接続ログを開いた状態でHTTPSページにアクセスし、新しい接続と適用されたルールを確認します。
VPNの許可はカメラやストレージなどの一般的な権限とは異なり、通常は「アプリの権限」の一覧には表示されません。拒否した場合はクライアントに戻り、もう一度接続を開始してください。確認ボタンをタップできない場合は、フローティングウィンドウ、画面フィルター、システム画面に重なっているアプリを終了してから再試行します。自動タップツールで確認を回避しないでください。
通知の許可とVPNの許可は別々に設定する
Android 8.0以降ではバックグラウンド実行が制限されるため、前景サービスが継続的なネットワーク処理に重要な役割を果たします。Android 13以降では通知の実行時許可も追加されました。通知を拒否してもVPNの許可が取り消されるわけではなく、前景サービスが必ず起動できなくなるわけでもありませんが、通常の通知欄で状態を確認しにくくなります。
クライアントから通知の許可を求められたら、許可することをおすすめします。また、接続状態の通知カテゴリが無効になっていないか確認してください。通知はサービスが動作し続けているかを確認する手掛かりですが、通知が消えただけでVPN切断と判断しないでください。システムのVPN画面とクライアントの接続状態も確認しましょう。
バッテリー最適化の除外:電池設定、自動起動、タスク固定はそれぞれ別の対策
「最適化の対象外にする」は、Androidで統一された名称の単一設定ではありません。システムのバッテリー最適化、メーカー独自のバックグラウンド管理、自動起動の制御、最近のアプリ画面での固定が、それぞれサービスの動作に影響することがあります。何を変更したか項目ごとに記録し、すべての権限を有効にしてどれが効いたのか分からなくならないようにしましょう。
| 設定項目 | 主な効果 | 保証されないこと |
|---|---|---|
| バッテリー使用量を「制限なし」に設定 | バックグラウンド動作へのシステム制限を緩和 | サービスが終了しないことは保証されない |
| バックグラウンドでの動作を許可 | メーカー独自のバックグラウンド制限を緩和 | ネットワークやノードの障害は解決しない |
| 自動起動を許可 | 条件を満たしたときにアプリのコンポーネントを起動・再開 | クライアントの起動時接続が有効になるわけではない |
| 最近のアプリ画面で固定 | 一括削除時に誤ってアプリを終了する可能性を下げる | 強制停止やシステムによる終了は防げない |
| データ通信の無制限利用を許可 | データセーバーによるバックグラウンド通信の制限を緩和 | バッテリー制限を回避できるわけではない |
まず「設定」→「アプリ」→対象クライアント→「バッテリー」または「アプリのバッテリー使用量」を開き、「制限なし」を選ぶか、バックグラウンドでの使用を許可します。古いAndroidでは「特別なアプリアクセス」→「バッテリーの最適化」を開き、すべてのアプリに切り替えてクライアントを選び、「最適化しない」に設定します。
この設定でバッテリー消費がなくなるわけではありません。常時接続、頻繁な速度測定、短いヘルスチェック間隔、多数のアクティブな接続は、いずれも電池を消耗する原因になります。最適化の除外はバックグラウンド制限への対処です。ついでにすべてのプロキシグループのチェック間隔を数秒に変更するのは避けましょう。
メーカー別の設定場所:まずアプリ情報を開き、バックグラウンド設定を確認
以下はよくある設定場所の例です。すべてのシステムバージョンで名称が完全に一致するとは限りません。OSの更新、地域別ファームウェア、機種によってメニュー名は変わります。見つからない場合は、クライアントのアイコンを長押しして「アプリ情報」を開くか、システム設定で「バッテリーの最適化」「自動起動」「バックグラウンドでの動作」を検索してください。
Pixelおよび標準Androidに近いシステム
- 「設定」→「アプリ」→「すべてのアプリを表示」→対象クライアント→「アプリのバッテリー使用量」を開きます。
- 「バックグラウンドでの使用を許可」や最適化レベルが表示される場合は、バックグラウンド実行を許可し、関連項目を「制限なし」に設定します。
- データセーバーを有効にしている場合は、アプリの「モバイルデータとWi-Fi」などを開き、バックグラウンドデータと無制限のデータ使用を確認します。
Xiaomi、Redmi、HyperOS/MIUI
- アプリ情報で「バッテリーセーバー」を探します。選択肢には「制限なし」が用意されていることがよくあります。
- 「設定」→「アプリ設定」→「権限管理」付近で「自動起動管理」または「バックグラウンド自動起動」を探し、対象クライアントを許可します。
- 最近のアプリ画面で固定できる場合は、アプリカードを長押しするか、カードのメニューからロックします。操作方法はホーム画面のバージョンによって異なります。
最近のアプリ画面のロックアイコンは、一部のアプリ終了操作にしか影響しません。画面ロック後も切断される場合は、ロックを繰り返すのではなく、バッテリー設定を確認してください。
Huawei、Honor:アプリの起動管理
該当する設定がある場合は、「設定」→「アプリとサービス」→「アプリの起動管理」を開き、クライアントを探します。「自動管理」をオフにし、必要に応じて自動起動、他のアプリからの起動、バックグラウンドでの動作を許可します。Honor端末では「アプリ」内に設定がある場合もあります。Androidアプリのインストールに対応していない端末では、この記事のAPKおよびVpnServiceの手順は適用できません。
OPPO、OnePlus、realme:バックグラウンド動作と自動起動
アプリ情報から「電力使用量」または「バッテリー使用量」を開き、「バックグラウンドでの動作を許可」と「自動起動を許可」を確認します。最近のアプリ画面に「ロック」機能がある場合は、併せて確認してください。ColorOS、OxygenOS、realme UIではメニューが異なるため、端末に表示される項目に従ってください。
vivo、iQOO、Samsung
- vivo、iQOO:「設定」→「バッテリー」で「バックグラウンド消費電力管理」を探し、クライアントをバックグラウンドでの電力消費を許可するモードに設定します。システムのアプリ管理やiマネージャーにある自動起動の許可も確認してください。
- Samsung:「設定」→「アプリ」→対象クライアント→「バッテリー」で「制限なし」を選びます。次に「バッテリー」→「バックグラウンドでの使用制限」を開き、「スリープ中のアプリ」と「ディープスリープ中のアプリ」にクライアントが含まれていないか確認します。設定があれば「スリープ状態にしないアプリ」に追加してください。
画面ロック後に切断される場合:決まった手順でサービス停止とネットワーク障害を切り分ける
「画面が点灯していれば使えるが、ロックすると使えない」という現象だけでは、バッテリー設定が原因とは限りません。Wi-Fiの切断、モバイルネットワークへの切り替え、ノードのタイムアウト、DNS障害がバックグラウンドで表面化することもあります。以下の手順で再現を確認してください。所要時間は切り分けの目安であり、性能測定の結果ではありません。
- 基準状態を記録:同じWi-Fiを使い、クライアントのバージョン、OSのバージョン、現在のポリシー、起動時刻、テスト用URLを記録します。まず画面表示中にアクセスできることを確認します。
- 短時間の画面ロック:5分間ロックしてから解除し、システムのVPN接続が継続しているか、クライアントの再起動が必要かを確認します。
- 長時間の確認:同じ条件で再度30分間ロックし、状態を確認します。短時間のテストに成功しても、深いスリープ状態まで問題がないとは限りません。
- ネットワーク切り替えを単独でテスト:サービスの接続を維持したままWi-Fiをオフにしてモバイルネットワークに切り替え、新しい接続が復旧するか確認します。画面ロックのテストと混ぜないでください。
- 項目を一つずつ変更:バックグラウンド設定を一度に一種類だけ変更し、同じ手順を繰り返して結果を記録します。
| 確認できた状況 | 優先して確認する項目 |
|---|---|
| システムのVPNが切断され、クライアントが停止状態 | バックグラウンド制限、サービスのクラッシュ、他のVPNとの競合 |
| VPNは接続中だが、新しいリクエストがすべてタイムアウト | 現在のネットワーク、ノードへの到達性、DNSログ |
| 特定のアプリだけアクセスできない | アプリ別の対象リスト、適用ルール、アプリ側の接続キャッシュ |
| Wi-Fiからモバイルネットワークへの切り替え後だけ失敗 | ネットワーク切り替え後の再接続、古い接続の残留、モバイルデータの許可 |
ログをエクスポートするときは、ひとまずlog-level: infoを使用し、詳細な調査が必要な場合に限って一時的にログレベルを上げます。ログやスクリーンショットには、サブスクリプションURL、ノードのサーバー情報、アクセス先ドメイン、アクセストークンが含まれる場合があります。共有する前に、こうした機密情報を削除してください。
常時接続VPNとアプリ別プロキシ:復旧後も通信できない状態を防ぐ
常時接続でも、絶対に終了しないわけではない
Android 7.0以降は常時接続VPNに対応していますが、クライアント側もこの機能に対応し、使用を許可している必要があります。「設定」→「ネットワークとインターネット」→「VPN」→クライアント横の設定ボタンで「常時接続VPN」を探してください。項目を選べない場合は、無関係な設定を変更して無理に有効化しないでください。
「VPNを使用しない接続をブロック」は別の制限機能です。VPNが確立されていない場合やVPNの対象外となる接続は、システムによってブロックされることがあります。有効にした状態でクライアントの設定が機能しないと、スマートフォン全体がインターネットに接続できなくなる場合があります。まず通常の接続、再起動後の復旧、アプリ別の動作を確認してから有効にするか判断してください。問題の切り分けでは、一時的にこのブロックをオフにして原因を確認できます。
アプリ別の対象リストとruleモードは別の階層
Androidクライアントの「選択したアプリのみプロキシを使用」や「選択したアプリを除外」は、通常、VPNが対象とする範囲を指定し、どのアプリをローカルインターフェースに通すかを決めます。一方、mode: ruleは、コアに渡された接続をどのルールに適用するかを決めます。アプリがVPNの対象に含まれていなければ、ルールの順序を変更しても通信経路は変わりません。
クライアントによっては、アプリ別設定を「アクセス制御」と呼びます。許可リストを使う場合は、実際にネットワークリクエストを送るアプリも対象に含めてください。リストを変更した後は、クライアントの案内に従ってVPNを再接続します。「VPNを使用しない接続をブロック」も有効にしている場合、対象外のアプリは自動的に直接接続されず、通信できなくなることがあります。
同様に、設定内のmixed-port: 7890はローカルのHTTP/SOCKSプロキシの待ち受けポートの例であり、AndroidのVPN許可を切り替える設定ではありません。ローカルポートだけを起動してVPNを確立していない場合、ポートが開いているだけで通常のアプリの通信が自動的にそこへ転送されることはありません。
復旧の順序:まずサービス、次にネットワーク、最後に設定を見直す
- VPN接続がない:許可設定、バックグラウンド設定、他のVPNアプリを確認してから、クライアントのサービスを再起動します。
- VPNは接続中だがアクセスできない:ローカルネットワークが使えることを確認し、現在のノード、DNS、接続ログを確認します。
- 一部のアプリだけ問題がある:アプリ別の対象範囲、適用ポリシー、システムのVPNブロック設定を確認します。
- 再起動後に自動復旧しない:クライアントの起動時接続、自動起動の許可、システムの常時接続機能をそれぞれ確認します。これらを同じ設定とみなさないでください。
Android版Clashを安定して使うには、VPNの許可、バックグラウンド実行、設定の整合性が重要です。まず動作する設定を保存し、項目を一つずつ変更しながら再現を確認しましょう。コア、DNS、バッテリー設定を一度に変更するより、原因を特定しやすくなります。設定項目を確認する場合は設定リファレンスを、クライアントを変更する場合は選び方ガイドで各プラットフォームへの対応状況を確認してください。