まず確認:VPNが停止したのか、接続が復旧していないのか
Android版Clashが画面ロック後に切断される場合は、システムのVPN状態とクライアントの動作状態を確認してから、バッテリー設定を見直しましょう。バックグラウンドサービスが実際に停止している場合に限り、バッテリー最適化の除外が主な対処になります。VPNが接続中でクライアントにも接続記録がある場合は、ノード、DNS、アプリごとのプロキシ設定、Wi-Fiとモバイルネットワークの切り替えが原因かもしれません。
この記事は、AndroidのVpnServiceで通信を処理するClash系クライアントを対象としています。mihomoコアを使用するクライアントも含みます。アプリによって「起動」「実行」「VPNモード」などボタンの名称は異なります。また、システムメニューはAndroidのバージョンやメーカー独自のUI、地域向けの仕様によって変わるため、以下の手順は実際の端末画面に合わせて確認してください。
| 切断時の症状 | まず確認する場所 | 主な原因 |
|---|---|---|
| ロック解除後、クライアントが停止と表示される | システムのVPN画面、アプリのバッテリー設定 | サービスの停止、バックグラウンド制限、手動での終了 |
| 別のVPNを起動するとClashが停止する | 現在のユーザーまたは仕事用プロファイルのVPN一覧 | 別のアプリがVpnServiceを使用 |
| VPNは接続中だが、特定のサイトがタイムアウトする | クライアントの接続履歴とログ | ノード、ルール、DNS、アプリの除外設定 |
| Wi-Fiからモバイルネットワークへの切り替え時だけ失敗する | モバイルデータの使用権限、データセーバーの設定 | ネットワーク切り替えによる既存接続の無効化 |
| クライアントを開くと復旧する | 通知、バックグラウンド動作、自動起動の設定 | バックグラウンドプロセスの制限、サービスの再起動 |
VpnServiceの許可:通信を処理できる状態か確認する
VpnServiceはアプリ用の仮想ネットワークインターフェースを作成し、クライアントが通信を読み取り、ルールを適用して適切な接続先へ送信できるようにします。Androidクライアントでは通常、この処理はVPNの起動手順に含まれます。デスクトップ版のようにTUNドライバーをインストールする必要はなく、通常のアプリ通信を処理するために別途ローカルプロキシポートを開放する必要もありません。
初回起動時の確認手順
- 有効な設定をインポートし、使用可能なプロキシグループとノードを選択します。まず画面を点灯した状態で、ノードに接続できることを確認してください。
- クライアントの起動ボタンをタップします。システムに「接続リクエスト」またはVPN接続の許可ダイアログが表示されたら、アプリ名を確認して「許可」または「OK」を選びます。
- システムの「設定」→「ネットワークとインターネット」→「VPN」を開き、クライアントが接続済みと表示されているか確認します。メーカー独自のシステムでは、設定の検索欄で「VPN」と検索してください。
- プロキシが必要なサイトを開き、クライアントの接続履歴を確認します。VPN接続状態だけでなく、アクセス先と適用されたルールも記録されていることを確かめてください。
許可ダイアログはAndroidのシステム機能です。許可しなくてもクライアントでサブスクリプションを更新できる場合がありますが、他のアプリの通信を処理できているとは限りません。サブスクリプションのダウンロードとVPNトンネルの確立は別の処理です。ダイアログをタップできない場合は、フローティングウィンドウ、画面フィルター、画面に重なるツールを閉じてから再試行してください。不明なアプリに追加権限を与えるのは避けましょう。
VPNの競合とアプリごとの設定を確認する
通常、同じAndroidユーザーまたはプロファイルで同時に使用できるVpnServiceは1つです。広告ブロッカー、ファイアウォール、別のプロキシクライアントもこの機能を使う場合があり、起動すると既存のVPNが置き換わることがあります。仕事用と個人用のプロファイルでそれぞれVPNを使える場合もあるため、アプリがインストールされているかどうかだけでは競合を判断できません。
ブラウザー以外の特定のアプリだけ通信できない場合は、クライアントの「アプリごとのプロキシ」「アプリのアクセス制御」「除外リスト」を確認してください。対象アプリが除外されていると、想定どおりにプロキシを経由しません。仕事用プロファイルのアプリも、個人用プロファイルのVPNでは管理されないことがあります。この場合、バッテリー設定を繰り返し変更しても解決しません。
VPNを常時接続:自動復旧の仕組みと通信遮断設定
「VPNを常時接続」はAndroidが管理する機能で、起動時などに指定したVPNサービスの開始を試みます。ノードへの接続を保証する機能でも、メーカー独自のバックグラウンド制限をすべて回避できる設定でもありません。アプリ側の対応が必要で、管理対象の端末では管理者が変更を制限している場合もあります。
- 「設定」→「ネットワークとインターネット」→「VPN」を開きます。
- クライアントの横にある歯車をタップするか、VPNの詳細画面を開きます。
- 「VPNを常時接続」が表示されている場合は、接続が正常であることを確認してから有効にします。
- まず「VPN未接続時の通信をブロック」をオフにして、画面ロック後や再起動後に復旧するかテストします。問題なく使えることを確認してから、通信を遮断する設定を有効にするか判断してください。
設定を変更できない場合は、クライアントの対応状況や端末の管理ポリシーを確認してください。YAMLを変更して無理に有効化するのは避けましょう。再起動後は設定を読み込める状態かどうかも確認してください。手動でロック解除するまでアクセスできないデータ、無効なサブスクリプション、起動失敗などが原因で、システムの復旧処理が完了しない場合があります。
バッテリー最適化の除外:電池、バックグラウンド、自動起動を個別に設定
バッテリー最適化、バックグラウンド動作、自動起動は、それぞれ別の制限です。最近使ったアプリの一覧でアプリをロックしても、バックグラウンド動作が許可されるとは限りません。自動起動を許可しても、バックグラウンド通信が制限されないとは限りません。設定は一度にまとめて変更せず、変更するたびにテストすると、どの設定が有効だったか判断しやすくなります。
標準Androidに近い端末での設定
一般的なAndroid 13・14の画面を例にすると、クライアントのアイコンを長押し→「アプリ情報」→「アプリのバッテリー使用量」または「バッテリー」を開き、「制限なし」を選択します。バージョンによっては「バックグラウンドでの使用を許可」を選ぶと、最適化の段階を設定できます。また、「設定」で「バッテリー最適化」を検索し、すべてのアプリに切り替えてクライアントを「最適化しない」に設定する端末もあります。これらの項目がすべての端末にあるとは限りません。
AndroidのDozeやアプリスタンバイはバックグラウンド動作を制限します。バッテリー最適化の除外で一部の制限を緩和できますが、アプリのクラッシュや切断済みのネットワーク接続は修復できません。設定後はしばらくバッテリー消費を確認し、バックグラウンド動作を許可するアプリは必要なものに絞りましょう。
主なメーカー製システムでの設定場所
| システム | 一般的な設定場所 | 確認する設定 |
|---|---|---|
| Xiaomi MIUI / HyperOS | アプリ情報→バッテリーセーバー;設定で「自動起動」または「バックグラウンド自動起動」を検索 | バッテリーセーバーを「制限なし」に設定し、必要に応じてバックグラウンド自動起動を許可 |
| Huawei EMUI | 設定→アプリとサービス→アプリ起動管理 | アプリの自動管理をオフにし、手動管理で自動起動、他のアプリによる起動、バックグラウンド動作を許可 |
| OPPO ColorOS / OnePlus OxygenOS | アプリ情報→バッテリー使用量の管理;アプリ管理→自動起動管理 | バックグラウンド動作を許可;自動起動の設定がある場合は必要に応じて有効にする |
| vivo OriginOS | 設定→バッテリー→バックグラウンドでの電池使用量;iマネージャー→アプリ管理→権限管理 | バックグラウンドでの高い電力使用を許可;自動起動の権限設定を確認 |
| Samsung One UI | 設定→バッテリー→バックグラウンドでの使用制限 | スリープ中・ディープスリープ中のアプリから削除し、「自動的にスリープ状態にしないアプリ」に追加 |
表に記載したのは一般的なメニューの目安であり、すべてのバージョンで同じ場所にあるとは限りません。同じ名称の項目が見つからない場合は、設定で「バックグラウンド」「起動」「バッテリー最適化」「スリープ」などを検索し、クライアントの設定画面であることを確認してください。Huawei端末でAndroidアプリと互換性のないシステムバージョンを使用している場合、ここで説明するAndroidのインストール手順やVpnServiceの操作は対象外です。
通知の許可と最近使ったアプリのロック
Android 8.0以降では、VPNサービスの継続的な実行にフォアグラウンドサービスの仕組みが関係します。Android 13以降では通知の許可も確認してください。通知を許可すると接続状態や停止操作を確認しやすくなりますが、通知を許可しなくてもフォアグラウンドサービスが必ず停止するわけではありません。システムの「アクティブなアプリ」画面に表示される場合もあります。「通知がない」ことだけを理由に「VPNが停止した」と判断しないでください。
メーカー独自の最近使ったアプリ画面でロックすると、「すべてのアプリを終了」などの操作による誤終了を防げる場合がありますが、システムレベルで動作を保証する機能ではありません。トラブルシューティング中はクライアントをスワイプして終了したり、アプリ情報で「強制停止」をタップしたりしないでください。強制停止は通常のホーム画面への切り替えとは異なり、通常はアプリを手動で再度開くまで正常な起動動作に戻りません。
VPNが接続中の場合:データ通信の権限、ノード、DNSを確認
画面ロック後もシステムのVPN画面が接続中のままなら、除外設定を増やすのではなく、実際のエラーを確認してください。まず、インターネット接続自体の不具合、プロキシ出口の失敗、DNS名前解決の失敗を切り分けます。いずれもブラウザーではタイムアウトとして現れることがあります。
- モバイルデータの使用権限を確認:「アプリ情報」→「モバイルデータとWi-Fi」またはメーカー独自の「ネットワークアクセス管理」を開き、クライアントが現在のネットワークを使用できることを確認します。「データセーバー」が有効な場合は、クライアントに無制限のデータ使用を許可する必要があるか確認してください。
- ノードへの接続を確認:ロック解除後、同じネットワークで選択中のノードを再テストし、別の利用可能なノードでも試します。遅延テストに成功しても、すべてのサイトやUDP通信が利用できるとは限りません。
- DNSログを確認:名前解決のタイムアウトや上流への接続失敗が記録されていないか確認します。Android 9以降の「プライベートDNS」とクライアントによるDNS処理が影響し合う場合があります。「自動」に切り替えて比較テストし、変更前の設定も記録してください。
- ネットワーク切り替え後の新しい接続を確認:Wi-Fiからモバイルネットワークに切り替えると、経路やNATの状態が変わり、既存のTCP接続が切れることがあります。ページを再読み込みするかリクエストを再送信し、新しい接続が復旧するか確認してください。古いダウンロードだけを見続けないようにしましょう。
バックグラウンド切断を直すために、デスクトップ向けのTUN設定をそのまま流用しないでください。AndroidクライアントはVPNインターフェース、ルート、DNSの処理に必要な設定を自動生成する場合があります。サブスクリプションに含まれるtunフィールドが有効かどうかは、クライアントの実装によって異なります。mixed-portを変更したり、ポートを7890や7891に設定したりしても、システムによるアプリプロセスの停止は防げません。
特定のWi-Fiネットワークだけで失敗する場合は、まず同じ端末のモバイルネットワークでテストしてください。モバイルネットワークでは正常なら、Androidのバックグラウンド制限ではなく、Wi-Fiのポータル認証、IPv6経路、上流DNSを確認しましょう。
画面ロック後の再テスト:手順を決めて設定を検証する
以下の時間はテストの目安であり、接続の安定を保証するものではありません。短時間の画面ロックで明らかなバックグラウンド停止は確認できますが、あらゆる深いスリープ状態を検証できるわけではありません。一部の省電力設定は充電中に変わるため、テストでは充電ケーブルを外してください。
- 現在の状態を記録:Androidのバージョン、システムUIのバージョン、クライアントのバージョン、使用中のコア、Wi-Fiまたはモバイルネットワークを記録します。「VPNを常時接続」と通信遮断設定の状態も記録してください。
- 画面点灯中に2分間テスト:対象のサイトを開き、接続ログに新しい記録があることを確認します。別のVPNは同時に起動しないでください。
- 画面ロック後、10分間待機:最近使ったアプリを終了しないでください。ロック解除後はまずシステムのVPN状態を確認してからクライアントを開き、アプリを開いたことでバックグラウンド停止が分からなくなるのを防ぎます。
- 30分間に延長:前のテストで問題がなければ、さらに長く待機して確認します。通信が復旧するまでの時間と、サービスの手動起動が必要だったかを記録してください。
- ネットワーク切り替えと再起動は別々にテスト:Wi-Fiからモバイルネットワークへの切り替えを単独でテストし、その後、再起動してロック解除した後の復旧を別にテストします。最初の画面ロックテストでは、この2つの条件を混ぜないでください。
さらに詳しく調べるために収集する情報
問題が発生する前後のクライアントログ、システムのVPN状態のスクリーンショット、正確な発生時刻を保存してください。ADBの使用経験がある場合は、パソコンからシステム状態を確認できます。以下は読み取り専用の診断コマンドで、バックグラウンド権限の付与やバッテリー設定の変更は行いません。
adb shell dumpsys deviceidle
adb shell dumpsys connectivity
deviceidleは端末のアイドル状態の確認に、connectivityはネットワークやVPN情報の確認に利用できます。出力形式はAndroidのバージョンによって異なるため、特定の項目を機械的に探さないでください。出力にはネットワークアドレスやアプリ識別子などが含まれる場合があります。共有する前に、関連部分だけを残してください。
よくある質問と最終確認
「制限なし」に設定しても、画面ロック後に切断される場合は?
まずサービスが実際に停止したか確認します。停止していた場合は、メーカー独自の自動起動設定、バックグラウンド動作、最近使ったアプリの終了、クライアントのクラッシュ記録を調べます。サービスが動作中なら、ノード、DNS、ネットワーク切り替え後の復旧を確認してください。バッテリー設定で対処できるのは原因の一部であり、ログの確認に代わるものではありません。
「VPNを常時接続」とクライアントの「起動時に開始」は両方有効にする必要がありますか?
2つは異なる仕組みです。前者はAndroidのVPN管理機能、後者はアプリの起動設定です。まず「VPNを常時接続」でサービスが復旧するか確認し、その後、クライアントの説明に従って起動時の自動起動を設定してください。メーカーが自動起動を制限している場合は、システム側でも許可が必要です。両方を有効にすれば毎回起動できるとは限りません。
すべてのアプリをバッテリー最適化の対象外にする必要がありますか?
必要ありません。まずVPNを動かすクライアントに、必要な例外だけを設定してください。特定のアプリで通知を受け取れない場合は、そのアプリのバックグラウンド動作と通知の権限を個別に確認します。すべてのアプリで省電力管理を一括して無効にすると、バッテリー消費が増え、原因を比較して特定しにくくなります。
トラブルシューティング後は、必要最小限の設定だけを残してください。VPNの許可が正常であること、クライアントに必要なバックグラウンド動作を許可していること、必要に応じてメーカー独自の自動起動を許可していることを確認し、要件に応じて「VPNを常時接続」を有効にします。最後に、クライアントを開かずに画面ロック後の復旧を再テストしてください。アプリを手動で開いたことで再起動したのではなく、設定によって接続が復旧したことを確認できます。
設定のインポートや初回接続の手順を確認する場合は入門ガイドをご覧ください。サービスが動作しているのにアクセスできない場合は、トラブルシューティングの接続経路に沿って確認してください。