architecture
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
VPC IPv6デュアルスタック — IPv6アドレス設計と移行パターン
VPCのIPv6デュアルスタック設定、Egress-Only Internet Gateway(IPv6専用)、IPv4のみのリソースとの共存、IPv6 CIDRブロックの割り当て、セキュリティグループとNACLのIPv6対応を解説。
一言結論
VPCのIPv6はすべてグローバルアドレスのためセキュリティグループでのアクセス制御が特に重要で、プライベートサブネットのIPv6アウトバウンドにはEgress-Only Internet Gatewayを使い、IPv4のルールはIPv6に自動適用されないため別個のルール追加が必須だ。
VPC の IPv6 サポート
AWSはVPCでIPv4とIPv6のデュアルスタックをサポートする。IPv6アドレスはAWSから /56 CIDR ブロックを割り当てられる。
IPv4 vs IPv6 の主な違い:
IPv4: 10.0.0.0/16(プライベートアドレス)
IPv6: 2406:da14:xxx::/56(グローバルユニキャストアドレス)
注意: IPv6アドレスはすべてグローバルアドレス(プライベートIPv6はない)
→ セキュリティグループで適切にアクセス制御が必要
IPv6 の有効化
# VPCにIPv6 CIDRを割り当て
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-xxx \
--amazon-provided-ipv6-cidr-block
# サブネットにIPv6 CIDRを割り当て(/64固定)
aws ec2 associate-subnet-cidr-block \
--subnet-id subnet-xxx \
--ipv6-cidr-block 2406:da14:xxx:0001::/64
# インスタンスにIPv6アドレスを自動割り当て
aws ec2 modify-subnet-attribute \
--subnet-id subnet-xxx \
--assign-ipv6-address-on-creation
Egress-Only Internet Gateway
IPv6はNATが不要(すべてグローバルアドレス)だが、プライベートサブネットからのアウトバウンドのみを許可するために Egress-Only Internet Gateway を使う。
Egress-Only Internet Gateway (EIGW) の役割:
→ IPv6 のアウトバウンド通信を許可
→ インターネットからのインバウンドを拒否
→ IPv6の「NATゲートウェイ相当」(厳密にはNATではない)
IPv4 NATゲートウェイとの比較:
IPv4: プライベートサブネット → NAT GW(変換)→ インターネット
IPv6: プライベートサブネット → Egress-Only IGW → インターネット
※ アドレス変換なし(IPv6グローバルアドレスをそのまま使用)
# Egress-Only Internet Gatewayの作成
aws ec2 create-egress-only-internet-gateway \
--vpc-id vpc-xxx
# ルートテーブルにIPv6のデフォルトルートを追加
aws ec2 create-route \
--route-table-id rtb-xxx \
--destination-ipv6-cidr-block ::/0 \
--egress-only-internet-gateway-id eigw-xxx
デュアルスタック設計のルーティング
パブリックサブネットのルートテーブル:
宛先 0.0.0.0/0 → Internet Gateway(IPv4)
宛先 ::/0 → Internet Gateway(IPv6)
プライベートサブネットのルートテーブル:
宛先 0.0.0.0/0 → NAT Gateway(IPv4アウトバウンド)
宛先 ::/0 → Egress-Only Internet Gateway(IPv6アウトバウンド)
セキュリティグループの IPv6 対応
# セキュリティグループにIPv6ルールを追加
aws ec2 authorize-security-group-ingress \
--group-id sg-xxx \
--ip-permissions '[
{
"IpProtocol": "tcp",
"FromPort": 443,
"ToPort": 443,
"Ipv6Ranges": [{"CidrIpv6": "::/0", "Description": "IPv6 HTTPS"}]
}
]'
IPv4とIPv6のルールは別々に設定:
→ IPv4: IpRanges(0.0.0.0/0)
→ IPv6: Ipv6Ranges(::/0)
どちらも許可したい場合は両方のルールが必要
NACLのIPv6対応
NACLでIPv6を制御:
→ IPv4のルールはIPv6には適用されない
→ IPv6用に別途ルールを追加する必要がある
例: IPv6のインバウンドHTTPSを許可
ルール100: TCP 443 0.0.0.0/0 ALLOW(IPv4)
ルール110: TCP 443 ::/0 ALLOW(IPv6)
IPv6専用サブネット
IPv4アドレスなしのIPv6のみのサブネットも作成できる(IPv6-only)。
# IPv6専用サブネットの作成
aws ec2 create-subnet \
--vpc-id vpc-xxx \
--ipv6-cidr-block 2406:da14:xxx:0002::/64 \
--ipv6-native # IPv6専用
IPv6専用の用途:
→ Lambda等のIPv4不要のサービス
→ 将来のIPv4枯渇対策
→ IPv4プライベートアドレス空間の節約
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| IPv6でプライベートサブネットからアウトバウンドのみ | Egress-Only Internet Gateway |
| IPv4のNATゲートウェイ相当のIPv6機能 | Egress-Only Internet Gateway |
| VPCのIPv6 CIDRのプレフィックス長 | /56(サブネットは/64固定) |
| IPv6アドレスはプライベートIPか | いいえ(グローバルユニキャスト) |
| IPv6セキュリティグループのルール | IPv4とは別個にIPv6ルールを追加 |
まとめ
VPCのIPv6はデュアルスタックで既存のIPv4と共存できる。IPv6ではすべてグローバルアドレスのため、セキュリティグループでのアクセス制御が重要だ。プライベートサブネットのIPv6アウトバウンドにはEgress-Only Internet Gatewayを使う。