1.Subnet CIDR planning and IP allocation
A subnet's CIDR size decides how many IP addresses it holds — but AWS reserves 5 addresses in every subnet, so a /28 (16 addresses) really only has 11 usable, not 16.
Key features
- AWS reserves the first 4 and the last address in every IPv4 subnet — 5 total
- Those 5: network address, VPC router, DNS (base+2), future use, broadcast
- IPv4 subnets must be between /28 (smallest) and /16 (largest)
- Each subnet is pinned to exactly one Availability Zone
- Subnets cannot be resized after creation without creating a new one
Common subnet sizes and their usable IP count (5 always reserved)
- Whole: def usable_ips(prefix_len): total = 2 ** (32 - prefix_len) return total - 5 # AWS reserves 5 addresses in every subnet print(usable_ips(28)) # 11
- 2 ** (32 - prefix_len) — total addresses: /28 → 16 total addresses in the block
- total - 5 — usable = total − 5: network, router, DNS, future-use, and broadcast are always reserved
Command
usable IPs = 2^(32 - prefix) - 5Every AWS subnet reserves exactly 5 addresses — usable count is 2^(32 − prefix) − 5, not the raw block size, and smaller subnets lose a proportionally bigger share to that reservation.