目次
BeeXの榊原です。今回はClient VPN、Transit Gateway(以下TGW)を初めて触った自分の備忘として、ClientからInstanceまでpingで疎通させる所まで記事化しました。リージョンは東京で、単一アベイラビリティゾーン想定です。また、Client VPNの認証は相互認証(証明書ベース)を用います。パラメータをまとめた構成図と注意点は以下の通りです。
なお、本記事ではVPC/サブネット/ルートテーブル/EC2/セキュリティグループの構築手順、ACMへの証明書の取り込み手順は省き、下の画像の構成から解説します。なお、Client VPNで用いる証明書の作成方法やACMへの取り込み手順はこちらを参考にしてください。
構築手順
TGW関連リソースの手順
TGWを作成します。名前は任意の値、ASNは64512としています。
画像の赤枠以外はデフォルトの値です。
次にTGWアタッチメントを作成します。名前は任意の値、サブネットはTGWアタッチメント用に作成したものを選択します。画像の赤枠以外はデフォルトの値です。
アタッチメントはもう1度作成します。TGWのルートテーブルについてはアタッチメントを作成した時点で紐づけられるので編集の必要はありません。要件により、細かく通信制御したい場合、別でルートテーブルを作成してサブネットに関連付けましょう。
アタッチメントの状態が「Available」になったら、各サブネットのルートテーブルにTGWアタッチメントへのルートを忘れずに追加しましょう。
クライアントVPNエンドポイント関連の手順
AWSコンソール画面のVPCからクライアントVPNエンドポイントを作成します。認証情報は冒頭述べた通り、相互認証を利用します。ここで冒頭と被りますがいくつか注意点があるので列挙します。より詳しく知りたい方はAWSの公式ドキュメントや公式ハンズオンの注記をご参照下さい。
・クライアントCIDRは/12~/22間でCIDRを切る必要があり、後から編集不可です。
・クライアントCIDRはClient VPNに同時接続する数の2倍の範囲を確保しましょう。例えば同時接続数が500の場合であれば/22(IPアドレス数:1024)で確保します。
・Clientのネットワーク、クライアントCIDR、VPC CIDRのアドレスはそれぞれ重複しないように設計しましょう。
・事前に同一VPC内からの通信を許可するセキュリティグループを作成しましょう。デフォルトのセキュリティグループを編集してもOKです。
クライアントVPNエンドポイントの作成が完了したら、ターゲットネットワークの関連付けを行います。このとき、関連付けの完了まで5分ほどかかりました。
次に承認ルールを追加します。ここでアクセスを有効にする送信先ネットワークには、VPNエンドポイントが存在するVPCと送信先EC2インスタンスのCIDRを追加します。一括では追加できないので2回に分けて追加します。
個人的にここが一番の詰まりポイントでした。ここでクライアントVPNエンドポイントのルートテーブルを編集します。これはサブネットにアタッチされるルートテーブルとは異なりますのでご注意ください。自分はここでかなり時間を食いました。ここで接続したいEC2インスタンスが存在するVPCへのルートをクライアントVPNエンドポイントのルートテーブルに追加します。もう一度書きますが、サブネットのルートテーブルではなくクライアントVPNエンドポイントのルートテーブルをここでは編集しています。
ターゲットネットワークの関連付け、承認ルール、追加したルート、クライアントVPNエンドポイントの状態がグリーンになれば完了です。
Clientからの接続
AWS VPN Clientを用いてVPN接続しますが、詳細は割愛します。手順はこちらをご参照ください。VPN接続後にEC2にpingを飛ばしてみましょう。下のように表示されれば完了です。
まとめ
今回はClient VPNを用いて、TGWを跨ぎつつ先のネットワークのEC2インスタンスと疎通を取る方法についてまとめました。この記事が皆様の参考になれば幸いです。