AWS Client VPNでスプリットトンネルを有効にしてみる

2020.05.16

こんにちは!恩塚です。

スプリットトンネルとは?

VPN接続をしているときにインターネット通信等はトンネルを介さずに通常通りクライアントのPCから通信させるようにすること。

例えばVPC上のサーバにVPN接続でアクセスさせたときにそのままインターネットにも繋ぐことができるとどうでしょうか?動画サイトなどにアクセスしてトラフィックコストがどんどん増加してしまうリスクがあります。

やってみた

今回はAD認証は使わずに相互認証だけでやりました。以下の手順を実施すると簡単に証明書を発行・登録できます。(本記事では割愛)

クライアント認証と認可

まずは検証用のVPCを作成します。

サブネットを作成します。こちらのルートテーブルには画像のようにインターネットゲートウェイを設定しておきます。(パブリックサブネット)

作成したサブネット上にwebサーバーをたてておきます。今回はnginxをインストールして起動しておきました。

Clientエンドポイントを作成する際ですがVPCのCIDRと被らないように注意してください!次の手順に沿って設定します。

クライアント VPN の開始方法

登録済みの証明書をここで選択します。

スプリットトンネルはデフォルトでは無効になっているので一旦このままにしておきます。

エンドポイントを作成したらサブネットに関連づけます。

その後、次の記事を参考にエンドポイントの「認証」と「ルートテーブル」を設定するとインターネットにVPCから接続する準備が完了します。

AWS Client VPN で VPC を経由してインターネットへアクセスする

「ステップ 7: クライアント VPN エンドポイントに接続する」まで実施しVPN接続を開始した状態にします。

http://checkip.amazonaws.com

に接続してIPを確認します。

なんだか見慣れないIPが!マネジメントコンソールから確認してみると

ネットワークインターフェースのIPでしたので確かにVPC経由でインターネットに接続されてそうです。試しにYouTubeを開いてみるとちゃんと表示されます。

VPC上のwebサーバーにも接続してみます。プライベートIPを入力します。

確認できました!

ということで下記の状態であることで確認できました。

前置きが長くなりましたがやっとスプリットトンネルを有効にしてみます。

VPN接続を切った後にクライアントVPNエンドポイントの設定を変更します。

VPN接続して再度IPを確認してみます。

見慣れた自宅環境のIPになってます!

そしてVPC上のwebサーバーに接続してみると変わらずにプライベートIPで表示できました。

次の図のようにスプリットトンネルが有効になってることが確認できました!

まとめ

会社ごとのポリシーによるとは思いますが基本的にはスプリットトンネルは有効にしておくのが良いと思いました!

またブラウザにプロキシ設定がされてたりすると意図しない挙動になる可能性があるのでご注意ください。