Want a specific public/private split — e.g. 6 subnets, 2 public and 4 private? Enter the counts and apply: resizes to the smallest equal-size split that fits both (2 + 4 → 8 subnets), then tags the first as Public and the rest as Private.
| # | Subnet (CIDR) | Role | Usable Range | Total IPs |
Usable Hosts |
AWS & Azure Usable Hosts |
OCI Usable Hosts |
|---|
- AWS & Azure both reserve 5 addresses per subnet — AWS: network, VPC router, DNS at .2, one reserved for future use, broadcast; Azure: network, default gateway at .1, DNS at .2–.3, broadcast. Shown only where a subnet size is valid on both (AWS allows /16–/28, the narrower of the two ranges).
- OCI reserves 3 addresses per subnet (the first two addresses, the last address). Valid for subnet sizes /16–/30.
Rows outside the valid subnet-size range show —.
Export to Terraform / CloudFormation
Tag subnets above as Public or Private, then generate ready-to-review subnet resources — an Internet Gateway and shared public route table, and NAT Gateway(s) with private routing, per the strategy below. Security groups, NACLs, and VPC endpoints are not included; wire those into your own stack.
Single puts one NAT Gateway in one AZ — a dependency for every private subnet, plus cross-AZ transfer.
Regional (AWS, Nov 2025+) is one NAT Gateway that spans every AZ automatically, no public subnet needed to host it — AWS’s recommended default for most cases.
Per AZ is the classic pattern: one gateway per zone.
Same idea as AWS’s own “Auto-generate tag” in the VPC console: this value becomes the start of every resource’s Name tag, subnets included.
app → app-vpc, app-public-1,
app-private-1, app-igw, app-public-rt,
app-nat-…, app-private-rt-…