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

2019.05.29

こんにちは、菊池です。

AWS Client VPNを検証していますが、いよいよ、このサービスの真骨頂とも言える、VPCを経由したインターネットアクセスを試します。

従来からある、Site to Site VPNやDirectConnectといった外部との接続サービスに対して、Client VPNだけがもつ最大の特徴が、VPC外へのアクセスが公式にサポートされているという点です。

AWS Client VPN の詳細

上記のドキュメントにも記載の通り、Client VPNでは、VPC内のリソースだけではなく

  • VGWを経由したオンプレミスリソース
  • VPC Peeringを経由した他のVPC
  • VPCエンドポイント
  • IGWを経由したインターネットアクセス

が可能になっています。

Client VPN からのインターネットアクセス

それではやってみます。あらかじめ、Client VPN エンドポイントを作成し接続は可能にしておきます。以下の記事の通り、AD認証の設定を実施しました。

[AWS] Windows から Active Directory 認証を使って AWS Client VPN に接続する

その上で、以下の設定を行なっていきます。

  1. 関連付けるVPCサブネットをパブリックサブネットとする(Internet Gatewayへのルートをもつこと)
  2. Client VPNの認証設定にて宛先0.0.0.0/0へのアクセスを許可
  3. 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外のリソースへのアクセスが可能になっています。この特徴により、これまでは不可能だった様々なユースケースが実現可能になることでしょう。