107. サブネットは1つのAZに閉じた小区画である — AWSが各サブネットで先取りする5つのアドレス
VPCという大きなアドレス空間を、さらに小さな区画に切り分け、その一つひとつを物理の場所(AZ)に貼り付ける——その仕組みを図で追っていきます。
① プレフィックスを1bit伸ばすと、区画が2つに割れる
- 公式の例そのまま: 10.0.0.0/24のVPC(256アドレス)は、128アドレスずつの2つのサブネットに分割できる
- サブネットのCIDRは、VPCのCIDRと同じ(=VPC全体で1サブネット)か、その部分集合。複数のサブネットを作るとき、それらのCIDRは重複できない
サブネットはVPCのアドレス空間の部分集合。プレフィックスを1bit伸ばすごとに区画が2つに割れる——DynamoDB編で見た「キー空間をプレフィックスで区切る」のと同じ、2進数の階層分割だ。
② サイズは /28 から /16 まで
- 公式: The allowed IPv4 CIDR block size for a subnet is between a /28 netmask and /16 netmask
- CLI/APIで作ると、CIDRは正規形(canonical form)に自動修正される。例: 100.68.0.18/18 と指定すると 100.68.0.0/18 になる——プレフィックスの外側のビットは切り捨てられる
サブネットのサイズは /28(16アドレス)〜 /16(65536アドレス)の範囲。次のセクションで見るように、この「16アドレス」は額面どおりには使えない。
③ 各サブネットの先頭4つ+末尾1つは、AWSが先取りする
- 公式: The first four IP addresses and the last IP address in each subnet CIDR block are not available for your use
- DNSは「VPCのネットワーク範囲の基点+2」。VPCが複数CIDRを持つ場合、DNSサーバーはプライマリCIDR内にあるが、AWSは全CIDRで「各サブネット範囲の基点+2」も予約する
- 例外: BYOIPで自分のIPv4レンジを持ち込んだ場合は、ネットワークアドレス・ブロードキャストアドレスも含め全アドレスを使える、と公式は明記している
ネットワークアドレス(先頭)とブロードキャストアドレス(末尾)が使えないのはIPネットワーク共通の古典的な約束事。AWSはそこにルーター(+1)・DNS(+2)・予備(+3)を足して合計5つを予約した——「マネージドサービスの中身」が、予約アドレスという形で顔を出している。
④ だから /28 は「16個中11個」しか使えない — 小さく切りすぎる罠
- /28は16アドレスだが、予約5を引くと11しか残らない
- 予約数は5で固定。だから区画が小さいほど、使える比率が下がる
サブネットを小さく切りすぎると、リソースに割り当てられるアドレスがENI(ネットワークインターフェース)ごと足りなくなる。Lambda編・コンテナ運用で「サブネットのIPが枯れてスケールできない」という話の正体は、この固定の予約5と小さいCIDRの掛け算だ。
⑤ 各サブネットは丸ごと1つのAZの中にある — AZをまたげない
- 公式: Each subnet must reside entirely within one Availability Zone and cannot span zones
- 公式: リソースを別々のAZに配置すれば、単一AZの障害からアプリケーションを守れる。公式の構成図も、2つのAZそれぞれにパブリック+プライベートのサブネット対を置く
「論理の区画(IP範囲)を、物理の場所(AZ)に貼り付ける」——これはDynamoDB編のパーティション(論理キー空間→物理ストレージ)やKinesisのシャードと同じ設計思想だ。可観測性編・コンテナ編で前提にしてきた「マルチAZ配置」の正体は、実は「サブネットを複数のAZに作る」ことだった、という種明かしでもある。
⑥ 「パブリック/プライベート」はルーティングで決まる — サブネット自体の属性ではない
- 公式: The subnet type is determined by how you configure routing for your subnets
- 現行の公式ページは、この4種に加えてAmazon EVS(VMware環境サービス)が作る特殊な「EVSサブネット」も挙げている。一般のVPC設計で意識するのは4種でよい
- 公式: Every subnet that you create is automatically associated with the main route table for the VPC
- 公式: 各サブネットは必ず1つのネットワークACLに関連付く。デフォルトNACLはすべてのインバウンド/アウトバウンドのトラフィックを許可する
サブネットが「パブリック」なのは、その中に属性フラグがあるからではなく、ルートテーブルがIGWを指しているから。次のルーティング編で、この「ルートテーブルが行き先を決める」仕組みを詳しく追う。