AWS Global AcceleratorがIPv6をサポートしていたのでALBに設定しながらELBのdual-stackに思いを馳せてみた
はじめに
清水です。少し前のアップデート情報となりますが、AWSのグローバルネットワークを活用してアプリケーションの可用性やパフォーマンスを向上させることができるサービスAWS Global AcceleratorでIPv6をサポートしました。(2022/07/28付でポストされたアップデート情報となります。)
Global Acceleratorのdual-stack機能を有効にすると、従来までの2つの静的なIPv4アドレスに加えて、2つの静的なIPv6アドレスが利用可能になります。本エントリでは、ALBに対してGlobal Acceleratorを設定してこのIPv6サポートの動作を確認してみたのでまとめてみたいと思います。
またGlobal AcceleratorのIPv6機能を使うためには、ALBのdual-stack、IPv6対応も必要です。そしてこの設定のためにはVPC側でもIPv6に対応している必要があります。個人的に、ELBはdual-stack設定を有効にするだけでPv6対応する、という思い込みがあったのですが、この点の詳細も確認してみたので備忘録がてらまとめてみたいと思います。
Global AcceleratorでIPv6設定をしてみた
まずは実際にGlobal AcceleratorのIPv6サポートを確認してみたいと思います。IPv6対応のVPC作成から進めます。AWSマネジメントコンソールのVPC作成ウィザードでサクッと作成してしまいました。IPv6 CIDRブロックの項目で「Amazon 提供の IPv6 CIDR ブロック」を選択します。またAvailability Zoneは2つ、Public Subnetも2つ、Private Subnetはなしという構成にしています。
作成したIPv6が有効なVPCでEC2インスタンスを起動します。こちらはIPv6 IPの自動割り当ては無効のまま進めてみました。EC2インスタンス起動後、httpdをインストールしてWebサーバとして稼働するようにしておきます。
続いてALBを作成します。IPアドレスタイプでDualstackを有効にしました。またアドオンサービスでGlobal Acceleratorを指定してALBの作成と同時にAcceleratorも作成してしまします。
ALBならびにGlobal Accelerator作成後、Acceleratorの設定詳細を確認してみます。静的なIPv4アドレスは2つ提供されていますが、IPv6はまだ提供されていませんね。AWSマネジメントコンソールからALBと一緒に作成する場合は手動でIPv6設定が必要なようです。
[Edit]ボタンからAccelerator設定変更画面に進みます。IP address typeの項目をIPv4からDual-stackに変更します。[Save changes]ボタン押下後、しばらくすると設定が反映され、IPv6アドレスが割り当てられていることがわかります。
AcceleratorのDNS名については、Dual-stackの指定がないものはAレコードのみを返し、Dual-stackなDNS名はAレコードならびにAAAAレコードを返すと、という挙動となっています。
% dig a6XXXXXXXXXXXXX8c.awsglobalaccelerator.com A +short 99.XX.XXX.210 75.X.XX.173 % dig a6XXXXXXXXXXXXX8c.awsglobalaccelerator.com AAAA +short % dig a6XXXXXXXXXXXXX8c.dualstack.awsglobalaccelerator.com A +short 99.XX.XXX.210 75.X.XX.173 % dig a6XXXXXXXXXXXXX8c.dualstack.awsglobalaccelerator.com AAAA +short 2600:9000:a702:XXXX:XXXX:XXXX:97af:d408 2600:9000:a405:XXXX:XXXX:XXXX:a037:1e17
実際にDual-stackなDNS名にアクセスしてみます。自宅のv6プラス環境でアクセスしてみたところ、以下のようにIPv6のアドレスに接続していることが確認できました。
Global AcceleratorでIPv6使用時の注意事項など
Acceleratorの設定画面でIP address typeをDual-stackとすることで、ALBに関連付けたAcceleratorのIPv6が有効になりました。ただGlobal AcceleratorでIPv6使用時にはいくつか注意事項があったので、確認してみます。
ALBのIPアドレスタイプがdualstackである必要がある
Global AcceleratorでIP address typeをDual-stackにするには、ALBのIPアドレスタイプがdualstackに設定されている必要があります。ALBのIPアドレスタイプがipv4のまま、AcceleratorのIP address typeをDual-stackにしようとしてみましょう。[Save Changes]ボタンを押下します。
「successfully updated」と表示され変更できたように見えますが、再読み込みや一覧画面から再度遷移してみると「Your latest attempt to update this accelerator to DUAL_STACK failed」と表示され、Dual-stackへの変更が失敗していることが確認できます。
ALB側でIPアドレスタイプをdualstackに変更ののち、Global AcceleratorのIP address typeをDual-stackに変更しましょう。
ALBのIPアドレスタイプをdualstakにするためにはIPv6対応のVPCである必要がある
Global AcceleratorのIP address typeをDual-stackにするにはALBのIPアドレスタイプがdualstackに設定されている必要があるわけですが、ALBのIPアドレスタイプをdualstackにするにはVPC側(厳密にはALBのVPCサブネット)でIPv6を有効化しておく必要があります。
- Amazon EC2とVPCがIPv6に対応しました #reinvent | DevelopersIO
- [AWS] Elastic Load BalancingがIPv6に対応しました!(5年ぶり2回目) | DevelopersIO
IPv6を有効化していないVPCのALBでは、以下のようにIPアドレスタイプをdualstackに変更しようとしても、割り当て対象となるIPアドレスが存在しないため設定できません。
ELBのdual-stackに対する個人的な誤解を解く
さて、ここからは個人的な備忘録です。ALBのIPアドレスタイプのdualstack、有効化するだけですんなりと変更できるようになる、IPv6対応するなど考えていました。仕組み的にはありえないのですが、VPCのIPv6設定をせずともdual-stackに変更できるのではないか、という勘違いです。
なぜこんな勘違いをしていたのかな、と思いを巡らせてみたところ、EC2-Classic環境でのELB利用とこんがらがって覚えしまっていたようです。すでに勇退が決まっているEC2-Classic環境、当然(?)触れる環境は私の手元にないのですが、当時の記憶、ブログエントリなどをもとに状況を振り返ってみます。以下ブログエントリのELBのDNS名の説明がそのものズバリ!でした。
EC2-Classic(当時の言い方でいえば非VPCな環境)のELB(当時はALBもありません。いまでいうCLBです)では、2011年のアップデートでIPv4用のDNS名、IPv6用のDNS名、そしてdual-stack(AレコードまたはAAAAレコードを返す)のDNS名の3つが提供されるようになりました。ここでdual-stack用のDNS名(もしくはIPv6用のDNS名)を使用していれば、ELB-EC2環境がIPv6に対応していた、ということになります。
そしてもう一つ、本エントリでもすでに引用している以下ELBのIPv6対応のエントリをもう一度確認してみましょう。
VPC環境下のALBでのIPv6対応がなされたのが上記エントリの2017年1月のこと、となります。つまり私はこのEC2-ClassicなCLB環境でのIPv6対応とVPCなALB環境でのIPv6対応をごっちゃにしてしまっていたわけですね。
EC2 Classicが勇退したいま、改めて上記エントリの5年ぶり2回目の意味を噛み締めておこうと思います。(もう忘れない、混同しないぞ、と……。)
まとめ
AWS Global AcceleratorのIPv6サポートについて、ALBに関連付けたAcceleratorを使って確認してみました。ALB側でもdual-stack設定が必要で、そのためにVPC(ALB配置のサブネット)でIPv6の設定が必要です。
また個人的に勘違いしていた、ELBのdual-stack、IPv6対応についても確認してみました。EC2-Classic環境のCLBでは自動でIPv6が有効になっており、dualstakcなDNS名も提供されていました。EC2-Classic勇退のこの夏の終りに、当時の環境を思い出し、また混同していた知識の整理ができてよかったです。