106. VPCは32bitの数値空間の区画である — CIDRという『ネットワーク部/ホスト部』の線引き
マネージドの仮想ネットワークを作るとき最初に求められる「10.0.0.0/16」という呪文が、実は32bitの整数をどこで折るかという2進数の算数だったことを、ビット列の図で追っていきます。
① IPアドレスは「4つの数字」ではなく「32bitの整数」である
- 8bitで表せる範囲は 0〜255(2^8 = 256通り)。だから各数字は0〜255に収まる。
- 32bit全体で表せるアドレスは 2^32 = 約43億個。
「10.0.0.1」は4つの数字ではなく、32bitの整数を8bitずつ4回に区切って人間が読みやすくしただけのもの。IPアドレスの世界では数値そのものが住所になる——DynamoDB編ではキーをハッシュで数値に変換して住所を決めたが、ここでは数値がそのまま住所である、という対になる発想。
② スラッシュの数字が「どこで折るか」を決める — CIDR表記
- 「/16」= 左から16bitがネットワーク部、という意味。CIDR = Classless Inter-Domain Routing(クラスレス・ドメイン間ルーティング)表記。
- ネットワーク部が同じアドレスは「同じ区画に属する」。ホスト部だけが各ホストで異なる。
CIDR表記のスラッシュの数字は、32bitの列を「ネットワーク部(区画の住所)」と「ホスト部(区画内の番号)」のどこで折るかを指定する目盛り。VPCとは、この線引きで切り出された32bit数値空間の一区画にほかならない。
③ プレフィックスが1増えるごとにアドレス数が半分になる — /16〜/28の階段
- アドレス数 = 2^(32 − プレフィックス長)。/16 なら 2^16 = 65,536、/28 なら 2^4 = 16。
- プレフィックスが1増える = 線引きが右に1bitずれる = ホスト部が1bit縮む = 表せる番号が半分になる。
- VPC作成時はIPv4 CIDRブロックの指定が必須。許される範囲は公式に「/16(65,536アドレス)〜/28(16アドレス)」。
プレフィックス長を1増やすと、ホスト部のビットが1つ減り、区画に入るアドレス数がきっちり半分になる——すべて2の冪で動く。プレフィックス長とアドレス数が2の冪で対応するのは、キャッシュ編の16,384スロット(2^14)で見た「2進数で世界を切る」発想と同じ。
④ どこから切り出すか — 推奨レンジと、指定できない予約区画
- RFC 1918 の3レンジは公式ドキュメントの表そのまま。VPC作成時はこれらからの切り出しが推奨。
- 指定不可の区画は「用途が予約されているから」区画の住所には使えない。169.254.0.0/16 はリンクローカルアドレス範囲。
- 172.17.0.0/16 は一部のAWSサービス(AWS Cloud9・Amazon SageMaker AI)が使うため、IPアドレス衝突を避けるためVPC作成時に使わないことと公式が注記。
区画を切り出す場所には推奨(RFC 1918のプライベートレンジ)と禁止(ループバック・リンクローカル・マルチキャストなどの予約区画)がある。コンテナ編でマジックナンバーとして暗記していた 169.254.169.254 は、実はリンクローカルという予約区画の住人——だからVPCの住所には使えなかった、という種明かし。
⑤ ホスト部のビットは区画の名前には使えない — 自動で正規形に直される
- 公式仕様: CLI/APIで 100.68.0.18/18 と指定すると、自動的に正規形 100.68.0.0/18 に修正される。
- 区画の住所(ネットワーク部)を名乗るには、ホスト部は全ビット0でなければならない。ホスト部に値が乗っていると「区画そのもの」ではなく「区画内の1台」を指してしまう。
CIDRブロックは区画の「住所」なので、ホスト部のビットには意味がない——だからAWSはホスト部を0に戻した正規形へ自動修正する。この挙動こそ「ネットワーク部/ホスト部という線引きが本当に効いている」何よりの証拠で、②の線引きが図の上の話ではなくAPIの実挙動として現れる。
⑥ 区画は後から足せる — セカンダリCIDRと自動で載る local ルート
- セカンダリCIDRの追加サイズも /16〜/28。既存CIDRと重複してはいけない。
- 「既存のCIDRブロックはサイズを増減できない」「最初にVPCを作ったCIDR(プライマリ)は取り外せない」と公式明記。
- CIDRを関連付けると「宛先=そのCIDR / ターゲット=local」のルートがVPCの各ルートテーブルに自動追加される(ルートテーブルの仕組みは次々レッスンで詳しく)。
- IPv6は範囲を選べない: Amazonのプールから借りる方式で、/44〜/60 を /4 刻みで最大5個まで関連付けできる(例: 2001:db8:1234:1a00::/56 のように割り当てられ、範囲は自分では選べない)。
区画は固定ではなく後からCIDRブロックを足せる——ただし既存ブロックのサイズ変更もプライマリの取り外しも不可。追加した区画には「そのCIDR→local」というルートが自動で載り、VPC内の通信が成立する(この local ルートの意味は次々レッスンの主役)。マネージドの仮想ネットワークで最初に下す設計判断は、GUIの難しいボタンではなく「32bitをどこで折るか」という2進数の算数だった。