アプリの除外は、Webサイトを直接接続にするルールとは別の設定

ブラウザーではプロキシを使いながら、あるスマートフォンアプリだけは元のネットワークで通信させたいことがあります。そのアプリが使うドメインを一つずつ探して直接接続のルールを書くより、アプリ自体を対象から外すほうが適している場合があります。Clash Meta for Androidのアクセス制御は、AndroidのVPNが通信を取り込む前に選択したアプリを除外できます。「アプリ別プロキシ」という名前のボタンを探すのではなく、ネットワーク設定から操作します。

この記事は、メンテナンスが続いているClash Meta for Android(CMFA)2.11.34.Meta、公式Releaseの v2.11.34 を対象としています。この固定バージョンの簡体字中国語ラベル、設定画面の定義、VPNの実装を照合しました。操作項目には対応する英語UIのラベルを記載します。日本語の説明は記事としての翻訳であり、日本語UIを実機確認したという意味ではありません。プロジェクトの最低要件はAndroid 5.0で、READMEではAndroid 7.0以降を推奨しています。対象はすでにインストール済みで正常に接続できているスマートフォンです。CPUアーキテクチャを選び直したり、APKをダウンロードしたり、コアを交換したりする手順ではありません。アーキテクチャ別のパッケージはこの設定処理を共有していますが、すべての機種で実機テスト済みということではありません。

操作の対象は、同じAndroidユーザーまたはプロファイル内のアプリです。仕事用プロファイル、複製したアプリ、別のVPN、アプリ自身に設定したプロキシには、この記事の説明をそのまま当てはめないでください。ここで迂回するのは、このCMFAのVPNだけです。Wi-Fiルーターや上流のネットワークにあるプロキシを無効にするわけではありません。また、旧Clash for Android、FlClash、デスクトップ版Clash Verge Revのメニューを説明するものでもありません。

直接接続が許可されているか、先に確認してください。除外したアプリはCMFAのVPNを使わなくなり、通常はスマートフォン本来のネットワークで接続します。Androidで Block connections without VPN(VPNを使用しない接続をブロック)が有効になっていると、除外したアプリが通信できなくなることがあります。会社が管理する端末や、すべての通信をVPN経由にする必要がある端末では、記事に合わせるために安全対策を無効にせず、ここで変更を中止してください。

チェックを入れる前に、モードごとの意味を確認する

Access Control Mode(アクセス制御モード)と Access Control Packages(対象アプリのパッケージ一覧)は別の項目です。一覧に記録されるのは選択したアプリで、その選択をどう扱うかはモードで決まります。

英語UIの選択肢チェックしたアプリの扱い
すべてのアプリを許可
Allow all apps
この一覧ではアプリを選別しません。ただし、以前のチェックが自動的に消えるわけではありません
選択したアプリだけを許可
Allow selected apps
選択したアプリはCMFAのVPNに入り、選択していないアプリは入りません
選択したアプリを除外
Deny selected apps
選択したアプリはCMFAのVPNを迂回します。この記事ではこのモードを使います

ここでの「Deny」はこのVPNに入れないという意味で、アプリのインターネット接続を禁止する設定ではありません。反対に、VPNに入るアプリが必ずリモートノードを使うとも限りません。通信は現在の設定とモードに従って処理されるため、直接接続のルールに一致する場合もあります。

最初に、現在のモードとチェックリスト全体を控えます。すでに Allow selected apps を使っている場合、その一覧のまま Deny selected apps に切り替えないでください。アプリ全体の扱いが逆になります。以下の手順は、現在すべてのアプリを許可しているか、すでに除外モードを使っていて既存の一覧の用途を確認できる環境向けです。

接続を停止してから一覧を設定し、もう一度接続する

短時間の通信中断があっても差し支えない時間を選び、ほかのアプリで作業中の内容を保存します。このバージョンは動作中にアクセス制御モードなどのVPN設定を無効にするため、まず接続を停止してから設定を開きます。最近使ったアプリの一覧からCMFAをスワイプして消したり、プロセスを強制終了したりする操作ではありません。

  1. CMFAのホーム画面に戻り、Running をタップして接続を停止します。状態が Stopped になるまで待ちます。
  2. Settings → Network を開き、これまで通信の取り込みに使っていた Route System Traffic が有効であることを確認します。ローカルのプロキシポートだけで利用している場合、このVPN除外の手順は対象外です。
  3. Access Control Mode を開き、Deny selected apps を選びます。DNS、IPv6、ほかのネットワーク項目は同時に変更しません。
  4. Access Control Packages を開き、対象アプリを探してチェックします。アプリ名とパッケージ名を照合し、既存の一覧全体も確認して、チェックしたすべてのアプリが除外したい対象であることを確かめます。Allow all apps から切り替えた場合、過去のチェックも一緒に有効になります。
  5. 画面の戻る操作またはAndroidの戻る操作で、アプリ一覧を通常の手順で閉じ、ホーム画面に戻ります。このバージョンは一覧を閉じる際に選択を保存するため、別の「保存」ボタンを探す必要はありません。選択した直後にCMFAを強制終了しないでください。
  6. ホーム画面の Stopped をタップしてVPN接続を作り直します。AndroidがVPNの許可を求めた場合は、自分が開始したCMFAからの要求であることを確認してから、システムの案内に従います。動作中の状態に戻るのを待って接続を確認します。

再接続が必要な理由:Androidのアプリ許可・除外リストは、VPNを作成する際に適用されます。このバージョンのCMFAでは、動作中に一覧を変更して通常の戻る操作で閉じた場合も、サービスを自動的に停止して再起動します。ダウンロードや通話の途中で変更しないでください。この記事で先に停止するのは、モードを編集できる状態にし、通信が中断するタイミングを自分で決めるためです。

アプリを一つだけ除外したいときに「全選択」や「選択を反転」を使うことは勧めません。一覧がまとめて変更されます。目的のアプリが見当たらない場合は、現在のプロファイルにインストールされているか、一覧でシステムアプリが非表示になっていないかを先に確認します。名前が似ているだけのコンポーネントを適当に選ばないでください。この記事ではバージョンと画面が完全に一致する実際のスクリーンショットを取得できなかったため、旧バージョンのサブスクリプション読み込み画像を操作例として代用していません。

別のブラウザーではなく、対象アプリの通信で確認する

接続が再開したら、今回チェックしたアプリそのものを開き直して、新しい通信を発生させます。別のブラウザーに表示された出口IPは、そのブラウザーの接続についての情報であり、対象アプリが除外された証拠にはなりません。変更前にノードを通ると確認できていた接続先で、変更前後を比較します。もともと直接接続されていた国内向けページだけでは、変更の効果を確認できません。

  • 対象アプリを確認する:基本的な通信ができ、新しい接続の動作がスマートフォンの直接接続時と一致するかを確認します。出口IPで比較できるのは、アプリ自身の出口を明確に表示でき、直接接続とノードの出口が異なる場合だけです。
  • ほかのアプリを確認する:除外していないアプリが以前の設定どおりに動いているかを確かめます。ステータスバーにVPNアイコンが残っていても異常ではなく、すべてのアプリがプロキシを通るという意味でもありません。
  • 除外後に通信できなくなった:AndroidがVPN以外の接続をブロックしていないか、対象サービスが現在のネットワークで直接利用できるものかを確認します。プロキシを迂回しても、直接接続できなかったサービスが自動的に使えるようになるわけではありません。
  • 変化が見られない:モードの選び間違い、複製アプリとの取り違え、通常の戻る操作で保存していない、新しいVPN接続がまだ作られていない、といった点を確認します。ノードの変更とデータの消去を同時に行わないでください。

元に戻す場合は、まずCMFAを停止します。同じ一覧を開き、今回追加したチェックだけを外して、通常の戻る操作をしてから再開します。今回 Allow all apps からモードも変更した場合は、操作前の記録に従ってモードと一覧を復元します。ほかの人の設定まで消去しないでください。VPNの対象に戻ったアプリも元の設定に従って振り分けられるため、すべてのリクエストがノードを通るとは限りません。

この操作にRoot、ADB、アプリの再インストール、YAMLの編集は必要ありません。サブスクリプションと正常に使えているノード設定は残し、除外対象のアプリと必要なアクセス制御モードだけを変更します。確認結果が想定と違う場合は元に戻してください。この記事は固定バージョンのソースとAndroidの公式な仕組みを照合したもので、すべてのメーカーの実機で互換性を保証するものではありません。

公式情報源とバージョン範囲

バージョン番号、ファイル名、画面表示は更新で変わる場合があります。作業前にリンク先の公式資料を確認してください。