IPv6対応のVPCをCloudFormationで作成してみた

はじめに

AWSチームのすずきです。

2017年7月に東京リージョンのVPCでも利用可能となったIPv6。

CloudFormationを利用して設置する機会がありましたので、紹介させて頂きます。

Amazon EC2とVPCがIPv6に対応しました #reinvent

構成図

  • Frontend、Application、Datastoreの3区分、Multi-AZ構成の6サブネットで構成されたVPCを作成します。

IPv6

  • FrontendSubnetは、Internet Gatewayを利用します
  • ApplicationSubunetは、受信トラフィックをブロックし送信トラフィックのみを許可するEgress-Only Internet Gateway を利用する設定としました。

ipv6-validation-vpc-02

IPv4

  • FrontendSubnetは、Internet Gatewayを利用します
  • ApplicationSubunet は、受信トラフィックのブロックはセキュリティグループで実現する前提でInternet Gatewayを利用します。
  • NAT Gateway の導入に備え、S3用のVPCエンドポイントのみ用意しました。

ipv6-validation-vpc-01

CloudFormation テンプレート

  • IPv6対応のVPCとセキュリティグループを設置します
  • SSHの接続許可は、JPNE IPV6インターネット接続の割当範囲で設定しました。

ipv6-validation-vpc.yaml

VPC設定

  • IPv4は「/20」のCIDRブロックをVPCに付与し、6つのサブネットに「/24」のブロックを設定しました。
  • IPv6は、Amazon の提供する「/56」のCIDRブロックを「/64」に分割し、各サブネットに割り当てました。
  • IPv4、v6ともにCIDR設定は決め打ちで実施しています。CloudFormationでサブネット設定を更新した場合、制限が生じる可能性がある点はご注意ください。

セキュリティグループ

Frontend用

  • Webサービス(HTTP、HTTPS)を、IPv4、IPv6に制限なく公開する設定を用意しました。

Application用

  • Frontend のELB、EC2からのHTTP接続を、IPv4、IPv6とも許可しました
  • 踏台となるBastion セキュリティグループを有す環境からのSSH接続を許可しました。

Datastore用

  • Application サブネットからのDB接続を許可しました。

Basion用

  • CloudFormationのパラメータで指定したIPv6アドレスからのSSH接続を許可しました。

Outputs設定

  • 当スタックで作成したVPCのリソース、別のCloudFormationテンプレートでの利用性をあげるため、Export 設定を行いました。

CloudFormationのスタック間でリソースを参照する

CreateStack

  • ローカルにダウンロードしたipv6-validation-vpc.yaml をS3にアップロードし、テンプレートとして利用しました。

ipv6-validation-vpc-03

  • SSHの接続許可は、NTT東西のフレッツ網向けにIPv6サービスを提供しているJPNEのIP(/16)を仮設定しました。

ipv6-validation-vpc-04

  • スタックの「作成」が完了すると、IPv6に対応したVPCが完成します。

ipv6-validation-vpc-05

まとめ

IPv6対応に対応したVPC、CloudFormationで設置する事ができました。 EC2、ELBでIPv6の動作確認の機会がありましたら、当テンプレートをお試しください。

またIPv6に対応した、ELB(ALB)、EC2(Bastion、Web)のテンプレートについても、追って紹介させて頂きます。