AWS Client VPN で VPC を経由してインターネットへアクセスする
こんにちは、菊池です。
AWS Client VPNを検証していますが、いよいよ、このサービスの真骨頂とも言える、VPCを経由したインターネットアクセスを試します。
従来からある、Site to Site VPNやDirectConnectといった外部との接続サービスに対して、Client VPNだけがもつ最大の特徴が、VPC外へのアクセスが公式にサポートされているという点です。
上記のドキュメントにも記載の通り、Client VPNでは、VPC内のリソースだけではなく
- VGWを経由したオンプレミスリソース
- VPC Peeringを経由した他のVPC
- VPCエンドポイント
- IGWを経由したインターネットアクセス
が可能になっています。
Client VPN からのインターネットアクセス
それではやってみます。あらかじめ、Client VPN エンドポイントを作成し接続は可能にしておきます。以下の記事の通り、AD認証の設定を実施しました。
[AWS] Windows から Active Directory 認証を使って AWS Client VPN に接続する
その上で、以下の設定を行なっていきます。
- 関連付けるVPCサブネットをパブリックサブネットとする(Internet Gatewayへのルートをもつこと)
- Client VPNの認証設定にて宛先0.0.0.0/0へのアクセスを許可
- Client VPNのルートテーブルに宛先0.0.0.0/0を追加
1.についてはVPC接続先のVPCサブネットがインターネットに通信可能であれば問題ありません。
Client VPNの認証設定にて宛先0.0.0.0/0へのアクセスを許可
これは、VPN接続に対する、いわゆるファイアウォール設定のイメージです。Client VPNからのアウトバウンド通信に対し、どの宛先を許可するか設定する必要があります。
Client VPN エンドポイントを選択し、[認証]のタブから[受信の承認]を選びます。
許可する宛先を0.0.0.0/0とします。ADのグループ単位での制御も可能ですが、ここでは全てのユーザーに設定しました。
Client VPNのルートテーブルに宛先0.0.0.0/0を追加
続いて、ルートテーブルの設定です。Client VPN エンドポイントを選択し、[ルートテーブル]のタブから[ルートの作成]を選びます。
ここでも、0.0.0.0/0の宛先を追加します。
接続確認
以上で設定は完了です。クライアントPCでVPNを接続し、インターネットアクセスします。問題なければブラウザなどでインターネットに接続できるはずです。
CMANでアクセスしてるIPアドレスを確認すると、以下のように表示されました。
確かに、AWSを経由してインターネットにアクセスできています。で、このIPアドレスは一体何者だろう?と思いましたので、AWSアカウント内のリソースを確認したところ、見つけました。
VPN接続により、VPC内にネットワークインターフェース(ENI:Elastic Network Interface)が作成され、それを経由してVPC内や外部への通信を行なっているようです。パブリックIPも先ほど確認したものと一致していました。
つまり、Client VPNでVPCに接続し、インターネットへアクセスするときの経路は以下のようなイメージであることがわかりました。
まとめ
AWS Client VPNを使ったインターネットアクセスを試しました。
接続毎にENIを割り当て、VPC内のIPアドレスにSource NATして通信するというのが最大の特徴だと思います。これにより、従来のVPNやDXではできなかった、VPNを経由したVPC外のリソースへのアクセスが可能になっています。この特徴により、これまでは不可能だった様々なユースケースが実現可能になることでしょう。