Plan your cloud network layout for AWS, Azure, or GCP. Define subnets, get provider-aware usable host counts, and generate ready-to-run CLI commands and Terraform HCL.
| Name | Prefix | AZ | Type | IPv4 CIDR | Total IPs | AWS Usable | Range | |
|---|---|---|---|---|---|---|---|---|
| 10.0.0.0/24 | 256 | 251 | 10.0.0.4 - 10.0.0.254 | |||||
| 10.0.1.0/24 | 256 | 251 | 10.0.1.4 - 10.0.1.254 | |||||
| 10.0.4.0/22 | 1,024 | 1,019 | 10.0.4.4 - 10.0.7.254 | |||||
| 10.0.8.0/22 | 1,024 | 1,019 | 10.0.8.4 - 10.0.11.254 | |||||
| 10.0.12.0/24 | 256 | 251 | 10.0.12.4 - 10.0.12.254 | |||||
| 10.0.13.0/24 | 256 | 251 | 10.0.13.4 - 10.0.13.254 |
AWS reserves 5 IPs per subnet (.0 network, .1 router, .2 DNS, .3 reserved, .255 broadcast)
Free range: 10.0.14.0 – 10.0.255.255
# AWS VPC & Subnet creation -eu-west-1
# Generated by VLANlab (vlanlab.com/cloud/vpc-planner)
aws ec2 create-vpc \
--cidr-block 10.0.0.0/16 \
--region eu-west-1 \
--tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=main-vpc}]'
# Store the VPC ID
VPC_ID=$(aws ec2 describe-vpcs --filters Name=cidr,Values=10.0.0.0/16 --query 'Vpcs[0].VpcId' --output text)
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.0.0/24 \
--availability-zone eu-west-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-a}]'
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.1.0/24 \
--availability-zone eu-west-1b \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-b}]'
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.4.0/22 \
--availability-zone eu-west-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=private-a}]'
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.8.0/22 \
--availability-zone eu-west-1b \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=private-b}]'
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.12.0/24 \
--availability-zone eu-west-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=db-a}]'
aws ec2 create-subnet \
--vpc-id $VPC_ID \
--cidr-block 10.0.13.0/24 \
--availability-zone eu-west-1b \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=db-b}]'
# Internet Gateway (for public subnets)
# aws ec2 create-internet-gateway
# aws ec2 attach-internet-gateway --vpc-id $VPC_ID --internet-gateway-id $IGW_ID
# NAT Gateway (for private subnets outbound traffic)
# aws ec2 create-nat-gateway --subnet-id $PUBLIC_SUBNET_ID --allocation-id $EIP_IDThe Cloud VPC Planner helps network engineers design subnet layouts for AWS VPC, Azure Virtual Networks, and Google Cloud VPC before touching the cloud console. Enter your address space, define subnets across availability zones, and get instant CLI commands or Terraform HCL you can run directly. Each provider reserves a different number of IPs per subnet (AWS and Azure reserve 5, GCP reserves 4), so usable host counts are calculated per-provider automatically.
The standard three-tier layout (public, private, database subnets across two AZs) is pre-loaded for AWS and Azure to match common production architectures. For GCP, subnets are regional rather than zonal, so the AZ column is omitted. Output includes AWS CLI, Azure CLI, Bicep, gcloud CLI, and Terraform HCL so you can use whichever IaC tool your team already uses.