[AWS] Client VPN環境を作るためのCloudFormationを書いてみた

ClientVPN環境をさくっと作成するためのCloudFormationを作成してみました。
また、ルートテーブルを追加したいケースに対応できるように、別途追加のテンプレートも載せています。

今回は前回の記事のように相互認証を採用したVPN接続となります。
事前準備さえ済んでいればCloudFormationを実行するだけで環境が揃うので、是非とも活用してみてください。

◆Github (テンプレートはこちら)
https://github.com/noname-work/aws-cloudformation/tree/master/client-vpn

VPNエンドポイント作成時のパラメータ

パラメータ
ServerCertificateARN 相互認証の作成時に生成したサーバ証明書のARN
ClientCertificateARN 相互認証の作成時に生成したクライアント証明書のARN
ClientCIDR VPNで利用するCIDR。これはVPCと被らない範囲で指定する必要がある。
VPCID 紐付けるVPCのIDをプルダウンから選択する。
SubnetID1 紐付けるサブネットのIDをプルダウンから選択する。
SubnetID2 紐付けるサブネットのIDをプルダウンから選択する。サブネットの数に応じて課金が発生するので、不要な場合はテンプレートを編集してこの項目と関連する部分をコメントアウトする。

VPNプロファイルの編集


VPNプロファイルをクライアントソフトウェアに読み込ませることでVPN接続が実現できますが、今回は相互認証のためプロファイル内に認証情報を埋め込む必要があります。


上記の画像のように認証情報を追加して保存してください。


専用のソフトウェアからVPN接続ができることを確認してください。

◆AWS Client VPN ダウンロード
https://aws.amazon.com/jp/vpn/client-vpn-download/

ルートテーブルの追加

パラメータ
AccessRange1 ルートテーブルに追加するルーティング先を指定する。パブリックなIPに対しても可能だが、0.0.0.0/0はデフォルトで無効にしている。
SubnetID1 AccessRange1と紐付けるサブネットのIDを指定する。
AccessRange2 ルートテーブルに追加するルーティング先を指定する。不要であればテンプレートを編集してこの項目と関連する部分をコメントアウトする。
SubnetID2 AccessRange1と紐付けるサブネットのIDを指定する。不要であればテンプレートを編集してこの項目と関連する部分をコメントアウトする。


CloudFormation実行後、設定通りルートテーブルが更新されていることを確認してください。

今回の仕様


今回のClientVPNでは相互認証による接続設定となっています。

スプリットトンネルを有効にしているため、0.0.0.0/0のような設定は無効になっています。
制御されたIPレンジへアクセスする場合のみVPNを経由し、それ以外の接続にはクライアント側のPCから直接アクセスされます。

今回はインバウンドの設定されていないセキュリティグループを紐づけています。
これは他のセキュリティグループのインバウンドにVPNからのアクセスを追加しやすくするためです。
(ClientVPNのセキュリティグループIDを許可すれば良いので楽)

CloudWatchLogsへ接続時のログも出力されるため、どこから接続があったのか知ることができます。
なお、ログの保存期間は1年間です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)