AndroidでVPNを使うとき、端末内のすべての通信を同じトンネルへ送る必要があるとは限りません。仕事用のブラウザーや海外サービスだけをVPN経由にし、銀行アプリ、社内アプリ、位置情報を利用するサービスは通常の回線に戻したい場合があります。このような振り分けを実現するのが、スプリットトンネリング、またはアプリ別ルーティングです。
ただし、Androidの設定画面、VPNクライアント、プロキシ方式にはそれぞれ役割があります。公式Androidクライアントの「VPNを使用するアプリ」「VPNを使用しないアプリ」という選択と、sing-box系クライアントやほかの互換クライアントにあるルール設定は、似ていても動作範囲が同じとは限りません。この記事では、アプリ単位で通信を分ける考え方、実際の設定手順、確認方法、接続できない場合の見直し順を整理します。
2
基本モード
5
確認する層
スプリットトンネリングの基本を理解する
スプリットトンネリングは、アプリや宛先によって「VPNへ送る」か「通常のネットワークへ送る」かを分ける機能です。Androidでは、VPNサービスが端末のネットワークインターフェースを作り、対象アプリの通信をそのインターフェースへ渡します。対象外のアプリは、モバイル回線やWi-Fiなど通常の経路を使います。
アプリ別設定には大きく二つの考え方があります。一つは「選択したアプリだけをVPNへ送る許可リスト方式」です。もう一つは「基本的にすべてをVPNへ送り、指定したアプリだけを除外する除外リスト方式」です。前者は対象を明確に限定したい場合に向き、後者はほとんどのアプリをVPN経由にしたい場合に向いています。
- ✅ VPN経由にしたいアプリを少数に限定するなら、許可リスト方式を優先する
- ✅ 日常利用の大部分をVPN経由にするなら、除外リスト方式を検討する
- ✅ 設定変更後は、アプリを完全に終了してから再起動する
- ❌ アプリ一覧に表示されない通信まで、アプリ設定だけで制御できるとは考えない
- ❌ VPN接続中に別のVPNアプリを同時起動しない
重要なのは、アプリ別ルーティングとドメイン別ルーティングを混同しないことです。アプリ別設定は、どのAndroidアプリの通信をVPNインターフェースへ渡すかを決めます。一方、ドメイン別ルールは、同じアプリから送られた通信でも、アクセス先のドメインやIPアドレスによって経路を分けます。高度なクライアントでは両方を組み合わせる場合がありますが、最初から複数の条件を追加すると原因を特定しにくくなります。
Androidクライアントごとの違い
AndroidのVPNクライアントには、サービス提供元の公式アプリ、汎用的な設定を読み込むクライアント、sing-boxなどのコアを利用するアプリがあります。サブスクリプションリンクを一度読み込めば接続できるクライアントでも、すべてがアプリ別ルーティングに対応しているとは限りません。対応状況は、アプリのバージョン、VPNモード、プロファイル形式によって変わります。
公式Androidクライアント
公式クライアントでは、接続画面や設定画面に「アプリ分割」「アプリルーティング」「VPNを使用するアプリ」などの項目が用意されていることがあります。表示名はクライアントによって異なります。設定項目が見つからない場合、Android本体の設定だけでなく、クライアント内の詳細設定、プロファイル編集画面、接続モードを確認してください。
サブスクリプションを導入した後にアプリを選択できる場合でも、選択内容がすべてのノードへ共通なのか、現在のプロファイルだけに保存されるのかは実装によって異なります。ノードを切り替えた後も設定が維持されるか確認し、切り替えのたびにアプリ一覧を見直すと安全です。
sing-box系・汎用クライアント
sing-box系のAndroidクライアントでは、AndroidのVPN機能を使うTUNモードと、アプリ内のルーティングルールを組み合わせる構成が一般的です。設定ファイルには、アプリのパッケージ名、UID、宛先ドメイン、IP、ルールセットなどが含まれる場合があります。単にプロキシノードを選んだだけでは、端末全体の通信が期待どおりに振り分けられないことがあります。
Clash系のAndroid互換クライアントでも、アプリの除外やルール設定を提供するものがあります。ただし、Clash Vergeは主にWindowsやmacOS向けのクライアントであり、Androidでは同じ画面や同じ設定ファイルをそのまま使えるとは限りません。ShadowrocketもiOS向けのクライアントとして知られているため、Android端末ではAndroid対応クライアントを選んでください。
Androidでアプリ別に設定する手順
ここでは、公式クライアントまたはアプリ別ルーティングに対応したAndroidクライアントを想定します。画面の名称や配置はアプリによって異なりますが、確認する順番は共通しています。設定を始める前に、必要なサブスクリプションリンクを安全な場所からコピーし、提供元が案内する使用教程も確認してください。
- プロファイルを導入する:クライアントを開き、サブスクリプションの追加、URLから追加、またはインポートに相当する項目を選びます。取得した設定にノード名、プロトコル、サーバー情報が表示されることを確認します。
- VPNモードを確認する:アプリ別の通信制御に対応したVPN、TUN、システムVPNなどのモードを選択します。単なるHTTPプロキシ設定では、プロキシを利用しないアプリの通信まで制御できません。
- ルーティング画面を開く:「アプリ管理」「分割トンネル」「アプリルール」「VPNアプリ」などの項目を探します。許可リストと除外リストのどちらが選ばれているかを先に確認します。
- 対象アプリを選ぶ:VPN経由にしたいアプリを許可リストへ追加するか、VPNから除外したいアプリを除外リストへ追加します。似た名前のアプリ、ブラウザー本体とWebView、仕事用プロファイルのアプリを取り違えないようにします。
- DNSとIPv6の設定を確認する:VPNに通すアプリだけでなく、名前解決をどの経路で行うかも確認します。DNSが通常経路のままだと、接続先の判定やアクセス結果が想定と違う場合があります。
- VPN接続を開始する:Androidが表示するVPN接続の許可ダイアログを確認し、接続後にクライアントの状態が接続済みになったことを確認します。
- アプリを再起動する:設定変更前に作られた接続が残ることがあるため、対象アプリを最近使ったアプリ一覧から終了し、改めて起動します。
Androidでは、一つのアプリが複数のプロセスや補助サービスを使うことがあります。たとえば、メインアプリはVPN経由でも、ログイン画面、通知サービス、ダウンロード処理が別のパッケージとして動作する場合があります。このとき、メインアプリだけを許可しても、ログインや通知が正常に動かない可能性があります。アプリの権限を無制限に追加するのではなく、まず問題が起きた機能と関連するパッケージを確認してください。
設定後に通信経路を確認する方法
設定が成功したかどうかは、VPNアイコンが表示されたかだけでは判断できません。VPNアイコンはVPNインターフェースが確立したことを示しますが、すべてのアプリがVPNを通っていることや、指定したアプリが正しい出口を使っていることまで証明するものではありません。対象アプリと対象外アプリを分けて確認しましょう。
- VPN経由に設定したブラウザーでIP検測を開き、公開出口IPと地域を確認する。
- VPNから除外したブラウザーや別の検証アプリで同じ確認を行い、経路が分かれているかを見る。
- 対象アプリでログイン、ページ表示、画像読み込み、ファイル取得など複数の通信を試す。
- 通知、バックグラウンド同期、アプリ内ブラウザーなど、メイン画面以外の機能も確認する。
- Wi-Fiからモバイルネットワークへ切り替えた後、VPNとアプリルールが維持されるか確認する。
検証時は、複数のVPNクライアントを同時に動かさないでください。Androidは通常、一台の端末でアクティブなVPNサービスを一つに制限します。別のクライアントを起動すると、先に動いていたVPNが停止したり、通知だけが残ったりすることがあります。ブラウザーに手動プロキシを設定している場合も、VPNアプリの動作と重なるため、テスト前に一時的に標準設定へ戻すと結果を読みやすくなります。
うまく動かない場合の見直しポイント
アプリ別設定が効かない場合は、最初からプロトコルやノードを大量に変更しないでください。まず、どの層で問題が起きているかを分けます。クライアントがVPNを確立できていないのか、アプリのルールが反映されていないのか、DNSだけが別経路なのかによって対処が異なります。
- ✅ AndroidのVPN許可ダイアログを拒否していないか確認する
- ✅ 許可リストと除外リストを取り違えていないか確認する
- ✅ 設定変更後に対象アプリを終了して再起動する
- ✅ バッテリー最適化でVPNクライアントが停止されていないか確認する
- ✅ 省電力機能、データセーバー、常時接続VPNの設定を確認する
- ✅ Androidの仕事用プロファイルや複製アプリを別アプリとして確認する
- ❌ 接続不良のたびにDNS、MTU、プロトコルを同時に変更しない
対象アプリだけ接続できない場合は、アプリがプロキシやVPNインターフェースを受け入れているか、IPv6通信が別経路へ出ていないか、アプリ内の地域・アカウント条件に問題がないかを確認します。反対に、除外したアプリまでVPN経由になる場合は、除外設定が現在のプロファイルへ保存されているか、別のVPNモードが有効になっていないかを確認してください。
通信が断続的に止まる場合は、Androidのバックグラウンド制限、Wi-Fiのスリープ、モバイル回線の切り替え、UDPの扱いを確認します。Shadowsocks、VMess、Trojan、Hysteria2、WireGuardなど、プロトコルが異なれば必要な通信方式やクライアントの対応も異なります。Hysteria2のようにUDPを利用する方式は、利用中のネットワークがUDPを制限すると接続に影響することがあります。プロトコル名だけで品質を決めず、同じアプリルールのまま別の対応ノードで比較してください。
最後に、VPN接続を切った状態、VPN接続中の状態、アプリを除外した状態を一つずつ記録します。ノード名、VPNモード、対象アプリ、DNS設定、発生した症状を残しておけば、サポートへ相談するときにも状況を説明しやすくなります。プライベートなサブスクリプションURLや認証情報は、ログやスクリーンショットに含めないよう注意してください。