AWS clientVPN 分割トンネル(split-tunnel)とは何か
AWS Client_vpnで分割トンネル(split-tunnel)と言う設定項目があったのですが
ドキュメントを読んだだけだと動作がよく分からなかったので調べてみました。
AWS Client VPN エンドポイントの分割トンネル - AWS Client VPN
デフォルトでは、AWS Client VPN エンドポイントがある場合、すべてのクライアントトラフィックは AWS Client VPN トンネル経由でルーティングされます。AWS Client VPN エンドポイントで分割トンネルを有効にすると、AWS Client VPN エンドポイントルートテーブル上のルートが AWS Client VPN に接続されているデバイスにプッシュされます。
構成図
上記構成を例に、有効時、無効時の動きを試してみました。
・ClientVPNで0.0.0.0/0のルーティングを設定済み
・クライアントではインターネットアウト(0.0.0.0/0)のルーティングを持つ
Your PCの部分は、自宅のPCとかだとお考えください。
split-tunnel無効時
下記2つが存在する場合、(1)が優先されます。
上図の構成例では、インターネット(0.0.0.0/0)への経路が重複します。
split-tunnel無効時には(1)が優先され
下記の赤線経路でインターネットへアクセスが行われます。
(1)ClientVPNで設定したルートテーブル
(2)接続クライアントが持つルートテーブル
split-tunnel無効時に、ClientVPNに接続したPCのnetstat結果は下記です。
defaultのルートに上書きして172.25.0.1宛てのルートがあることが分かります。
netstat -r Routing tables Internet: Destination Gateway Flags Netif Expire 0/1 172.25.0.1 UGSc utun2 default 192.168.10.1 UGSc en0
split-tunnel有効時
下記2つが存在する場合、(2)が優先されます。
上図の構成例では、インターネット(0.0.0.0/0)への経路が重複します。
split-tunnel有効時には(2)が優先され
下記の赤線経路でインターネットへアクセスが行われます。
(1)ClientVPNで設定したルートテーブル
(2)接続クライアントが持つルートテーブル
split-tunnel有効時に、ClientVPNに接続したPCのnetstat結果は下記です。
上記と比較し、default(192.168.10.1)となっていることが分かります。
netstat -r Routing tables Internet: Destination Gateway Flags Netif Expire default 192.168.10.1 UGSc en0 172.25/27 172.25.0.2 UGSc utun2
何が良いのか
では、分割トンネル(split-tunnel)を有効化しておく利点は
無駄な通信を発生させずに済むところです。
利用者観点では下記です。
・無駄にAWSのNW利用料が発生しない(低コスト)
・無駄なNetworkを経由しない(速度)
ただ、会社の規約等で通信経路を統一させる必要がある場合や、
ルーティングを強制させたい場合は無効化させておく必要がありそうです。
個人的な考えとしては、特に要件が厳しくなければ有効化させた方が良いと思います。