私の戦闘力は53万です

awsとgcpについて書きます

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 に接続されているデバイスにプッシュされます。

構成図

f:id:remmemento:20200502024036p:plain
Sample

上記構成を例に、有効時、無効時の動きを試してみました。
・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)接続クライアントが持つルートテーブル

f:id:remmemento:20200502024121p:plain
split-tunnel無効時

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)接続クライアントが持つルートテーブル


f:id:remmemento:20200502024157p:plain
split-tunnel有効時

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を経由しない(速度)

ただ、会社の規約等で通信経路を統一させる必要がある場合や、
ルーティングを強制させたい場合は無効化させておく必要がありそうです。

個人的な考えとしては、特に要件が厳しくなければ有効化させた方が良いと思います。