こんにちは、技術1課の小倉です。
先日、AWS Client VPNのブログを書いたのですが、このときにVPN接続をしたあとにクライアントからインターネットに接続できなくなって不便だなと感じていたのですが、クライアントからVPCを経由せずにインターネット接続する方法がありました。
AWS Client VPNでSAMLによるフェデレーション認証ができるようになりました!
デフォルトでは、VPN接続をすると宛先がクライアントVPNエンドポイントのデフォルトルートがクライアントで設定されます。そのため、すべての通信がクライアントVPNエンドポイントあてに通信するようになります。このデフォルトルートを入れないようにするためには、クライアントVPNエンドポイントを作成するときに スプリットトンネルを有効にする にチェックを入れる、たったこれだけです。
既存設定であれば、対象のクライアントVPNの設定を選択し、[アクション] – [クライアントVPNエンドポイントの変更] をクリックし、変更することができます。
クライアントのルートテーブルの比較
スプリットトンネルの設定ありなしでクライアントのルートテーブルを比較します。先頭に★がついているルートが注目すべきルートです。
VPN接続前
VPN接続前のルートテーブルです。余計なものがたくさんありますが、前後の比較ということで、すべてを記載します。デフォルトルートがインターネットに向いています。
>netstat -nr ~省略~ IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック ★ 0.0.0.0 0.0.0.0 192.168.86.1 192.168.86.22 40 18.177.91.48 255.255.255.255 192.168.0.1 192.168.86.22 20 18.177.91.48 255.255.255.255 192.168.86.1 192.168.86.22 20 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 331 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 175.41.206.125 255.255.255.255 192.168.0.1 192.168.86.22 20 192.168.56.0 255.255.255.0 リンク上 192.168.56.1 281 192.168.56.1 255.255.255.255 リンク上 192.168.56.1 281 192.168.56.255 255.255.255.255 リンク上 192.168.56.1 281 192.168.86.0 255.255.255.0 リンク上 192.168.86.22 276 192.168.86.22 255.255.255.255 リンク上 192.168.86.22 276 192.168.86.255 255.255.255.255 リンク上 192.168.86.22 276 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 331 224.0.0.0 240.0.0.0 リンク上 192.168.56.1 281 224.0.0.0 240.0.0.0 リンク上 192.168.86.22 276 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 255.255.255.255 255.255.255.255 リンク上 192.168.56.1 281 255.255.255.255 255.255.255.255 リンク上 192.168.86.22 276 =========================================================================== 固定ルート: なし ~省略~
VPN接続後(スプリットトンネル無効)
スプリットトンネルを無効(デフォルト)の場合、クライアントVPNエンドポイント向けのデフォルルート(10.200.0.130あて)が追加されます。追加されたルートのネットマスクは128.0.0.0で、ロンゲストマッチに従い、追加された方のルートが優先されます。これはメトリックを下げてもロンゲストマッチが優先されるので変わりません。
>netstat -nr ~省略~ IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック 0.0.0.0 0.0.0.0 192.168.86.1 192.168.86.22 40 ★ 0.0.0.0 128.0.0.0 10.200.0.129 10.200.0.130 25 10.200.0.128 255.255.255.224 リンク上 10.200.0.130 281 10.200.0.130 255.255.255.255 リンク上 10.200.0.130 281 10.200.0.159 255.255.255.255 リンク上 10.200.0.130 281 18.177.91.48 255.255.255.255 192.168.0.1 192.168.86.22 20 18.177.91.48 255.255.255.255 192.168.86.1 192.168.86.22 20 18.178.252.187 255.255.255.255 192.168.86.1 192.168.86.22 20 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 331 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 128.0.0.0 128.0.0.0 10.200.0.129 10.200.0.130 25 175.41.206.125 255.255.255.255 192.168.0.1 192.168.86.22 20 192.168.56.0 255.255.255.0 リンク上 192.168.56.1 281 192.168.56.1 255.255.255.255 リンク上 192.168.56.1 281 192.168.56.255 255.255.255.255 リンク上 192.168.56.1 281 192.168.86.0 255.255.255.0 リンク上 192.168.86.22 276 192.168.86.22 255.255.255.255 リンク上 192.168.86.22 276 192.168.86.255 255.255.255.255 リンク上 192.168.86.22 276 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 331 224.0.0.0 240.0.0.0 リンク上 192.168.56.1 281 224.0.0.0 240.0.0.0 リンク上 192.168.86.22 276 224.0.0.0 240.0.0.0 リンク上 10.200.0.130 281 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 255.255.255.255 255.255.255.255 リンク上 192.168.56.1 281 255.255.255.255 255.255.255.255 リンク上 192.168.86.22 276 255.255.255.255 255.255.255.255 リンク上 10.200.0.130 281 =========================================================================== 固定ルート: なし ~省略~
VPN接続後(スプリットトンネル有効)
スプリットトンネルが有効な場合は、デフォルトルートが入らず必要なVPN接続に必要なルートが個別で登録されます(VPNを経由して接続するアドレスは172.31.0.0/16)。そのため、AWSへの通信はVPN経由、その他の通信はインターネットへ直接通信できます。
>netstat -nr ~省略~ IPv4 ルート テーブル =========================================================================== アクティブ ルート: ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック ★ 0.0.0.0 0.0.0.0 192.168.86.1 192.168.86.22 40 10.200.0.128 255.255.255.224 リンク上 10.200.0.130 281 10.200.0.130 255.255.255.255 リンク上 10.200.0.130 281 10.200.0.159 255.255.255.255 リンク上 10.200.0.130 281 18.178.252.187 255.255.255.255 192.168.86.1 192.168.86.22 20 127.0.0.0 255.0.0.0 リンク上 127.0.0.1 331 127.0.0.1 255.255.255.255 リンク上 127.0.0.1 331 127.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 ★ 172.31.0.0 255.255.0.0 10.200.0.129 10.200.0.130 25 192.168.56.0 255.255.255.0 リンク上 192.168.56.1 281 192.168.56.1 255.255.255.255 リンク上 192.168.56.1 281 192.168.56.255 255.255.255.255 リンク上 192.168.56.1 281 192.168.86.0 255.255.255.0 リンク上 192.168.86.22 276 192.168.86.22 255.255.255.255 リンク上 192.168.86.22 276 192.168.86.255 255.255.255.255 リンク上 192.168.86.22 276 224.0.0.0 240.0.0.0 リンク上 127.0.0.1 331 224.0.0.0 240.0.0.0 リンク上 192.168.56.1 281 224.0.0.0 240.0.0.0 リンク上 192.168.86.22 276 224.0.0.0 240.0.0.0 リンク上 10.200.0.130 281 255.255.255.255 255.255.255.255 リンク上 127.0.0.1 331 255.255.255.255 255.255.255.255 リンク上 192.168.56.1 281 255.255.255.255 255.255.255.255 リンク上 192.168.86.22 276 255.255.255.255 255.255.255.255 リンク上 10.200.0.130 281 =========================================================================== 固定ルート: なし ~省略~
まとめ
AWS Client VPNを利用してもスプリットトンネルの設定を有効にすることで、クライアントからVPCを経由せずにインターネットに接続できます。もしインターネットに接続するためにVPCを経由して通信しているのであれば、スプリットトンネルを使ったほうが不要な通信がAWS内に流れなくなりますので、設定することをおすすめします。