定義と基本の考え方
スプリットトンネリングは、端末の通信のうち一部をVPNトンネル経由にし、残りをローカル(または別の経路)に流す方式です。VPNを「使う目的」(例:特定の通信だけ保護したい、帯域の使い方を最適化したい、ローカルネットワークへのアクセスは維持したい)と相性が良い一方で、VPNで守りたい範囲と守らない範囲の線引きが曖昧だと、意図しない通信が守られない状態になります。
重要なのは、スプリットトンネリングが「全部を守る」前提を崩す点です。設定したルールが想定通りに適用されているか、DNSや経路制御まで含めて確認する必要があります。
仕組みを理解するための簡単なモデル
直感的には、次の要素で挙動が決まります。
- 対象の決め方:どの通信をVPN経由にするか(アプリ、IP/サブネット、ドメイン、ポートなど)
- 除外の決め方:VPN経由にしない対象(ローカル宛、特定アドレス、例外ルール)
- 名前解決(DNS)の扱い:ドメインをどう解決し、その結果がどの経路に乗るか
- 経路の優先順位:複数ルールがある場合に、どれが勝つか
このモデルから分かるのは、「VPNトンネルに入るかどうか」だけでなく、「名前解決して得た接続先が結果としてどこに流れるか」がズレると、期待した保護にならないことがある点です。
重要な制限と“ズレ”が起きやすい領域
スプリットトンネリングでは、特に次の領域で想定外の挙動が起きやすくなります。
1) VPN外に出る通信
ルールが「一部の通信だけ」をVPNに渡す設計なので、守らない通信はVPNの外に出ます。ここで、守りたいはずの通信がルール外になっていると、保護されません。
2) DNSとキャッシュの影響
DNSは、通信の宛先を決める前段です。DNSをVPN経由にするか、ローカルで解決するか、さらに結果のキャッシュが残っているかで、同じドメインへのアクセスでも挙動が変わることがあります。そのため「VPNにしているはずなのに、どこに接続しているかが一致しない」という状況が起こり得ます。
3) 実装差(アプリ単位・経路単位など)
スプリットトンネリングは一般名ですが、実装はサービスやクライアントによって異なります。たとえば「アプリ単位で分ける」のか「宛先(IP/サブネット/ドメイン/ポート)で分ける」のかで、影響範囲が変わります。設定項目の意味を正確に読み取らないまま進めると、意図した通信が選別されない可能性があります。
4) 例外ルールと優先順位
除外(例外)を追加した場合、優先順位によっては「VPNに入れるはずの対象」が除外側に吸い込まれることがあります。逆に、除外を想定通りに効かせられない場合もあります。
実践的な確認方法(チェックポイント)
安全に運用するために、次の確認を“再現可能な手順”として用意すると安心です。
