Skip to content
ProfessionalProAWS VPC

Lab 25: The IPAM Guardrail That Recorded The Violation

An IPAM pool with a /24 allocation rule, adopted so nobody could carve out a /16 again. Someone carved out a /16. Someone else created a VPC on top of an existing allocation. Both VPCs are up, both were created without a single error, and IPAM has an accurate record of each. The rule was never a gate.

Debugging time
~30 min
Reading time
10 min
Reported by
Network Governance
Tier
Professional
INC-1874SEV-3InvestigatingOpened 2026-09-30 14:05 UTC

IPAM allocation rules did not prevent an oversized VPC or an overlapping one; both created without error

Reported by Network Governance

We rolled out IPAM in Q2 specifically to stop address space being consumed by hand. The private pool has a minimum netmask rule of /24 and auto-import is on. The rollout review said this would "prevent noncompliant allocations".

This morning's resource view shows a /16 in the pool marked noncompliant, and a /23 sitting directly on top of one of our IPAM-allocated /24s. Neither team got an error. Neither used IPAM. Both VPCs are live with workloads in them.

I need to understand what the rule was doing if it was not doing this, and what actually stops it.

What you are working with

One IPAM, one pool, three VPCs, and a role that stands in for whoever builds VPCs in this account.

The pool, and what is in it
10.32.0.0/12 holds ~10^6 addresses. compliant, via IPAM at 10.32.0.0/24, 256 addresses; typed by hand at 10.41.0.0/16, 65,536 addresses. 6.2% of the block is allocated.10.32.0.0/12~10^6 addresses · 6.2% allocatedfree · 589,568free · 393,216compliant, via IPAM — 10.32.0.0/24 — 256 addressescompliant…10.32.0.0/24typed by hand — 10.41.0.0/16 — 65,536 addressestyped by hand10.41.0.0/16

The hand-typed /16 is 256 times the size of the allocation the rule permits. The third VPC, a /23 at 10.32.0.0, is not drawn because it sits on top of the /24 and this figure refuses overlaps; its absence here is the finding.

ResourceConfiguration
IPAMAdvanced Tier, one operating Region
Pool10.32.0.0/12, locale = Region, allocation_min_netmask_length = 24, auto_import = true
VPC compliantipv4_ipam_pool_id + netmask 24 → IPAM chose 10.32.0.0/24
VPC oversizedcidr_block = "10.41.0.0/16", typed
VPC overlappingcidr_block = "10.32.0.0/23", typed, on top of compliant
Role network-builderec2:*, no guardrail

Scope and constraints

  • In scope: what an allocation rule governs, what it does not, and the one mechanism that does refuse a hand-typed CIDR.
  • Out of scope: pool hierarchy design, sharing with RAM, cost forecasting. The IPAM guide covers those.
  • The reporter's rollout review was wrong, and it was wrong in a way the AWS documentation anticipates. Find the sentence.
  • Nothing in this lab is broken in the sense of traffic failing. Both hand-typed VPCs work. This is a governance incident, and the fix is a policy, not a route.

Deploy the broken state

cd lab-25-ipam-rules-are-a-report
terraform init
terraform apply

Under two minutes. IPAM then needs time to discover the hand-typed VPCs and attempt the import. Allow several minutes before the resource view is complete; if a VPC is missing from it, wait and query again.