AndroidのVPNスプリットトンネル設定|アプリ別に通信を振り分ける
AndroidのVPNをすべての通信に適用すると、速度低下やアプリの接続エラーが起きることがあります。スプリットトンネルを使い、VPNを使うアプリと通常接続にするアプリを分ける手順を、確認方法と復旧策まで紹介します。
Androidのスプリットトンネルとは:アプリごとに経路を分ける仕組み
AndroidのVPNを有効にすると、端末上の通信を仮想的なVPNインターフェースへ集約し、選択したノードやプロトコルを経由して外部へ送信できます。ただし、すべてのアプリを同じ経路に通す必要があるとは限りません。スプリットトンネルは、VPNを使うアプリと、通常のモバイル通信やWi-Fiへ直接接続するアプリを分ける機能です。たとえば、特定のブラウザや業務アプリだけをVPN経由にし、動画の自動更新、銀行アプリ、家庭内機器の操作などは直接接続にする、といった構成ができます。
この機能を使うと、VPN経由にする通信量を抑えられるため、不要なアプリまで遠い出口を通して速度を落とす状況を避けやすくなります。一方で、対象アプリの選び方を誤ると、ログインだけが失敗したり、同じサービスの一部機能が別の経路へ分かれたりします。スプリットトンネルは「VPNをオンにすれば自動的に安全になる」機能ではなく、アプリ単位のルーティングポリシーを明示的に決める機能として理解してください。
| 方式 | 基本的な動作 | 向いている場面 | 注意点 |
|---|---|---|---|
| 除外リスト | 通常はVPN経由にし、指定したアプリだけ直接接続にする | 大半の通信をVPNへ送る場合 | 新しくインストールしたアプリがVPN経由になる可能性がある |
| 許可リスト | 指定したアプリだけVPN経由にし、それ以外は直接接続にする | 対象アプリを限定して運用したい場合 | 関連アプリや補助サービスを選び忘れると動作が不完全になる |
| ルールベース | アプリ、ドメイン、IP、地域などの条件で経路を分ける | 細かい通信ポリシーを管理したい場合 | ルールの優先順位、DNS、最終ルールの確認が必要になる |
Androidクライアントとプロトコルの違いを先に確認する
Androidでアプリ別設定を行う場合、まず利用するクライアントがスプリットトンネルに対応しているかを確認します。サービスの公式Androidクライアントには、接続画面の詳細設定としてアプリ選択を用意しているものがあります。互換クライアントでは、サブスクリプションリンクを読み込んだ後に、プロファイルやルール画面でアプリの分流を設定する構成が一般的です。クライアントがAndroidのVPNサービス権限を使っているのか、単にシステムプロキシを設定しているのかによって、対象にできる通信範囲も変わります。
Shadowsocks、VMess、Trojan、Hysteria2、WireGuardは、それぞれ認証、暗号化、転送、ルーティングの実装が異なるプロトコルです。プロトコル名だけでアプリ別設定の動作が決まるわけではなく、実際にはクライアントのAndroid実装とTUNモードの対応が重要です。たとえば、ローカルプロキシだけを使う構成では、システムプロキシに従わないアプリや独自のネットワークスタックを持つアプリが対象外になることがあります。TUNモードではより広範な通信を扱える一方、AndroidのVPN権限、DNS処理、バッテリー制限、他のVPNアプリとの競合を確認しなければなりません。
アプリ分流の前に確認したい項目
- 設定の単位:アプリ本体だけを選ぶのか、同じサービスの補助アプリやWebViewも別に選ぶ必要があるのかを確認します。
- 除外の意味:チェックを入れたアプリがVPN経由になるのか、逆にVPNから除外されるのか、説明文を読んで判断します。
- DNSの扱い:アプリの通信だけでなく、名前解決もVPN側で行うのか、端末のプライベートDNSが優先されるのかを確認します。
- ローカルネットワーク:プリンター、NAS、スマート家電を使う場合、LANアクセスを許可する設定が必要になることがあります。
- 他のVPNとの競合:広告ブロッカー、セキュリティアプリ、仕事用プロファイルがVPNサービスを使用していないか確認します。
Androidの設定画面に表示されるVPN接続の許可ダイアログは、クライアントが端末の通信をVPNインターフェースへ渡すためのものです。許可しただけで、選択した出口が正しく機能していることや、すべてのアプリが同じ経路を使うことが証明されるわけではありません。接続方式とアプリ別ルールを保存した後、実際の対象アプリで確認する必要があります。
実際の設定手順:対象アプリを選んで接続を確認する
以下は、公式Androidクライアントまたは互換クライアントで共通しやすい流れです。画面名やボタンの位置はアプリのバージョンによって異なるため、表示される項目の意味を優先してください。サブスクリプションリンクを利用する場合は、アカウントに紐づく認証情報として扱い、第三者の変換サイトや公開掲示板へ貼り付けないことが大切です。
- 公式の配布元からAndroidクライアントをインストールし、アプリを起動します。
- サービスの案内に従ってサブスクリプションリンクを追加し、設定一覧を更新します。リンクを通常のブラウザで開くのではなく、クライアントの「URLから追加」「購読を追加」などの項目を使います。
- 利用するプロファイルとノードを選び、まずは分流を設定しない状態で接続できることを確認します。
- 「ルーティング」「アプリ設定」「アプリ分流」「VPNを使用するアプリ」などの画面を開き、許可リストまたは除外リストを選択します。
- VPN経由にしたいアプリを選びます。関連するログインアプリ、ブラウザ、ファイル転送アプリなどが別パッケージになっている場合は、必要性を個別に判断します。
- 設定を保存し、Androidが表示するVPN接続の許可を承認します。すでに別のVPNが動いている場合は、先に切断して競合を避けます。
- VPNへ通すアプリと、直接接続にするアプリをそれぞれ起動し、通信できることを確認します。バックグラウンドに残った古い接続を避けるため、テスト前に対象アプリを終了して再起動します。
- 問題がなければ、設定名や対象アプリを記録します。更新後にルールが初期化された場合に、同じ構成へ戻しやすくなります。
許可リストと除外リストを取り違えないためのテスト
設定後は、VPNクライアントの表示だけで判断しないでください。VPN経由にしたブラウザで信頼できるIP確認ページを開き、接続前後の公開IPやネットワークの所属が変化するかを確認します。直接接続にしたアプリでは、同じ確認方法を使って経路が意図どおり異なるかを比較します。IPデータベースの地域表示には遅れや誤差があるため、都市名だけで結論を出さず、アドレスと接続前後の差を重視します。
アプリによっては、通信本体と名前解決、ログイン、通知、メディア配信を異なるドメインへ送ります。そのため、メイン画面が表示されたからといって、すべての機能が同じ経路を通ったとは限りません。ログイン、検索、画像読み込み、ファイル送信など、普段使う操作をいくつか試し、必要ならDNS確認も行います。
設定後の確認方法と、接続エラーが起きたときの切り分け
スプリットトンネルの検証では、アプリが起動したかだけでなく、どの経路を使ったかを確認します。対象アプリを一つずつテストし、VPN接続前、VPN接続後、アプリを分流した後の結果を分けて記録してください。同時に複数の設定を変更すると、原因の特定が難しくなります。まずアプリ分流を無効にして全体をVPN経由にし、それで動作するか確認すると、ノードやプロトコルの問題と分流ルールの問題を分離できます。
| 症状 | 考えられる原因 | 確認と対処 |
|---|---|---|
| 対象アプリだけ接続できない | 許可リストの選択漏れ、DNSの不一致、アプリ側の接続制限 | 一時的に全体VPNへ切り替え、動作するなら関連アプリとDNS設定を確認する |
| 直接接続にしたアプリも遅い | アプリが実際にはVPN経由、端末のネットワーク自体が混雑、バックグラウンド処理 | 分流ルール、Wi-Fi、モバイルデータ、同期処理を順に確認する |
| 家庭内機器へ接続できない | LANアクセスがVPNへ送られている、ローカルネットワーク許可が無効 | ローカルネットワークを許可する設定、LAN宛先の除外ルールを確認する |
| 通知やバックグラウンド同期が遅れる | Androidの電池最適化、バックグラウンド制限、VPN再接続 | クライアントを電池最適化の対象外にし、接続ログと再接続状態を確認する |
| 設定後に通信全体が止まる | VPN権限の競合、破損したプロファイル、無効なルール | VPNを切断し、プロファイルを再読み込みしてから、最小構成で再設定する |
特定のアプリだけが失敗する場合は、アプリ本体ではなく、認証用WebView、通知サービス、外部ブラウザ、ファイル選択画面などが別の通信を行っていないかを確認します。ただし、システムコンポーネントを無制限に追加すると、ルールの意味が分かりにくくなります。必要なものを一つずつ追加し、追加するたびにログインや読み込みを再確認する方法が安全です。
VPN接続そのものが不安定な場合は、分流の調整より先に、別のノード、別のプロトコル、別のネットワークで基本接続を確認します。ShadowsocksやVMessなどのプロファイルを変更した場合は、同じ名前の古い設定が残っていないかも確認してください。接続が頻繁に切れると、アプリごとの経路差ではなく、再接続時のDNSやルート更新が原因に見えることがあります。
プライバシーと復旧のために、設定をシンプルに保つ
スプリットトンネルでは、VPN経由のアプリと直接接続のアプリが同じ端末上で動作します。直接接続にしたアプリの通信は、VPNの出口やVPN側のDNSポリシーを通らない可能性があります。したがって、公共Wi-Fiなど信頼性の低いネットワークで使用するアプリを直接接続へ入れる場合は、そのアプリが扱う情報と接続先を考慮してください。経路を分けることで速度や互換性が改善する一方、すべてのアプリに同じ接続特性を適用できるわけではありません。
設定を複雑にしすぎないため、最初は対象アプリを少数に限定し、必要になった場合だけ追加します。アプリのアップデート後は、パッケージ構成や通信方式が変わってルールの挙動が変わることがあります。接続できなくなったときは、すぐに大量のルールを追加するのではなく、次の順番で戻します。
- VPNを切断し、AndroidのVPN設定に残った別の接続を停止します。
- クライアントの分流を一時的に無効にし、全体VPNで対象アプリを確認します。
- 全体VPNで動作する場合は、許可リストまたは除外リストを初期化します。
- 対象アプリを一つだけ登録し、接続、DNS、ログインの順にテストします。
- 必要に応じてLANアクセス、プライベートDNS、Androidの電池最適化を個別に確認します。
Androidのスプリットトンネルは、すべての通信を一括して別経路へ送る機能ではなく、用途に応じて接続経路を整理するための設定です。まず基本接続を確認し、許可リストか除外リストかを理解し、対象アプリごとに実測してください。GreenVPNではWindows、macOS、iOS、Android、Linuxに対応し、90+か国、200+回線から利用環境に合う接続先を選べます。Androidでの導入手順やクライアントの確認は、使用指南を見るから確認できます。
アプリ別に選べる接続環境
90+か国、200+回線に対応。Androidを含む複数のプラットフォームで利用できます。
実際の用途から国際回線を選ぶ
まず出口、DNS、分流経路を確認し、そのうえで複数の回線について継続転送とアプリのテストを行います。