まず確認:サービス停止か、接続失敗か

Android版Clashが画面消灯後しばらくして切断されても、必ずしもバックグラウンドでアプリが終了したとは限りません。システムによるプロセス終了、別のVPNによる接続の引き継ぎ、ノードの停止、Wi-Fiからモバイル通信への切り替えでも、Webページが開けなくなることがあります。まずアプリの動作状態を確認し、バッテリー設定を見直すのか、設定や接続を調べるのかを判断しましょう。

この記事では、AndroidのVpnServiceで通信を処理するクライアントを取り上げます。従来のClash for Androidや、mihomoコアを採用し、Android VPNインターフェースを利用するクライアントが対象です。コアはプロトコルやルールの機能を左右しますが、バックグラウンドで動作し続けられるかは、主にクライアントのAndroid向け実装とシステムの制限によって決まります。コアを変更しても、バックグラウンド制限が自動的に解除されるわけではありません。

確認できる状態優先して確認する項目
クライアントが停止し、システムのVPN表示も消えているバックグラウンド制限、手動停止、別のVPNによる接続
VPNは接続中だが、プロキシ経由のサイトだけ開けないノードへの接続、サブスクリプションの有効期限、ルール、DNS
Wi-Fi切り替え後、一時的に通信できないネットワークの再接続と既存接続の復旧を確認。まずバッテリー設定が原因と決めつけない
再起動後にクライアントが起動しない起動時に実行する機能、自動起動の許可、再起動後の初回ロック解除

テスト前に、端末の機種名、Androidのバージョン、システムのバージョン、クライアントのバージョンを記録します。最初の2項目はシステムの「設定」→「デバイス情報」、アプリのバージョンはクライアントの「アプリ情報」などで確認できます。従来のClash for Androidは開発が終了しています。新しいAndroidで互換性の問題が続く場合は、すべてのシステム権限をむやみに緩めるのではなく、クライアント比較を参考に、現在も保守されている選択肢を検討してください。

VpnServiceの許可ダイアログで認めること

プロキシを初めて起動すると、Androidでは通常、「接続リクエスト」や「VPN接続の設定」といったシステムダイアログが表示されます。許可すると、クライアントは仮想ネットワークインターフェースを作成し、対象の通信をローカルのコアに渡して、ルールに応じて直接接続またはプロキシ接続に振り分けられるようになります。ここでいうVPNは、通信を処理するためにAndroidが提供するインターフェースです。従来型の企業VPNサーバーに必ず接続するという意味ではありません。

  1. まず有効な設定をインポートし、利用可能なノードを選んでから、クライアントの起動ボタンをタップします。
  2. システムのダイアログに表示されたアプリ名が、インストールしたクライアントと一致することを確認して、接続を許可します。
  3. システムの「設定」で「VPN」を検索し、現在接続中のアプリを確認します。端末によっては、鍵のアイコンが表示されます。
  4. 直接接続する想定のサイトと、プロキシ経由で接続する想定のサイトをそれぞれ開き、クライアントの接続履歴と照らし合わせて振り分けを確認します。

VPNアプリを2つ同時に使えない理由

同じAndroidユーザーまたはプロファイルでは、通常、有効なVPNサービスを1つしか使用できません。別のプロキシアプリ、ローカルVPNを使う広告ブロッカー、パケットキャプチャアプリを起動すると、接続中のVPNが置き換えられることがあります。仕事用プロファイルと個人用プロファイルは管理上別の領域です。通知バーのアイコンだけですべての状態を判断しないでください。問題を調べるときは、同じプロファイル内の別のVPNアプリを終了し、Clashだけでテストします。

デスクトップ向けガイドのTUNサービス許可を、そのままスマートフォンに適用することはできません。Androidでは一般に、rootなしで使えるVpnServiceが通信を処理します。「TUN」の個別スイッチやアプリごとの振り分け、LAN通信の除外設定があるかどうかは、クライアントの実装によります。バックグラウンドで動作させるために、デスクトップ向けのtun設定をそのままコピーしないでください。

基本設定:バッテリー、通知、バックグラウンド動作

まずバッテリー設定を「制限なし」にする

ホーム画面のクライアントアイコンを長押しし、「アプリ情報」→「バッテリー」または「アプリのバッテリー使用量」を開いて、「制限なし」「バックグラウンドでの使用を許可」などの項目を探します。Pixelなど標準Androidに近い端末では、「設定」→「アプリ」→「すべてのアプリを表示」→クライアント→「アプリのバッテリー使用量」が一般的な経路です。項目名はAndroidのバージョンによって異なります。バックグラウンド実行を許可し、アプリが「制限付き」になっていないことを確認してください。

一部のシステムには、「特別なアプリアクセス」→「バッテリー最適化」の一覧も残っています。一覧を「最適化していないアプリ」から「すべてのアプリ」に切り替え、クライアントを選んで「最適化しない」に設定します。「制限なし」と「最適化しない」は、Androidのバージョンによって別の設定画面にあったり、両方用意されていたりします。端末に表示される設定を使えば十分です。存在しない項目を探す必要はありません。

動作状況を確認できるよう通知を残す

Androidクライアントは通常、VPNタスクを継続するためにフォアグラウンドサービスを使い、動作中の通知を表示します。Android 13以降では通知の実行時権限が追加されています。通知を許可しなくても、フォアグラウンドサービスが必ず停止するわけではありませんが、通知の表示場所や見え方は変わります。サービスが停止したか確認しやすいよう、クライアントの通知を許可し、少なくとも動作状態の通知は残すことをおすすめします。

  • 通知の許可:「アプリ情報」→「通知」で、必要な動作状態の通知を許可します。関係のない通知カテゴリまで有効にする必要はありません。
  • バックグラウンドデータ:データセーバーを有効にしている場合は、「モバイルデータとWi-Fi」でバックグラウンドデータの使用を確認し、必要に応じて無制限のデータ使用を許可します。
  • システムの省電力モード:まず通常のバッテリーモードでテストし、その後、省電力モードで個別に確認します。複数の制限を同時に適用しないようにしましょう。
  • 強制停止:日常的なアプリ整理に「アプリ情報」→「強制停止」を使わないでください。ホーム画面に戻る操作とは異なります。

最近使ったアプリのカードをスワイプして消す操作と、「強制停止」は別です。前者でサービスも終了するかどうかは、メーカーのポリシーやアプリの実装によって異なります。後者はアプリを明示的に停止します。Android 13以降の一部システムには、実行中アプリを「停止」する機能もあります。ユーザーが停止した後、バッテリー最適化の対象外にしていても、サービスがすぐに再起動するとは限りません。

メーカー別:バッテリー最適化の除外と自動起動の設定

以下は一般的なメニューの例で、すべての機種で名称が統一されているわけではありません。システム更新、地域別のバージョン、端末の管理ポリシーによって設定場所が変わることがあります。見つからない場合は、システム設定で「自動起動」「バックグラウンドでのバッテリー使用量」「スリープ中のアプリ」などを検索するか、クライアントのアプリ情報から開いてください。バッテリー管理全体を無効にせず、対象のクライアントだけを調整しましょう。

システム主な設定場所確認する項目
Xiaomi MIUI / HyperOS 「設定」→「アプリ設定」→「アプリ管理」→クライアント。バージョンによっては、自動起動の設定が「権限管理」にあります。 バッテリー設定を「制限なし」にする。自動起動またはバックグラウンドでの自動起動を許可する。
HUAWEI EMUI / Androidアプリに対応するシステムバージョン 「設定」→「アプリとサービス」→「アプリ起動管理」 対象アプリの自動管理をオフにし、必要に応じて自動起動、連携起動、バックグラウンドでの動作を許可します。
OPPO ColorOS / OnePlus ColorOS 「設定」→「バッテリー」→「その他の設定」→「アプリのバッテリー使用量」。自動起動はアプリ管理から探します。 バックグラウンドでの動作を許可し、自動起動の権限を確認します。
vivo OriginOS 「設定」→「バッテリー」→「バックグラウンドでのバッテリー使用量」。自動起動は「アプリと権限」→「権限管理」にある場合があります。 バックグラウンドでの高いバッテリー使用を許可し、必要に応じて自動起動も許可します。
Samsung One UI 「設定」→「バッテリーとデバイスケア」→「バッテリー」→「バックグラウンドでの使用制限」。新しいバージョンでは「バッテリー」から直接開く場合もあります。 「スリープ中のアプリ」「ディープスリープ中のアプリ」から削除し、「自動でスリープさせないアプリ」に追加します。

自動起動と最近使ったアプリの固定は別の設定

自動起動の許可は、起動時や特定のイベント後にアプリが起動できるかに関係します。ただし、クライアント側にその機能が実装されていることが前提です。クライアント内にも「起動時に開始」「自動接続」などの設定があるか確認してください。システムで自動起動を許可しても、アプリに実装されていない起動処理が追加されるわけではありません。再起動後、最初に端末のロックを解除する必要がある場合もあります。

最近使ったアプリの固定は、「すべてクリア」などの操作でアプリを誤って終了するのを防ぐための設定です。一部のシステムでは、最近使ったアプリの画面でカードを長押しするか、メニューから「ロック」を選びます。カードを下にスワイプして固定するバージョンもあります。固定してもプロセスが回収されなくなるわけではなく、ユーザーによる停止、システム更新後の再起動、深刻なメモリ不足にも対処できません。この設定がない端末では、バッテリーとバックグラウンド動作の設定を確認すれば十分です。

「常時接続VPN」とVPN未接続時の通信遮断を使い分ける

一部のクライアントは、システムの「常時接続VPN」に対応しています。システムの「設定」で「VPN」を検索し、クライアントの横にある歯車をタップして、「常時接続VPN」と「VPN未接続時の接続をブロック」があるか確認します。前者はシステムがVPNサービスの維持や再接続を試みる設定、後者はVPNが使えないときに通信を遮断する設定です。通常のバッテリー最適化除外とは異なります。

  • 再起動後の接続忘れを防ぎたい場合:クライアントが対応していることを確認してから「常時接続VPN」を有効にし、一度再起動して動作を確かめます。
  • 切断時は通信を止めたい場合:通信遮断の設定を検討できますが、ノードが使えないとき、クライアントを停止したとき、ネットワークを切り替えたときの挙動を事前にテストしてください。
  • アプリごとにVPNを迂回させる場合:通信遮断の設定によって、VPN対象外にしたアプリも通信できなくならないか、必ず確認してください。どの迂回方法でも問題なく使えるとは限りません。

システムの通信遮断と、ClashのDIRECTルールは別の仕組みです。VPNインターフェースに入った後、コアが直接接続に振り分ける通信と、VPNの対象から除外されたアプリの通信は、異なる経路を通ります。通信遮断を有効にして、業務アプリ、LAN内の機器、ログイン認証ページに接続できなくなった場合は、アプリの除外設定、ルーティング、システムのポリシーを個別に確認してください。

まず通常の接続を確認し、次に常時接続を有効にして、最後に通信遮断をテストします。ノードがもともと使えない状態で通信遮断を有効にすると、端末全体がオフラインになったように見え、システム障害と誤認しやすくなります。特にログイン認証が必要な公衆Wi-Fiを使う場合は、VPN設定から通信遮断を解除する手順を確保してください。

画面消灯テストで設定を確認する

設定画面のスイッチを見るだけでは十分ではありません。変更後は同じ設定と同じノードを使い、再現可能なテストを行いましょう。以下の5分と30分は目安となる確認時間であり、すべての端末での実測結果ではありません。原因を判断できるよう、1回のテストで変更する設定は1項目だけにします。

  1. 画面点灯時の基準:クライアントを起動し、システムのVPNが接続中であることを確認します。直接接続先とプロキシ接続先をそれぞれ開き、時刻を記録します。
  2. 画面消灯後5分:音楽の再生やファイルのダウンロードはせず、5分後にロックを解除します。まずシステムのVPN状態とクライアントの動作状態を確認し、続けて接続先を開きます。
  3. 画面消灯後30分:端末を操作せずに置いてから確認します。起動後の最初のリクエストだけが遅い場合は、ネットワークの復旧とサービスの停止を区別してください。
  4. ネットワーク切り替え:Wi-Fiからモバイルデータ通信に切り替え、再びWi-Fiに戻して、新しい接続が確立するか確認します。進行中のダウンロードやセッションが切れても、バックグラウンドのプロセスが終了したとは限りません。
  5. 再起動後の確認:端末のロックを一度解除し、想定どおり自動接続するか確認します。「自動起動を許可した」という表示だけで成功と判断しないでください。

「時刻、ネットワークの種類、VPNの接続状態、クライアントの動作状態、ノードの利用可否」の5項目を記録すれば、原因を調べる手がかりになります。可能であれば、さらに長時間放置してテストしてください。Androidのアイドル制限やメーカー独自の終了処理が最初の30分以内に働くとは限らず、短時間のテストに成功しても一晩中動作する保証にはなりません。

サービスが動作中なら設定とネットワークを確認

VPNが接続中のままなら、まずログでDNSエラー、接続タイムアウト、認証失敗などを確認します。サブスクリプションを手動更新した後、実際に利用できるノードがあるか確認してください。更新の成功は設定を取得できたことを示すだけで、すべてのノードに接続できるとは限りません。ルールモードでは、接続先に適用されたのがプロキシグループか直接接続ルールかも確認します。必要に応じて入門ガイドを参照し、項目ごとに動作を確かめてください。

タイムアウトが発生しても、DNSの切り替え、すべてのスニッフィング設定の有効化、通信対象範囲の変更を同時に行わないでください。まず利用できることが分かっているノードに切り替え、次にネットワークを変更し、最後にログを見ながら設定を調整します。比較条件を維持することで、通信事業者側のネットワーク変化と端末側の設定問題を切り分けやすくなります。

設定後に確認しておきたい項目

  • システム更新後:バッテリー設定、自動起動、通知の許可が維持されているか確認し、短時間の画面消灯テストを行います。
  • クライアント変更後:新しいアプリでVPNを再許可し、バッテリー最適化の除外も設定し直します。以前のアプリの権限は自動で引き継がれません。
  • バッテリーの持ちが明らかに悪くなった場合:システムのバッテリー使用状況とクライアントの接続履歴を確認し、頻繁な再接続や継続的な通信がないか調べます。常時接続だけを原因と決めつけないでください。
  • 問題を報告する場合:システムとクライアントのバージョン、発生時刻、再現手順を伝えます。ログを共有する前に、サブスクリプションのURL、アクセストークン、個人のアクセス履歴を隠してください。

おすすめの手順は、まずVpnServiceを許可し、次にクライアントのバックグラウンドでのバッテリー制限を緩和することです。端末に応じて自動起動と最近使ったアプリの固定を設定し、最後に常時接続と通信遮断を検討します。各段階で実際の接続を確認してください。システムによる切断を減らせるだけでなく、次に問題が起きたとき、原因がAndroidのバックグラウンド管理、クライアントのサービス、サブスクリプション、ネットワークのどこにあるか判断しやすくなります。