13 min read

Cloud IPAM: Managing IPs Across AWS, Azure, and GCP

How a neutral source of truth like Obelinf compares with AWS VPC IPAM, Azure IPAM, and GCP native tooling for teams running address space across multiple clouds: capabilities, pricing, blind spots, and when each option fits.

ByAndré Ribeiro· Founder, Obelinf
Cloud IPAM: Managing IPs Across AWS, Azure, and GCP
Cloud IPAM: Managing IPs Across AWS, Azure, and GCP · August 14, 2026
On this page

Private IPv4 space is one of the few resources your workloads share across every environment, yet none of the major clouds treats it the same way. AWS ships a mature IPAM service with automatic discovery and a paid advanced tier. Azure added its own IPAM to Virtual Network Manager, a younger service with real limitations. GCP offers building blocks instead of a console, leaving allocation planning to whoever writes the Terraform. The result for a team running workloads in two or three clouds is the same in every combination: each provider sees only its own slice of your address space, and the overlaps, conflicts, and wasted ranges live in the gap between them.

This guide compares the three approaches on the dimensions that matter when you actually operate across clouds: how each one models address space, what it discovers automatically, what it enforces, what it costs, and where its view stops. It then maps the blind spots that all three share and argues for the piece most multi cloud teams are missing, a single neutral ledger that tracks AWS, Azure, and GCP space next to your on premises ranges. The table below gives the quick landscape, and the sections that follow go into the detail behind it.

At a Glance: Cloud IPAM Options

Tool / Option Deployment Model Ideal For Key Strengths Licensing / Pricing
Neutral source of truth (Obelinf) SaaS Multi cloud and hybrid teams One ledger, conflict detection across clouds, topology, audit trail Subscription with a free tier
AWS VPC IPAM Native AWS service AWS only, multi account organizations Automatic VPC discovery, allocation history, BYOIP and IPv6 Free tier (single account, single region); advanced tier about $0.20 per IP per month
Azure IPAM Native Azure service Azure only, centralized pool hierarchy Pools nested up to seven levels, Azure Policy enforcement About $3.60 per active IP per month
GCP native tooling Building blocks, no console GCP only, Terraform driven Internal ranges API, primary and secondary ranges, GKE Auto IPAM Free, no IPAM charge

Why Per Provider IPAM Is a Trap

An organization /16 address space split into four slices tracked by AWS IPAM, Azure IPAM, no native tool, and a spreadsheet 10.0.0.0/16 Organization address space AWS 10.0.0.0/18 tracked by AWS IPAM Azure 10.0.64.0/18 tracked by Azure IPAM GCP 10.0.128.0/18 no native IPAM On premises 10.0.192.0/18 spreadsheet or legacy IPAM Each cloud tracks only its own slice. The full picture lives in no single tool, so overlaps surface only when peering fails.

The trap starts with how the three clouds divide your space. Assume an organization holds 10.0.0.0/16. AWS gets a slice for its VPCs, Azure gets another for its virtual networks, GCP gets a third, and the on premises network keeps whatever is left, and each slice gets tracked by a different tool with different rules. AWS IPAM will happily report that its slice is healthy and conflict free, Azure IPAM will say the same about its own, and nobody’s tool can tell you that the same /24 is now active on both sides of a future peering link.

The deeper problem is that provider IPAMs are designed to answer provider questions: how much of this region pool is used, which account holds this CIDR, when was this VPC allocated. Those are useful questions, but they are all scoped to one cloud. As soon as your architecture spans two clouds, or one cloud plus a data center, you need answers that cut across scopes, and the moment you need a cross cloud answer you are back to copying numbers out of three consoles. That is the point where per provider IPAM quietly stops being IPAM and becomes three separate spreadsheets with better APIs. For teams in that situation, a multi-site network view that includes every environment is what actually prevents the classic overlap incidents.

What AWS VPC IPAM Actually Gives You

AWS IPAM hierarchy: a top level IPAM with private and public scopes, each holding pools that allocate CIDRs to VPCs IPAM Private scope Public scope Prod pool 10.0.0.0/16, /24 per VPC BYOIP pool 203.0.113.0/24 public CIDRs flow down the tree: scopes split private and public space, pools hand ranges to VPCs, and every allocation is recorded.

AWS built the most complete native IPAM of the three, and it shows. VPC IP Address Manager runs as a top level IPAM resource with two built-in scopes, one for private space and one for public, and under those scopes you build pools: regional pools, business unit pools, pools for specific environments. CIDRs flow down the tree, and when you create a VPC you allocate from a pool rather than typing a range by hand. IPAM automatically discovers VPCs across the accounts in your organization, so existing infrastructure shows up without an opt in step, and it records the history of every allocation, which turns “who owns this range” from a conversation into a query.

The cost model is where AWS earns its reputation for pragmatism. The free tier covers a single account and single region, and it includes BYOIP, public IP insights, and IPv6 handling, but not private IPv4 management or pool sharing. The advanced tier unlocks private IPv4 management, cross account and cross region operation through AWS Organizations, and allocation history, and it bills per active IP at a rate that works out to roughly $0.20 per IP per month. AWS’s own example of 7,000 active IPs for a month lands near $1,360, and for a large organization that number is trivial next to the labor it replaces. The tiered model is still worth understanding before you roll it out, because the free tier silently stops covering you the moment you leave a single account.

Azure IPAM: Centralized, With Caveats

Monthly cost per active IP: AWS advanced tier about $0.20 versus Azure IPAM about $3.60 Monthly cost per active IP address $0 $1 $2 $3 AWS advanced tier $0.20 Azure IPAM $3.60 Azure bills about 18 times more per managed IP than the AWS advanced tier, so the gap compounds as your fleet grows.

Azure’s answer arrived later and is younger. IPAM in Azure runs inside Azure Virtual Network Manager, and it centers on a pool hierarchy: a root pool, then child pools nested up to seven levels deep, with static reservations you can place for on premises ranges so the allocator never hands them out. When you create a virtual network you attach it to a pool and specify how many addresses you need, and IPAM assigns a non overlapping block, with IPv4 and IPv6 both supported. You can even pair it with Azure Policy to deny any virtual network that lacks an IPAM allocation, which is the most direct enforcement mechanism of the three clouds.

The caveats matter. Azure IPAM does not discover existing virtual networks: anything created before IPAM exists must be migrated in by hand, which for established subscriptions means a retrofit project rather than a flip of a switch. It manages private space only, it will not remove address space once a network is under IPAM management, and the price is steep: $0.005 per active IP per hour, about $3.60 per IP per month, roughly 18 times the AWS advanced tier. The billing is per active IP, so it scales with every network interface in your fleet rather than with the size of your address space. If you are evaluating it purely as a way to stop duplicate allocations in a few subscriptions, run the monthly number before you commit, because a serious deployment can cost more than a source of truth that also covers the rest of your infrastructure.

GCP: A Toolbox Instead of a Service

GCP address building blocks: a global VPC network with regional subnets that split into primary and secondary ranges for VMs, GKE pods, and services VPC network global, spans regions Regional subnet 10.10.0.0/16 Primary range VMs 10.10.0.0/17 Secondary range GKE pods 10.10.128.0/17 Secondary range GKE services 10.11.0.0/16 One subnet carries several logical ranges, and no GCP console tracks the plan behind them or what they are for.

Google Cloud is the honest outlier: there is no GCP IPAM console, and Google’s own answer to the question is a set of building blocks. VPC networks are global, subnets are regional, and each subnet carries a primary range for VM addresses plus optional secondary ranges used for alias IPs, which is how GKE pods and services get their space. The internal ranges API, launched in 2024, lets you reserve blocks of internal address space and protect them from allocation, including ranges that belong to on premises or other clouds, so Terraform can allocate subnets from a known pool instead of guessing. Subnets can be expanded in place without downtime, and GKE Auto IPAM, still in preview, handles pod range allocation dynamically.

What GCP lacks is the thing the other two provide: a product that tracks what you planned versus what exists. Nothing in the console shows your whole address plan, checks a proposed range against every other environment, or keeps a history of who allocated what and why. In practice GCP teams end up with the allocation plan living in Terraform state, a wiki, or a spreadsheet, and the gap between those artifacts is where duplicate ranges quietly appear. GCP does not charge for IPAM, but the absence of a charge is not the same as free: you pay in engineering time spent reconciling ranges that a console in another cloud would track automatically. Reserving internal ranges is the right first step on GCP, but the cross environment picture still has to live somewhere else.

Where the Blind Spots Overlap

The same 10.0.1.0/24 subnet allocated in AWS and Azure, with on premises space invisible to both The same /24 in two clouds AWS VPC 10.0.1.0/24 in use Azure VNet 10.0.1.0/24 in use On premises 10.0.0.0/16 invisible to both no shared conflict check Both ranges were allocated independently by clouds that cannot see each other. The conflict surfaces only when peering fails.

Put the three side by side and the shared gaps are easy to see. Each product sees only its own cloud: AWS IPAM has no idea what Azure allocated, Azure IPAM cannot see GCP secondary ranges, and nothing in any of the three knows about your on premises or colocation space except as a manually typed reservation. Overlap detection, the feature teams assume exists everywhere, actually runs only inside each provider’s own world, and only for resources that have opted in. The moment the same /24 exists in two clouds, every provider dashboard will report zero conflicts, right up until a peering link or site to site VPN fails to come up.

The other shared gap is scope of what counts as an address. Cloud IPAMs track the ranges they hand out, but a real fleet also has public addresses, BYOIP blocks, VPN tunnel endpoints, load balancer IPs, and on premises VLANs, and each of those lives in a different system with a different notion of “in use”. Utilization reports are per cloud and per pool, allocation history is per cloud, and nothing produces a single answer to the simplest question an engineer asks during an incident: which of my things is using this address, and what changed around it recently? Teams that try to hold all of it in one cloud’s IPAM eventually discover they are maintaining the same spreadsheet they replaced, just with a steeper learning curve. A neutral IPAM layer that accepts ranges from every source is what closes that gap.

One Address Ledger Across Every Cloud

Obelinf approaches this as a single neutral ledger for address space from every source: AWS subnets, Azure virtual networks, GCP ranges, and on premises VLANs all sit in the same hierarchy, under the same sites, with the same IP address management rules applied to all of them. When an engineer proposes a new range, conflict detection runs across the entire organization rather than inside one provider, so the duplicate that would have surfaced during a peering outage is caught at planning time. Every subnet and IP carries its utilization, its VLAN and VRF context, and its links to the devices and interfaces that use it, and every allocation or change lands in an audit trail that spans all three clouds.

The view you get is the one the provider tools cannot produce: a network topology that draws your clouds and on premises sites together, device inventory tied to addresses, and utilization across everything, queried from one place instead of three consoles. Because it is a source of truth rather than a discovery tool, it also documents the things clouds never see: reserved blocks, planned ranges, and the on premises space that carries traffic between environments. For teams whose address space spans AWS, Azure, and GCP, the practical choice is not which cloud’s IPAM to adopt. It is whether to keep maintaining three partial ledgers or adopt one that holds the whole picture.

Frequently Asked Questions

Does AWS IPAM work across multiple accounts and regions?
Yes, with the advanced tier. The advanced tier of AWS VPC IPAM manages private IPv4 space across accounts and regions through AWS Organizations, shares pools with Resource Access Manager, and keeps allocation history for the whole organization. The free tier is limited to a single account and single region and excludes private IPv4 management. Obelinf can hold the same AWS ranges alongside Azure and GCP space when you need one view across clouds.
Is Azure IPAM free?
No. Azure IPAM bills per active IP address managed at roughly $3.60 per IP per month, on top of Azure Virtual Network Manager, which itself is free. A fleet of thousands of active IPs becomes a serious monthly line item, which is why some teams compare it against a single source of truth that also covers other clouds.
Does Google Cloud have an IPAM service?
Google Cloud does not offer a dedicated IPAM console like AWS or Azure. It provides building blocks: the internal ranges API for reserving and protecting address blocks, primary and secondary subnet ranges for GKE alias IPs, and GKE Auto IPAM for pod range allocation. Teams that want a single view of GCP space next to AWS, Azure, and on premises networks typically keep the plan in Obelinf instead.
What is the difference between AWS IPAM and Azure IPAM?
AWS IPAM automatically discovers VPCs across your organization, manages both private and public space, and has a free tier, while Azure IPAM requires virtual networks to opt in, manages private space only, and is paid per active IP. Both are limited to their own cloud, so neither detects overlaps with the other provider or with on premises ranges.
What is the best IPAM for a multi cloud environment?
For a multi cloud environment, provider IPAMs like AWS VPC IPAM and Azure IPAM are built for a single cloud, so a neutral source of truth that tracks AWS, Azure, GCP, and on premises space in one hierarchy is usually the answer. Obelinf provides conflict detection across the entire organization, utilization views, and change history for every environment, so the ledger does not stop at a cloud boundary.

Stop reaching for a spreadsheet

Obelinf keeps every subnet, device, circuit, and rack in one live source of truth, with audit logs and a topology view. Free for personal use.

Related Articles