📘 AWS Networking

VPCとデュアルスタック
ネットワーキング

IPv4とIPv6の「二刀流」で、今も未来もつながるネットワークを構築しよう

まず押さえるべき4つのポイント

🏠
VPC = AWS内の「自分専用ネットワーク空間」論理的に分離された仮想ネットワークで、他のユーザーから完全に独立している
🔀
デュアルスタック = IPv4 + IPv6 の併用構成1つのリソースに2つのアドレスを持たせ、どちらでも通信可能にする
📐
サブネット設計が運用の鍵IPv4は/24(256アドレス)、IPv6は/64(膨大なアドレス)が標準的なサブネットサイズ
🚀
新規構築はデュアルスタックが推奨IPv6への移行は世界的な流れ。最初から両対応にしておくと将来の手戻りが少ない

🏘️ たとえ話で理解する「VPCとデュアルスタック」

初心者向け

VPCとデュアルスタックを「街の住所体系」に例えてみましょう。あなたが新しい街(=AWS)に自分だけのニュータウンを建設する場面を想像してください。

🏙️ あなたのニュータウン(= VPC)の全体像

☁️ AWSクラウド 🏘️ あなたのニュータウン(VPC: 10.0.0.0/16) 🌳 パブリック区画(パブリックサブネット) 🏢 Webサーバー 旧: 10.0.1.10 新: 2600:...:a01 🏪 ロードバランサー 旧: 10.0.1.20 新: 2600:...:a02 🚪 正面ゲート(Internet Gateway) 🌍 インターネット(双方向) 🔒 プライベート区画(プライベートサブネット) 🏦 データベース 旧: 10.0.2.10 新: 2600:...:b01 🏭 内部処理サーバー 旧: 10.0.2.20 新: 2600:...:b02 🚪 裏口ゲート(NAT Gateway)── 出口専用 🌍 インターネット(出口専用) 旧住所 = IPv4 新住所 = IPv6 ← 1つの建物に2つの住所 = デュアルスタック

🏘️ ニュータウンの世界

  • ニュータウン全体 = 壁で囲まれた自分だけの街
  • 旧住所(4桁) = 昔からある短い住所体系(数に限りあり)
  • 新住所(長い英数字) = 新しくて超大量の住所体系
  • 両方の住所が書かれた表札 = デュアルスタック設定
  • 正面ゲート = 来客(外部)が通る入口
  • 裏口ゲート = 住人だけが外出に使う出口

☁️ AWSの世界

  • VPC = 論理的に分離された仮想ネットワーク空間
  • IPv4アドレス = 従来の32ビットアドレス(約43億個で枯渇問題)
  • IPv6アドレス = 128ビットの次世代アドレス(ほぼ無限)
  • デュアルスタック = IPv4/IPv6両方を割り当てた構成
  • Internet Gateway = VPCとインターネットの接続口
  • NAT Gateway = プライベートリソースの外向き通信

🏗️ VPCの基本構造

AWSクラウド内に自分だけのネットワーク空間を作る仕組み

VPCの構成レイヤー

📍 リージョン(例:ap-northeast-1 東京) 🏘️ VPC(10.0.0.0/16 + 2600:1f00::/56) AZ: ap-northeast-1a パブリック 10.0.1.0/24 .../64 🖥️ EC2 プライベート 10.0.2.0/24 .../64 🗄️ RDS AZ: ap-northeast-1c パブリック 10.0.3.0/24 .../64 🖥️ EC2 プライベート 10.0.4.0/24 .../64 🗄️ RDS

VPCはリージョン単位で作成され、その中に複数のアベイラビリティーゾーン(AZ)をまたいでサブネットを配置できます。各サブネットは1つのAZにのみ所属し、パブリック(外部通信可能)とプライベート(内部専用)に分けて使うのが基本パターンです。デュアルスタック構成では、すべてのサブネットにIPv4とIPv6両方のCIDRブロックを割り当てます。

🔄 3つのスタックモード

VPCで選べるIPアドレスの組み合わせパターン

4️⃣

IPv4 のみ

従来の標準構成。ほとんどの既存システムはこのモード。プライベートIP範囲(10.x.x.x など)から選択する。

従来のデフォルト
6️⃣

IPv6 のみ

IPv6アドレスだけを使用。コスト最適化やIPv6ネイティブ環境向け。一部サービスは未対応の場合あり。

新しい選択肢
4️⃣6️⃣

デュアルスタック

IPv4とIPv6を同時に使用。移行期の最適解。既存システムとIPv6環境の両方と通信できる。

推奨構成

デュアルスタック通信の仕組み

📱 IPv4クライアント 従来のWebブラウザ モバイルアプリ等 203.0.113.50 💻 IPv6クライアント 最新デバイス IoTデバイス等 2001:db8::1 IPv4通信 IPv6通信 🚪 Internet Gateway 🏘️ デュアルスタック VPC 🖥️ EC2 インスタンス IPv4: 10.0.1.10 IPv6: 2600:...:a01 ⚖️ ALB IPv4: 10.0.1.20 IPv6: 2600:...:a02 🗄️ RDS IPv4: 10.0.2.10 IPv6: 2600:...:b01 Lambda IPv4: 10.0.2.20 IPv6: 2600:...:b02 通信プロトコル IPv4 IPv6

⚖️ IPv4 と IPv6 の比較

旧住所(IPv4)と新住所(IPv6)の違いを一覧で整理

比較項目IPv4(旧住所)IPv6(新住所)
アドレスの長さ32ビット(4つの数字の組)128ビット(8つの16進数グループ)
表記例10.0.1.102600:1f00:6000:a100::1
アドレス総数約43億(2³²)── 枯渇問題あり約340澗(2¹²⁸)── 実質無限
VPC CIDRの例10.0.0.0/16(65,536 IPs)/56(Amazon提供、膨大なIPs)
サブネットCIDRの例/24(256 IPs)/64(約1844京 IPs)
プライベート範囲10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16すべてグローバルユニーク(NATが基本不要)
AWSでの提供ユーザーがCIDRを選択Amazon提供の/56 CIDRを使用
NAT Gatewayの必要性プライベートサブネットからの外向き通信に必要Egress-only Internet Gatewayを使用

📐 CIDRブロック設計

VPCとサブネットのアドレス範囲の決め方

4️⃣ IPv4 CIDRブロック

10.0.0.0 / 16
ネットワーク部(16ビット)+ ホスト部(16ビット)= 65,536アドレス

RFC 1918で定義されたプライベートIP範囲から選びます。たとえ話でいうと「ニュータウンの区画番号」のルールです。

  • 📘 10.0.0.0/8 ── 大規模向け(約1677万アドレス)
  • 📗 172.16.0.0/12 ── 中規模向け(約104万アドレス)
  • 📙 192.168.0.0/16 ── 小規模向け(約65,000アドレス)

6️⃣ IPv6 CIDRブロック

2600:1f00:6000:: / 56
Amazon提供のグローバルユニークプレフィックス + サブネット識別子

IPv6はAWSが自動的に/56のCIDRブロックを割り当ててくれます。ユーザーが範囲を選ぶ必要はありません。

  • 🔮 VPC全体に /56 を割り当て(256個のサブネットが可能)
  • 🔮 各サブネットに /64 を割り当て(約1844京アドレス)
  • 🔮 すべてグローバルアドレス(プライベート範囲の概念なし)

デュアルスタック サブネット設計の例

🏘️ VPC:IPv4 = 10.0.0.0/16 | IPv6 = 2600:1f00:6000::/56 🌳 パブリックサブネット A(AZ-a) IPv4 CIDR 10.0.1.0/24 256 アドレス IPv6 CIDR 2600:...:a100::/64 ≈ 1844京 アドレス 🌳 パブリックサブネット B(AZ-c) IPv4 CIDR 10.0.3.0/24 256 アドレス IPv6 CIDR 2600:...:a300::/64 ≈ 1844京 アドレス 🔒 プライベートサブネット A(AZ-a) IPv4 CIDR 10.0.2.0/24 256 アドレス IPv6 CIDR 2600:...:a200::/64 ≈ 1844京 アドレス 🔒 プライベートサブネット B(AZ-c) IPv4 CIDR 10.0.4.0/24 256 アドレス IPv6 CIDR 2600:...:a400::/64 ≈ 1844京 アドレス

🛤️ IPv4からIPv6への移行パス

段階的にデュアルスタックへ移行する推奨ステップ

Step 1
4️⃣

IPv4のみ

既存の構成。
多くの環境がここからスタート

Step 2
4️⃣6️⃣

デュアルスタック

VPCにIPv6 CIDRを追加。
両方のプロトコルで通信可能に

Step 3
6️⃣

IPv6のみ(将来)

IPv4を段階的に廃止。
IPv6ネイティブ環境へ

🔧 デュアルスタックVPCの構築手順

AWS CLIを使った実装の流れ

1

VPCを作成し、IPv6 CIDRを関連付ける

まずIPv4のVPCを作成し、その後AmazonのIPv6プールからIPv6 CIDRブロックを追加します。

AWS CLI
# VPC作成(IPv4 CIDR指定) aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=DualStack-VPC}]' # IPv6 CIDRブロックの関連付け aws ec2 associate-vpc-cidr-block \ --vpc-id vpc-0abc123def456 \ --amazon-provided-ipv6-cidr-block
2

サブネットにIPv6 CIDRを割り当てる

既存のサブネットまたは新規サブネットにIPv6の/64 CIDRを追加します。

AWS CLI
# サブネットにIPv6 CIDRを関連付け aws ec2 associate-subnet-cidr-block \ --subnet-id subnet-0abc123 \ --ipv6-cidr-block 2600:1f00:6000:a100::/64
3

ルートテーブルを更新する

IPv6トラフィックのルートを追加します。パブリックサブネットはIGW、プライベートサブネットはEgress-only IGWを使います。

AWS CLI
# パブリックサブネット:IPv6 → Internet Gateway aws ec2 create-route \ --route-table-id rtb-0abc123 \ --destination-ipv6-cidr-block ::/0 \ --gateway-id igw-0abc123 # プライベートサブネット:IPv6 → Egress-only IGW aws ec2 create-egress-only-internet-gateway \ --vpc-id vpc-0abc123def456 aws ec2 create-route \ --route-table-id rtb-0def456 \ --destination-ipv6-cidr-block ::/0 \ --egress-only-internet-gateway-id eigw-0abc123
4

セキュリティグループを更新する

IPv6アドレスからのトラフィックを許可するルールを追加します。IPv6の「すべて」は ::/0 で表記します。

AWS CLI
# IPv6からのHTTPSアクセスを許可 aws ec2 authorize-security-group-ingress \ --group-id sg-0abc123 \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,Ipv6Ranges=[{CidrIpv6=::/0}]'
5

EC2インスタンスにIPv6を割り当てる

起動時に自動割り当てを有効化するか、既存インスタンスに手動でIPv6アドレスを割り当てます。

AWS CLI
# サブネットのIPv6自動割り当てを有効化 aws ec2 modify-subnet-attribute \ --subnet-id subnet-0abc123 \ --assign-ipv6-address-on-creation # 既存インスタンスにIPv6を手動割り当て aws ec2 assign-ipv6-addresses \ --network-interface-id eni-0abc123 \ --ipv6-address-count 1

💼 デュアルスタックの活用シーン

どんな場面でデュアルスタック構成が役立つのか

🌍

グローバルWebサービス

世界中のユーザーがIPv4/IPv6のどちらからでもアクセスできるWebサイトやAPIを提供。モバイルキャリアのIPv6移行に対応。

必須レベル
📱

モバイルアプリバックエンド

AppleのApp Store審査ではIPv6対応が必須。モバイルキャリアの多くがIPv6をデフォルトで使用するため、対応は不可欠。

必須レベル
🏢

ハイブリッドクラウド環境

オンプレミスとAWSの間でIPv4/IPv6の両方を使い、移行期にも通信を中断しない構成を実現。

推奨
🤖

IoT / 大規模デバイス管理

膨大な数のIoTデバイスにIPv6のグローバルアドレスを直接付与。NATを通さないシンプルな通信が可能に。

先進ユースケース

ベストプラクティス

デュアルスタックVPC運用で押さえるべき6つの原則

🆕

新規VPCはデュアルスタックで

最初からIPv6を有効にしておくと、後から追加する手間が省ける。

🔒

セキュリティグループをIPv6対応に

IPv6ルールを忘れると意図しない通信遮断が起きる。IPv4とIPv6の両方を明示的に設定。

🚪

Egress-only IGWを活用

プライベートサブネットのIPv6リソースが外部にアクセスする際は、NAT Gatewayの代わりに使う。

📋

DNS設定を確認する

AAAAレコード(IPv6用)の登録を忘れずに。Route 53でAとAAAAの両方を設定する。

🧪

段階的にテストする

まず非本番環境でデュアルスタックを有効化し、動作確認してから本番へ展開する。

📊

VPC Flow Logsで監視

IPv4/IPv6両方のトラフィックをFlow Logsで記録し、意図しない通信がないか監視する。

⚠️ デュアルスタック構成の注意点

  • すべてのAWSサービスがIPv6に対応しているわけではない。使用するサービスの対応状況を事前に確認すること
  • IPv6アドレスはすべてグローバルユニークなため、セキュリティグループとネットワークACLの設定がより重要になる
  • 既存のVPCにIPv6を追加する場合、ルートテーブル・セキュリティグループ・NACLの更新を漏れなく行う必要がある
  • IPv4の 0.0.0.0/0 と IPv6の ::/0 は別のルールとして管理される。片方だけ設定するとトラフィックが片寄る
  • Egress-only Internet GatewayはIPv6専用。IPv4のNAT GatewayとIPv6のEgress-only IGWの両方が必要な場合がある

よくある質問

デュアルスタックに関する疑問を解消

💬 デュアルスタックにすると料金は増えますか?
IPv6アドレスの使用自体は無料です。ただし、データ転送量やNAT Gateway / Egress-only IGWの利用料は通常通り発生します。IPv6を使うことでNAT Gatewayが不要になるケースでは、むしろコスト削減になる可能性があります。2024年2月からパブリックIPv4アドレスに課金が開始されたため、IPv6への移行はコスト面でもメリットがあります。
💬 既存のVPCにIPv6を後から追加できますか?
はい、可能です。既存のVPCに対して associate-vpc-cidr-block コマンドでIPv6 CIDRを追加し、各サブネットにもIPv6 CIDRを割り当てることで、既存の構成を壊さずにデュアルスタック化できます。ルートテーブルとセキュリティグループの更新を忘れないようにしましょう。
💬 IPv6のみのVPCは実用的ですか?
AWSはIPv6のみのサブネットをサポートしていますが、一部のAWSサービスやサードパーティツールがまだIPv6に完全対応していない場合があります。現時点では、デュアルスタック構成が最も安全で互換性の高い選択肢です。IPv6のみのVPCはコスト最適化やIPv4アドレス節約の観点で検討に値します。
💬 Egress-only IGWとNAT Gatewayの違いは?
NAT GatewayはIPv4トラフィック用で、プライベートサブネットから外部への通信を可能にします(有料)。Egress-only Internet GatewayはIPv6トラフィック用で、同じくプライベートサブネットからの外向き通信のみを許可します。IPv6ではアドレスがすべてグローバルなので、Egress-only IGWが「外には出られるが外からは入れない」役割を果たします。
💬 IPv6の「/64」サブネットはアドレスが多すぎませんか?
IPv6の設計思想では、/64がサブネットの標準サイズとして推奨されています。これにより SLAAC(ステートレスアドレス自動設定)が正しく動作します。アドレスの「もったいない」感覚はIPv4の概念です。IPv6では豊富なアドレス空間をシンプルな運用のために活用する設計が意図されています。

📝 まとめ

VPCのデュアルスタック構成は、IPv4の世界とIPv6の世界を橋渡しする「二刀流」のネットワーク設計です。新規構築なら最初からデュアルスタックを選択し、既存環境でも段階的にIPv6を追加していくのが現在のベストプラクティスです。

🏘️

VPC = 自分だけの
ネットワーク空間

🔀

デュアルスタック =
IPv4 + IPv6 併用

📐

IPv4は/24
IPv6は/64が標準

🚀

新規は最初から
デュアルスタックで

Created by SSuzuki1063

AWS SAP Learning Resources