AWSで始めるIPv6の世界:デュアルスタックネットワークの仕組みを「郵便配達」で理解しよう!
こんにちは!クラウドの深淵を日々探求しているSREです。
AWSを触り始めると必ずぶつかるのが「VPC」と「サブネット」という概念ですよね。これまでは「IPv4(192.168.x.xのようなアドレス)」だけで十分でしたが、現代のクラウドインフラでは「IPv6」の導入が避けて通れない道になりつつあります。
「IPv6って何だか難しそう…」「ビット数とか16進数とか、もうお腹いっぱい!」と感じているあなたへ。今日は、インフラエンジニアの現場で必ず直面する「デュアルスタックサブネット」の仕組みを、身近な「郵便配達」に例えて紐解いていきましょう。
—
1. なぜ今、IPv6なのか?:住所の「枯渇問題」
IPv4の世界では、使えるIPアドレスの数に限りがあります。世界中でスマホやIoT機器が増えすぎて、もはや新しい住所(IPアドレス)を発行できない限界に近い状態です。
そこで登場したのがIPv6です。IPv6は、地球上の砂粒の数よりも多いと言われるほど膨大なアドレスを持っています。AWSのVPCでも、IPv4とIPv6の両方を使えるようにする「デュアルスタック」という設定が、これからのインフラ構築の「標準」になりつつあります。
2. 郵便配達で例える「デュアルスタックサブネット」
想像してみてください。あなたは巨大なマンションの管理人に任命されました。
- IPv4の世界: 限られた部屋番号しかありません。空きが出るのを待つか、工夫して部屋を分け合う(NAT)必要があります。
- IPv6の世界: 宇宙規模の広大な敷地があります。部屋番号(IPアドレス)は、もはや足りなくなる心配がありません。
「デュアルスタックサブネット」とは、このマンションに「旧式の郵便ポスト(IPv4)」と「最新のデジタルポスト(IPv6)」の両方を設置するようなものです。どちらのアドレス宛の荷物が届いても、ちゃんと受け取れるようにする設定ですね。
3. どうやってIPv6を有効にするの?
AWSでIPv6を使い始めるには、まずはVPCに「IPv6の大きな土地(CIDRブロック)」を割り当てる必要があります。
手順1:VPCにIPv6を割り当てる
AWSマネジメントコンソールやAWS CLIで、VPCに対して「AWSから割り当てられたIPv6 CIDRブロック」を関連付けます。
# VPCに対してIPv6 CIDRブロックを付与するコマンド例
aws ec2 associate-vpc-cidr-block \
--vpc-id vpc-xxxxxxxxxxxxxxxxx \
--amazon-provided-ipv6-cidr-block
手順2:サブネットにもIPv6を割り当てる
VPCという「町」に土地ができたら、次は「サブネット(区画)」にもIPv6を割り当てます。このとき、サブネット設定で IPv6 CIDR block を指定するだけでOKです。
—
4. 自動でアドレスが決まる!?「SLAAC」の魔法
ここが一番面白いポイントです!IPv4の世界では、DHCPサーバーという「住所割り当て係」が、個々のサーバーに「君の住所はこれだよ!」と手渡していました。
しかし、IPv6の世界には「SLAAC(スラアク:Stateless Address Autoconfiguration)」という便利な仕組みがあります。
- SLAACの挙動:
1. インスタンス(サーバー)が起動してネットワークに参加する。
2. ルーター(AWSのゲートウェイ)に向かって「このサブネットのプレフィックス(町名のようなもの)は何?」と聞く。
3. ルーターが「町名はこれだよ」と教えてくれる。
4. インスタンス自身が、自分のMACアドレスなどを元に、残りの住所(部屋番号)を勝手に決める。
そう、誰も管理していなくても、自分で勝手に住所を確定できてしまうのです!これが、クラウドで何千台ものインスタンスを起動する際に非常に効率的な理由です。
—
5. 実践:現場で気を付けるべきポイント
最後に、実務でハマりやすいポイントを一つだけ伝授します。
IPv6を使う場合、インターネットに出るための入り口として Egress-Only Internet Gateway というものを使います。これは「外からの侵入は防ぐけれど、中からの通信は外に出せる」という、セキュリティと利便性を両立する素晴らしい仕組みです。
設計のヒント:
- パブリックサブネット:
Internet Gatewayを使い、IPv4/IPv6両方で外と通信可能にする。 - プライベートサブネット:
Egress-Only Internet Gatewayを使い、外からの攻撃を完全に遮断しつつ、アップデート等の通信だけ許可する。
# CloudFormationやTerraformで記述する際のイメージ
# IPv6を有効にしたサブネットの定義例
Resources:
MySubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
Ipv6CidrBlock: "2001:db8:1:1::/64" # 割り当てられたIPv6ブロックの一部
AssignIpv6AddressOnCreation: true # 起動時に自動でIPv6を割り当てる設定
最後に:一歩ずつ進んでいきましょう
IPv6は、最初は「記号の羅列」に見えて拒否感があるかもしれません。ですが、一度その「自分たちで住所を決める(SLAAC)」という自律的な仕組みを理解してしまえば、IPv4よりもずっとシンプルで力強いインフラが構築できるようになります。
まずは1つのVPCにIPv6を割り当てて、インスタンスにアドレスが自動で付与される様子を眺めてみてください。その瞬間に、ネットワークエンジニアとしての景色が少しだけ変わるはずです。
これからも、クラウドの現場で役立つ知見を共有していきますね。質問があればいつでもコメントください!それでは、楽しいクラウドライフを!
コメント