COLUMN
AWSでIPv6を使う場合のリファレンスアーキテクチャを読み解く:準備編
こんにちは、白鳥です。 |
AWS上でIPv6を使う場合のリファレンスアーキテクチャについて解説していきたいと思います。
元になる資料は次の公式ドキュメントの2つになりますが、日本語版が提供されていないことと、IPv6移行を検討している方もいらっしゃると思うので、参考になれば幸いです。
(参考)公式ドキュメント
Dual Stack and IPv6-only Amazon VPC Reference Architectures
また、リファレンスアーキテクチャが17あり、これを読み解くことでIPv6移行の手助けになるのではないかと考えております。
- アーキテクチャ1:デュアルスタックVPCにおけるインターネット接続
- アーキテクチャ2:IPv6のみのサブネットの構成
- アーキテクチャ3:IPv6のみのサブネットからのインターネット接続
- アーキテクチャ4:デュアルスタックVPCにおけるALBへのIPv4接続
- アーキテクチャ5:デュアルスタックVPCにおけるALBへのIPv6接続
- アーキテクチャ6:デュアルスタックVPCにおけるNLBへのIPv4接続
- アーキテクチャ7:デュアルスタックVPCにおけるNLBへのIPv6接続
- アーキテクチャ8:デュアルスタックVPCにおける内部ALB/NLBの利用
- アーキテクチャ9:DNS64
- アーキテクチャ10:NAT64
- アーキテクチャ11:NAT64を使ったアウトバウンドトラフィックの集約
- アーキテクチャ12:デュアルスタックVPCにおけるVPCピアリング接続
- アーキテクチャ13:デュアルスタックVPC間のTransit Gateway接続
- アーキテクチャ14:デュアルスタックVPC間のAWS Privatelink接続
- アーキテクチャ15:デュアルスタックVPCとオンプレミスのDirect Connectを使用した接続
- アーキテクチャ16:デュアルスタックVPCとオンプレミスのSite-to-Site VPNを使用した接続
- アーキテクチャ17:Transit Gateway Connectを使った接続
今回は準備段階として、IPv6 on AWSの公式ドキュメントを読みながら、基本的なことをおさらいしていきたいと思います。
1.想定する読者
- 自身の環境のIPv6移行を検討されている方
- AWSの各種ネットワーク系サービスを知っている方
2.きっかけ
先日のAWSのアップデートで、2024年2月からパブリックIPv4アドレスの料金体系の見直しが発表されました。
新着情報 – パブリック IPv4 アドレスの利用に対する新しい料金体系を発表 / Amazon VPC IP Address Manager が Public IP Insights の提供を開始
これまでは特定のサービス(EC2など)に紐づいていれば料金はかからなかったのですが、2024年2月以降はサービスに紐づいているかどうかにかかわらず課金されるようになります。
できるだけIPv4アドレスを減らしていくやり方もありますが、インターネット接続性を必要とするワークロードはIPv6に移行する方法も検討のひとつとなります。
というところで、現状のIPv6 on AWSがどのようになっているかをおさらいしたいというのがきっかけとなります。
3.IPv6 on AWSの基本的なこと
ここから今回の本題である、IPv6 on AWSについておさらいしていきます。IPv6とは何?というお話は割愛します。
Amazon VPCでIPv6を有効化した場合、下記のようなポイントが主な注意するポイントとなります。
- IPv6アドレッシング
- VPCでサポートされる各種サービス類の仕様
- VPCのコネクティビティ
- DNSの設計
- セキュリティと運用系のサービス
- デュアルスタック環境におけるスケーリング
それでは、一項目ずつ確認していきたいと思います。
IPv6アドレッシング
VPC自体はデュアルスタックで構成されます。
IPv4とIPv6はそれぞれ独立して通信します。
IPv4を廃止することはできませんが、IPv6のみのサブネットを作ることはできます。
VPCにおけるIPv6のprefixはAmazon提供の場合/56で、デフォルトでは最大5まで、上限緩和により50まで増やすことができます。
その他、独自のIPv6アドレスを持ち込むこともできます。
サブネットのIPv6 prefixは/64になります。サブネットごとにIPv4のみ、IPv6のみ、デュアルスタックを選択できます。
ENI(Elastic Network Interface)にはひとつのインターフェースでIPv4とIPv6を複数持つことができます。IPv6アドレスの割り当ては、AWSが自動で割り当てるか、サブネットの割り当て範囲内で未使用のアドレスを指定できます。明示的に変更しない限り、アドレスが変更されることはありません。
VPCでサポートされるサービス類の仕様
VPCを構築した場合、DHCPやNTPなどいくつかのサポートが付随してきますが、IPv6においても提供されます。一つずつ見ていきましょう。
DHCPv6
DHCPv6も利用可能です。マルチキャストで提供され、アドレスはff02::1:2で提供されます。
DHCPv6オプションセットも提供されますが、デュアルスタックの場合はIPv4になります。また、OS側でIPv6に対応している必要があります。
DHCPを使わずに通信も可能ですが、ENIに割り当てられているIPアドレスと一致させる必要があります。
インスタンスメタデータ
IPv4と同様に提供されます。エンドポイントはfd00:ec2::254です。
Route 53 DNS Resolver
fd00:ec2::253で提供されます。
IPv4でしか対応していないワークロードに対してはDNS64やNAT64が必要ですが、これはアーキテクチャ9~11で詳しく解説します。
NTPサーバ
fd00:ec2::123で提供されます。
EC2の命名規則
IPv4でEC2を構築すると、リソース名はプライベートIPv4アドレスに基づいて”private-ipv4-address.region.compute.internal”のような形で設定されます(IPBN)が、IPv6の場合は、インスタンスIDを利用した名前も使用可能になります。(RBN)例えば、このようなアドレスになります。
ec2-instance-id.region.compute.internal
デュアルスタックの場合はデフォルトではプライベートIPv4アドレスに基づいて命名されますが、サブネットごとに選択が可能です。
インスタンスIDを使用した名前はAレコード/AAAAレコード共に使用可能です。
VPCのコネクティビティ
VPCとの接続やVPC間接続も各種サービスを用いてIPv6が利用できますが、いくつか制限事項がございます。
VPCピアリング
IPv4と同様に使用可能です。詳しくはアーキテクチャ12で解説します。
Transit Gateway
IPv4と同様に使用可能です。詳しくはアーキテクチャ13,16,17で解説します。
Transit GatewayにアタッチされたENIでIPv6アドレスを持っていることが条件です。
Privatelink
2022年のアップデートで使用可能になりました。ただし、Interface型のエンドポイントのみで、Gateway LoadBalancer型の物は使えません。
VPCシェアリング
IPv4のみです。デュアルスタックの場合でも、IPv4のみが共有され、IPv6は非共有サブネットとなります。
インターネットアクセス
IPv6ではグローバルにユニークなIPv6アドレスが付与されていますので、ElasicIPアドレスは不要です。
AWSで割り当てられたIPv6アドレスはインターネット到達性を持っています。
パブリックに公開したいリソースの場合はIGWを使用し、ルートを確立します。
パブリックに公開したくないサブネットはIGWへのルートテーブルを持たないようにします。
ただし、アウトバウンドの通信のみが必要な場合は、Egress-Only Gatewayを使用して、インターネットへのルートテーブルをEgress-Only Gatewayに設定します。
詳しくはアーキテクチャ1で解説します。
Direct Connect
物理接続・ジャンボフレーム・VLANといったレイヤ3以外の設定は同様となります。
BGPのアドバタイズメントが少々異なります。
こちらはアーキテクチャ15、17で解説します。
Site-to-Site VPN
IPv6でのIPsecトンネルは、Transit Gatewayで終端するもののみとなります。
また、トンネル内ではIPv6を通すことができますが、トンネル確立などにはIPv4を使用するため、拠点側にもパブリックIPv4アドレスが必要となります。
こちらはアーキテクチャ16で解説します。
DNSの設計
基本的な考え方はIPv4と変わりません。
エイリアスレコードはAAAAレコードをサポートしています。
DNSの名前解決時はOSの設定にもよりますが、多くの場合はIPv6を優先します。
パブリックの名前解決はAレコードとAAAAレコードの両方が使用可能で、ヘルスチェックも同様に機能します。
プライベートの名前解決も同様です。
セキュリティと運用
いくつかのサービスごとに差分があり、若干の注意が必要です。
ネットワークレベルのアクセスコントロール
ネットワークレベルのアクセスコントロールで使われるSecurity GroupとNACLはIPv4と同様に使えます。
各種ルールにIPv6の受送信ルールを追加します。
VPCフローログ
こちらもIPv4と同様に使えます。
VPC Trafficミラーリング
IPv4と同様にIPv6トラフィックもミラーリング可能ですが、ミラーリングされたトラフィックはIPv4で通信します。
したがって、ミラーリングターゲットはIPv4アドレスを持つ必要があります。
AWS WAF
こちらもIPv4と同様、IPv6アドレスやIPv6アドレス範囲で条件を指定できます。
(※ただし、:://0は除く)
AWS Shield
こちらも同じくIPv4と同様に動作します。双方のアドレスにおいてパフォーマンスやスケーラビリティ、可用性に差はありません。
AWS Network Firewall
Network Firewallですが、こちらはデュアルスタック環境のサブネットでのみ機能します。IPv6専用サブネットでは使用できません。
AWS Systems Manager
注意が必要なポイントです。
執筆時現在ではIPv6をサポートしていません。Systems Managerの各種機能を使用するためにはIPv4アドレスが必要となります。
デュアルスタック環境であれば使用可能です。これは、オンプレミスのリソースをSystems Managerで運用する場合も同様です。
デュアルスタック環境におけるスケーリング
ELB
IPv6環境で使用可能なのはALBとNLBになります。CLBとGateway LoadBalancerは使えません。
ALB/NLBともに、IPv6環境で使う場合はデュアルスタックIPアドレスタイプを使用します。これにより、IPv4とIPv6いずれもサポートされ、AレコードとAAAAレコードが使えるようになります。
IPv4はIPv4で、IPv6はIPv6で通信しますので、ターゲットグループを構成する場合は、IPv4ターゲットとIPv6ターゲットを混在させることはできません。
また、IPv6ターゲットの場合は、IPv6アドレスタイプのターゲットのみが使用可能で自身のVPC内のターゲットのみが到達可能です。
VPCピアリングやTransit Gateway等の自身のVPC外にあるIPv6アドレスを指すことはできません。
NLBについては、IPv4のターゲットがある場合、IPv4に変換を行うので、ソースIPアドレスが保持されません。
IPv6アドレスはPPv2ヘッダに追加してターゲットに追加するので、実際のソースIPアドレスを確認することは可能です。
IPv6ターゲットについてはソースIPの保持が可能です。
Global Accelerator
Global AcceleratorはIPv6をサポートしておりません。
Amazon CloudFront
CloudFrontについては、エッジロケーションまではIPv6をサポートしており、クライアントに対してはIPv6でネイティブに応答します。
クライアントはIPv4とIPv6のどちらを使用していても機能面や可用性・パフォーマンス・スケーラビリティとなります。
ただし、注意事項はここからで、オリジンとの通信はIPv4のみとなります。
これはオンプレミスサーバ・EC2・ELB・その他マネージドサービスいずれも同様です。
4.まとめ・次回
今回はIPv6をAWSで使う場合の基本的な事項と、各サービスの制約事項をおさらいしました。
こちらを見る限りでは、2023年9月時点ではまだIPv6完全移行は難しいように思いますが、デュアルスタック環境を徐々に使い始めることが大切だと考えます。
ネットワーク設計がビジネスの影響を及ぼさないように、将来の設計も踏まえたうえで実装していくことが良いのではないかと思います。
当社においても、IPv6のネットワーク設計や構築についてサポートさせていただければと思います。
次回からは具体的なアーキテクチャについて解説をしていきたいと思いますので、引き続きよろしくお願いいたします。
RECOMMEND
その他のコラム
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。