今回は複数のVPCをハブ&スポーク型のネットワーク構成にし、VPC間のルーティングを可能とするAWSのソリューション「Transit VPC」を紹介します。
Transit VPCとは?
Transit VPCとは、ハブとなるVPCにCisco CSR 1000v(Juniper vSRXも可)を配置し、スポークとなるVPCのVGWとVPN接続して、ハブ&スポーク型のネットワークを構築するソリューションです。
従来VPC間の接続はVPC Peeringがありましたが、これはVPCをまたいだルーティングができないため、通信するVPCは直接Peeringする必要があり、複数のVPCの場合、構成が非常に複雑になる欠点がありました。
一方Transit VPCは、VGWとCSR間でダイナミックルーティングを回し、CSRがハブとして各スポークのVPCにルーティングできるため、ハブ&スポークで構成をシンプルにすることができます。また、VPCのほかにもDirectConnectやオンプレとのVPN、他クラウドサービスとのVPN接続も含めたハブ&スポーク構成が可能です。
Transit VPCの機能
まずはじめに注意しておきたいのが、Transit VPCはVGWのようなAWSのマネージドサービスではなく、CSR等の仮想ルータのインスタンスとAWS Lambda等の複数のサービスをCloud Formationでテンプレート化したパッケージ製品ようなイメージです。なので、CSRはユーザー側に運用保守する責任があります。
Transit VPCの主な構成要素は以下の4つです。
・CSR100v×2台
・VGW Poller(Lambda Function)
・Amazon S3 backet
・Cisco Configurator(Lambda Function)
まず、AWSのガイドに用意されたテンプレートを使用してスタックを作成すると、新規VPCもしくは既存VPC内にCSR1000vが構築、S3バケットが作成され、2つのLambda Functionの自動実行設定が行われます。
そして、以下の順序で自動的にネットワークを構成していきます。
[1]
1分間おきにCloudWatch EventがVGW Pollerを実行し、自アカウント内で特定のタグがついており、かつVPN接続していないVGWを探索します。
[2]
対象のVGWが見つかると、CSRとVPNを張るためのカスタマゲートウェイの設定を自動で行い、その設定情報をS3バケットに保存します。
[3]
S3バケットのイベント通知でCisco Configuratorを実行させ、VPN接続に必要な情報を取得・生成します。
[4]
生成したconfigをCisco ConfiguratorがSSH経由でCSRに設定します。
[5]
上記の設定が終わると、自動的にVPNトンネルがUpし、スポークVPC側とBGPで経路交換が行われます。
参考
今回参考にしたのは、こちらの内容です。
https://docs.aws.amazon.com/ja_jp/solutions/latest/cisco-based-transit-vpc/welcome.html/
ちなみに
つい先日のRe:Invent2018でTransit GatewayというTransit VPCに似たマネージドサービスが発表されました。VPNが必須という要件がなければ、自身でインスタンスを運用保守する必要がないため、Transit Gatewayを使用するほうが適切かもしれません。