Amazon Web Services ブログ
AWSおよびハイブリッドネットワークにおけるデュアルスタックIPv6アーキテクチャ
この記事はDual-stack IPv6 architectures for AWS and hybrid networks (記事公開日: 2021 年 10 月 18 日) を翻訳したものです。
はじめに
パブリックIPv4の枯渇、特に大規模ネットワーク内でのプライベートIPv4の不足、IPv6のみに接続性を持つクライアントへのサービス提供の必要性などから、IPv6を採用する組織が増えています。IPv6に完全に移行するための中間ステップとして、デュアルスタックのIPv4/IPv6設計があります。これは、両方のバージョンのIPプロトコルを並行して利用するものです。
このブログでは、AWSおよびハイブリッドネットワークで現在活用できるデュアルスタックのIPv6アーキテクチャの一部を紹介します。AWS環境で、デュアルスタックアーキテクチャとIPv6の採用を可能にする構成に焦点を当てながら、ネットワークとコンテンツ配信のIPv6でサポートされる実装について説明します。参照する各サービスの設定オプションの全容に関する詳細については、各セクションのドキュメントリンクを参照することをお勧めします。
このブログでは、以下のデュアルスタックアーキテクチャを対象としています。
- Amazon Virtual Private Cloud(VPC)とElastic Compute Cloud(EC2)インスタンスのデュアルスタック
- Amazon VPCのデュアルスタックインターネット接続
- Elastic Load Balancingを使用したアプリケーション用のデュアルスタックパブリックエンドポイント
- VPCピアリングを使用したデュアルスタックVPC接続
- AWS Transit Gatewayを使用した大規模なデュアルスタックVPC接続
- デュアルスタックハイブリッドネットワークにおけるAWS VPNとAWS Direct Connect
- Amazon CloudFrontのデュアルスタックディストリビューション
ここでは、Amazon VPCの構成と、記載されているサービスのIPv4機能および設定オプションについて理解していることを前提としています。また、IPv6プロトコルの定義、アドレスタイプ、および設定メカニズムについても理解しておく必要があります。IPv4とIPv6の両方を使用するデュアルスタック実装について、IPv4のみのネットワークとの相互運用性、およびデュアルスタックを有効にすることによる追加機能の構築に焦点を当てて説明します。
1. デュアルスタックAmazon VPC
Amazon VPCを作成する時、プライマリIPv4 CIDR(Classless Inter-Domain Routing)ブロックを定義しています。既存および新規のVPCでIPv6を有効にするには、VPC CIDRを編集するかVPCの作成時に1つの/56 IPv6 CIDRブロックを関連付けるだけです。IPv6 CIDRは、AmazonのIPv6アドレスのプールから割り当てることができますが、自分で所有するIPv6アドレスで定義したBYOIPv6(Bring Your Own IPv6)プールから1つの/56を使用することもできます。AWSのIPv6アドレスはグローバルに一意であり、インターネット上でルーティングされますが、BYOIPv6プールの場合は、CIDRがAWSによってインターネット上にアドバタイズされるかどうかを決定できます。この2つのオプションの違いについては、以下のセクション2で詳しく見ていきます。
VPCに/56 IPv6 CIDRを割り当てたら、デュアルスタックサブネットに/64 CIDRを割り当ることができます。また、VPCサブネットのIPv6割り当てを柔軟に設定できるため、デュアルスタックのサブネットとそうでないサブネットを選択することで、同じVPC内にIPv6を使用するサブネットと使用しないサブネットを混在させることができます。これにより、ユースケースに応じて、異なるサブネットで徐々にIPv6のサポートを有効にすることで、IPv6導入のペースアップを可能にします。
Fig. 1: デュアルスタックAmazon VPC
これで、VPC内にデュアルスタックのEC2インスタンスを起動できるようになりました。IPv6が有効なサブネットに配置されたEC2インスタンスは、IPv6アドレスが割り当てられた状態で作成および修正することができます。DHCPv6によってAWSがIPv6アドレスを自動で割り当るか、サブネットの割り当て範囲にある未使用のアドレスを手動で指定するかをElastic Network Interface(ENI)ごとに設定します。
Fig. 2: デュアルスタック EC2 instances
IPv6アドレスの割り当ては、現世代のすべてのインスタンスタイプと、C3、R3、I2の旧世代のインスタンスタイプでサポートされていますが、インスタンスにアタッチできるネットワークインターフェイスの数は異なります(詳細は、インスタンスタイプとネットワークインターフェイスごとに利用可能なIPv6アドレスの数を参照してください)。また、DHCPv6が設定されているAMIではIPv6が自動的にサポートされますが、それ以外のAMIの場合は、割り当てられたIPv6アドレスを認識するようにインスタンスを手動で設定する必要があります。また、ネットワークインターフェースのIPv6アドレスの関連付けを解除しない限り、インスタンスの停止および起動をしてもIPv6アドレスが保持され、インスタンスを終了すると解放されます。特にコンテナ環境では、VPCの管理やIPv6の割り当てを簡素化するために、ネットワークインターフェースに/80プレフィックス全体を割り当てることもできます。
VPCのIPv6アドレスは、デフォルトではインターネットにルーティング可能ですが、だからといって、VPC内で使用されているすべてのIPv6アドレスが実際にインターネットに接続できたり、インターネットから接続可能になったりするわけではありません。代わりに、ゲートウェイタイプ、ルート、セキュリティグループ、ネットワークアクセスコントロールリスト(NACL)を組み合わせて使用することで、サブネットのインターネット接続を完全に制御することができます。それでは、デュアルスタックVPCのプライベートサブネットとパブリックサブネットのインターネット接続をどのように実現するかを見てみましょう。
(訳者注:IPv6シングルスタックサブネットの作成とEC2インスタンスの起動ができるようになりました。詳細はこちらのブログをご確認ください。)
2. デュアルスタックVPCのインターネット接続
デュアルスタックVPCでは、IPv4スタックには同じインターネット接続構成を維持し、IPv6スタックではEgress-only Internet Gateway (EIGW)を追加します。EIGWは、VPC内のインスタンスからインターネットへのIPv6によるアウトバウンド通信を可能する水平スケーリングされた冗長で可用性の高いVPCコンポーネントです。EIGWの役割は、プライベートサブネットの概念をIPv4とIPv6の両方のスタックで一貫させることです。これは論理的にはNATゲートウェイと非常によく似ており、インターネットからインスタンスへのIPv6接続を開始するのを防ぎ、アドレスやポートの変換に頼らず、リターントラフィックのみがインスタンスに到達するのを可能にします。次の図は、上述のデュアルスタックVPC関連の概念を示しています。
Fig. 3: デュアルスタック VPC のインターネット接続
EIGWをVPCに関連付けたら、それに応じてパブリックサブネットとプライベートサブネットのルートテーブルを設定する必要があります。通常、IPv4スタックとIPv6スタックの両方で、パブリックサブネットのデフォルトルートはインターネットゲートウェイを指します。IPv4スタックの場合、プライベートサブネットのデフォルトルートは通常NATゲートウェイを指しますが、IPv6スタックの場合は、EIGWを指します。次の図は、デュアルスタックのパブリックサブネットとプライベートサブネットのルートテーブルを示しています。
Fig. 4: インターネット接続のためのVPCルートテーブルの設定
AWSによってアドバタイズされるBYOIPv6プールとそうでないプールの違いについて前述したことを覚えていますか?AWSによってアドバタイズされるIPv6 CIDRブロックを選択した場合、AWSが提供するIPv6 CIDRと同様に、VPCのインターネットゲートウェイまたはEIGWを使用してインターネット接続を実現する必要があります。また、IPv6 CIDRのルーティングを自社で管理する場合は、AWSがこれらのCIDRをパブリックにアドバタイズしないため、VPCのインターネット接続はVPNまたはDirect Connectを使って、オンプレミスの拠点からアドバタイズする必要があります。以下の表は、異なるタイプのIPv6 CIDRに対する上記のオプションをまとめたものです。
3. Elastic Load Balancingを使用したアプリケーション向けデュアルスタックのパブリックエンドポイント
引き続き、デュアルスタックのElastic Load Balancingでスケーラブルなパブリック向けアプリケーション配信を可能にすることについて説明します。Application Load Balancer (ALB)がHTTPとHTTPSの負荷分散に最適なのに対し、Network Load Balancer (NLB)は、極めて高いパフォーマンスが求められるTCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、TLS(Transport Layer Security)のトラフィックの負荷分散に最適です(詳細な設定オプションやサポートされている機能については、ALBのドキュメントページとNLBのドキュメントページを参照してください)。
パブリック向けロードバランサーを設定する際に、ロードバランサーが選択したパブリックサブネットで使用するIPアドレスにデュアルスタックを選択することができます。これにより、アプリケーションクライアントはIPv4とIPv6の両方のアドレスを使用してロードバランサーと通信できるようになります。デュアルスタックを選択する場合、ロードバランサーのサブネットにはIPv6 CIDRブロックが関連付けられている必要があります。ロードバランサーのインターフェースにIPv6アドレスを手動で割り当てること(訳者注:ブログ執筆時点ではNLBのみ手動割り当て可能)も、AWSがランダムに割り当てることもできます。次の図は、インターネット向けデュアルスタックALBのデプロイメント、ルートテーブルの設定を示しています。
Fig. 5: デュアルスタック ALB
デュアルスタックIPv4とIPv6のアプリケーションエンドポイントを作成したので、ALBのインバウンドセキュリティグループは、IPv4とIPv6の両方のクライアントからのトラフィックを許可する必要があります。
次の図は、デュアルスタックNLBのデプロイメントとルートテーブルの設定を示しています。
Fig. 6: デュアルスタックNLB
NLBエンドポイントがデュアルスタックになったので、ターゲットのセキュリティグループは、ターゲットのタイプ(インスタンスまたはIPv4アドレス)に応じて、ロードバランサーからのトラフィックを許可するためにIPv4アドレスとIPv6アドレスの両方をサポートする必要があります。インスタンスタイプのターゲットで推奨されるセキュリティグループの設定は以下の通りです。
IPターゲットで推奨されるセキュリティグループの設定は以下の通りです。
(訳者注: NLBのターゲットグループにALBを設定することができるようになりました。詳細はこちらのブログをご確認ください。)
4. VPCピアリングを使用したデュアルスタックVPC接続
VPCがデュアルスタックに対応し、アプリケーションのエンドポイントがIPv4とIPv6の両方のアドレスでパブリックにアクセスできるようになったところで、デュアルスタックVPCの接続オプションを見てみましょう。2つのデュアルスタックVPCを接続する最も簡単な方法は、VPCピアリングを使用することです(詳細については、VPCピアリングのドキュメントを参照してください)。IPv4のCIDRブロックが重複しない2つのVPCをピアリングし、ピアリング接続を介して単一のスタックまたは両方のスタックをルーティングすることを選択できます。次の図は、デュアルスタックのVPCピアリング接続と関連するルーティングを示しています。
Fig. 7: デュアルスタックVPCピアリング
5. AWS Transit Gatewayを使用した大規模なデュアルスタックVPC接続
AWS Transit Gateway(TGW)は、単一のVPCの規模を超えて、IPv4とIPv6の両方のスタックのVPCやハイブリッドネットワークを相互に接続するために使用できるネットワークトランジットハブです。アタッチメント、ピアリング接続、アソシエーション、プロパゲーション、ルーティングなど、すべてのTGWのコンセプトと概念は、両方のスタックで同じ機能を備えています。TGWにIPv6対応のVPCアタッチメントを設定するには、VPCとアタッチメントのサブネットにIPv6のCIDRが関連付けられている必要があることに注意してください。また、TGWのピアリング接続は、IPv4およびIPv6のCIDRルーティングをサポートしています。次の図は、デュアルスタックのTGW VPCアタッチメントを示しています。
Fig. 8: デュアルスタックAWS Transit Gatewayルーティング
6. デュアルスタックハイブリッドネットワークにおけるAWS VPNとDirect Connect
AWSネットワークのハイブリッド接続では、AWS Site-to-Site VPNとAWS Direct Connectのデュアルスタック構成を確認する必要があります。
トランジットゲートウェイ上のSite-to-Site VPN接続は、VPNトンネル内でIPv4トラフィックまたはIPv6トラフィックのいずれかをサポートします。つまり、デュアルスタック接続のためには、IPv4スタック用とIPv6スタック用の2つのVPN接続を作成する必要があります。IPv4 ルーティングに使用するSite-to-Site VPN接続では、各トンネルは 169.254.0.0/16の範囲の /30 IPv4 CIDR を持ち、一方、IPv6 ルーティングに使用する予定の VPN 接続では、各VPN トンネルには2つの CIDR ブロックがあります。一つは169.254.0.0/16 範囲の /30 IPv4 CIDR で、もう一つは fd00::/8 範囲の /126 IPv6 CIDR です。次の図は、デュアルスタックルーティングに必要な2つのVPN接続を示しています。
Fig. 9: デュアルスタック AWS Site-to-site VPN
AWSエンドポイントとなるアウトサイドのトンネルIPアドレスはIPv4アドレスであり、カスタマーゲートウェイのパブリックIPアドレスもIPv4である必要があります(トンネル設定オプションの詳細については、AWS Site-to-Site VPN設定ガイドを参照してください)。
AWS Direct Connectでは、オンプレミスへ専用のプライベート接続を設定することができ、IPv4とIPv6の両方のルーティングをネイティブにサポートしています。Direct Connect接続をデュアルスタックのトラフィックに使用するには、次の仮想インターフェース(VIF):プライベートVIF、パブリックVIF、トランジットVIFのいずれかを作成するか、既存のVIFを再利用してデュアルスタックに対応させる必要があります。デュアルスタックVIFには次の事項について考慮する必要があります。
- VIFは、IPv4、IPv6、またはその両方(デュアルスタック)のBGPピアリングセッションをサポートしています。
- IPv6スタックの場合、AmazonがBGP ピアリング接続用に /125 IPv6 CIDR を自動的に割り当てます。
- パブリックVIFでは、AWSに対して/64プレフィックス以上の経路をアドバタイズする必要があります。
Fig. 10: デュアルスタック AWS Direct Connect
7. Amazon CloudFrontのデュアルスタックディストリビューション
デュアルスタックアプリケーションのグローバルコンテンツ配信がHTTP/HTTPSを使用したAmazon CloudFront上に構築されていれば、両方のスタックで同じセキュリティ、可用性、パフォーマンス、スケーラビリティを活用することができます。CloudFrontはIPv4を使用してオリジンサーバーと通信するため、IPv6サポートを有効にするためにアプリケーションスタックを変更する必要はありません。これは、Amazon Simple Storage Service(S3)のバケット、MediaStore container、MediaPackage channel、もしくはAmazon EC2インスタンスや独自のHTTPウェブサーバーなどのカスタムオリジンなど、CloudFrontディストリビューションの全てのタイプのオリジンに適用されます。Amazon CloudFrontのアクセスログを有効にしている場合、IPv6を有効にすると、「c-ip」フィールドにビューワーのIPv6アドレスが表示されます。また、オリジンに送信される「X-Forwarded-For」ヘッダーでもIPv6アドレスが取得できます。さらに、Trusted SignerにIP許可リストを使用している場合は、IP許可リストを使用したTrusted SignerのURLにはIPv4のみの配信を行い、その他のコンテンツにはデュアルスタックのディストリビューションを使用する必要があります。
新しく作成されるすべての Amazon CloudFront ウェブディストリビューションで IPv6 がデフォルトで有効になっており、既存のウェブディストリビューションでは、Amazon CloudFront コンソールまたは API を介してIPv6 を有効にすることができます。
まとめ
このブログでは、AWS環境でIPv4とIPv6のデュアルスタックを実現にするために利用可能なネットワークアーキテクチャと設定オプションのいくつかをまとめています。お客様の環境でデュアルスタックVPCとネットワークリソースは簡単に有効化できます。IPv6の採用戦略は複数ありますが、さまざまな推進要因により、AWS でIPv6の旅を今すぐ開始できます。この投稿について質問がある場合は、Amazon ネットワーキングおよびコンテンツ配信フォーラムで新しいスレッドを開始するか、AWSサポートにお問い合わせください。
Alexandra Huides
Alexandra Huides は、アマゾンウェブサービスの戦略的アカウントにおけるシニアネットワーキングスペシャリストソリューションアーキテクトです。彼女は、拡張性と耐障害性に優れたAWS環境向けのネットワーキングアーキテクチャの構築と開発において、お客様を支援することに重点を置いています。仕事以外では、旅行、新しい文化や経験の発見、ハイキング、読書が好きです。
本ブログは、ソリューションアーキテクトの櫻井が翻訳しました。原文はこちらです