All Azure networking requirements, best practices, limits and SKU comparisons in one place. Stop digging through hundreds of Microsoft docs pages.
Last updated: March 2026| Service | Subnet Name | Min CIDR | Usable IPs | Recommended | Notes | Docs |
|---|---|---|---|---|---|---|
| Azure VMware Solution | โ | /22 | 1019 | /22 | For AVS clusters | ๐ |
| App Service Environment v3 | โ | /24 | 251 | /24 | Delegation required. Isolated PaaS hosting | ๐ |
| Azure Kubernetes Service (CNI) | โ | /24 | 251 | /21 to /16 | 1 IP per pod + 1 IP per node. Plan for scaling | ๐ |
| Azure Firewall | AzureFirewallSubnet | /26 | 59 | /26 | Name mandatory. One per VNet | ๐ |
| Azure Firewall Management | AzureFirewallManagementSubnet | /26 | 59 | /26 | Required for forced tunneling | ๐ |
| Azure Bastion | AzureBastionSubnet | /26 | 59 | /26 | Name mandatory. Secure RDP/SSH access | ๐ |
| Azure Databricks | public + private | /26 ร 2 | 59 ร 2 | /26 ร 2 | Two subnets required for VNet injection | ๐ |
| VPN Gateway | GatewaySubnet | /27 | 27 | /27 | Name mandatory. No NSG. Shared with ExpressRoute GW | ๐ |
| ExpressRoute Gateway | GatewaySubnet | /27 | 27 | /27 | Same subnet as VPN Gateway | ๐ |
| Azure Route Server | RouteServerSubnet | /27 | 27 | /27 | Name mandatory. BGP route exchange | ๐ |
| SQL Managed Instance | โ | /27 | 27 | /26 | Delegation required. Dedicated subnet | ๐ |
| Azure Cache for Redis (Premium) | โ | /27 | 27 | /27 | 2 IPs per shard + 1 LB | ๐ |
| API Management (VNet) | โ | /27 | 27 | /27 | /29 possible for lightweight (stv2) | ๐ |
| Application Gateway | โ | /28 | 11 | /27 or /26 | One AppGW per subnet. Plan for autoscaling | ๐ |
| Azure NetApp Files | โ | /28 | 11 | /28 | Delegation required (Microsoft.NetApp/volumes) | ๐ |
| Azure Spring Apps | โ | /28 | 11 | /26 | Two subnets: service runtime + apps | ๐ |
| Entra Domain Services | โ | /28 | 11 | /28 | Managed AD in Azure | ๐ |
| Azure Dedicated HSM | โ | /28 | 11 | /28 | Hardware Security Modules | ๐ |
| Private DNS Resolver (inbound) | โ | /28 | 11 | /28 | Delegation required | ๐ |
| Private DNS Resolver (outbound) | โ | /28 | 11 | /28 | Delegation required | ๐ |
| Azure Container Instances | โ | /29 | 3 | /27 | Delegation required for container groups | ๐ |
| NAT Gateway | โ | /29 | 3 | โ | Attaches to an existing subnet, no dedicated subnet needed | ๐ |
| Private Endpoint | โ | /29 | 3 | /27 | 1 IP per Private Endpoint. Plan based on PE count | ๐ |
az network vnet subnet list-available-delegations --location westeurope
| Service | Delegation Name | Shared | Docs |
|---|---|---|---|
| App Service / Functions (VNet Integration) | Microsoft.Web/serverFarms | No | ๐ |
| App Service Environment v3 | Microsoft.Web/hostingEnvironments | No | ๐ |
| SQL Managed Instance | Microsoft.Sql/managedInstances | No | ๐ |
| Azure Container Instances | Microsoft.ContainerInstance/containerGroups | No | ๐ |
| Azure NetApp Files | Microsoft.NetApp/volumes | No | ๐ |
| Azure Databricks | Microsoft.Databricks/workspaces | No | ๐ |
| API Management | Microsoft.ApiManagement/service | No | ๐ |
| Azure Kubernetes Service | Microsoft.ContainerService/managedClusters | No | ๐ |
| Container Apps Environment | Microsoft.App/environments | No | ๐ |
| Azure Cosmos DB (dedicated) | Microsoft.AzureCosmosDB/clusters | No | ๐ |
| Azure Batch | Microsoft.Batch/batchAccounts | No | ๐ |
| Private DNS Resolver (inbound) | Microsoft.Network/dnsResolvers | No | ๐ |
| Private DNS Resolver (outbound) | Microsoft.Network/dnsResolvers | No | ๐ |
| Azure Machine Learning | Microsoft.MachineLearningServices/workspaces | No | ๐ |
| Criteria | Service Endpoint | Private Endpoint |
|---|---|---|
| IP Type | Public IP of the service | Private IP in your VNet |
| Granularity | Subnet level | Resource level (NIC) |
| Isolation | Partial (need firewall rules too) | Complete โ no internet exposure |
| DNS | Public DNS | Private DNS Zone required |
| On-Premises Access | No | Yes (via VPN/ExpressRoute) |
| Cross-Region | No | Yes |
| Cost | Free | ~$7.30/month + data |
| Complexity | Simple | Medium (DNS, NSG config) |
| Recommendation | Dev/Test, non-critical workloads | Production, compliance, hybrid |
| Azure Service | Service Endpoint | Private Endpoint | Private DNS Zone | Docs |
|---|---|---|---|---|
| Azure Storage (Blob/File/Queue/Table) | โ | โ | privatelink.blob.core.windows.net |
๐ |
| Azure SQL Database | โ | โ | privatelink.database.windows.net |
๐ |
| Azure Cosmos DB | โ | โ | privatelink.documents.azure.com |
๐ |
| Azure Key Vault | โ | โ | privatelink.vaultcore.azure.net |
๐ |
| Azure Container Registry | โ | โ | privatelink.azurecr.io |
๐ |
| Azure Event Hubs | โ | โ | privatelink.servicebus.windows.net |
๐ |
| Azure Service Bus | โ | โ | privatelink.servicebus.windows.net |
๐ |
| Azure App Service | โ | โ | privatelink.azurewebsites.net |
๐ |
| Azure Database for PostgreSQL | โ | โ | privatelink.postgres.database.azure.com |
๐ |
| Azure Database for MySQL | โ | โ | privatelink.mysql.database.azure.com |
๐ |
| Azure Synapse Analytics | โ | โ | privatelink.sql.azuresynapse.net |
๐ |
| Azure Monitor (Log Analytics) | โ | โ | privatelink.monitor.azure.com |
๐ |
| Azure Machine Learning | โ | โ | privatelink.api.azureml.ms |
๐ |
| Azure Data Factory | โ | โ | privatelink.datafactory.azure.net |
๐ |
| Azure OpenAI / Cognitive Services | โ | โ | privatelink.cognitiveservices.azure.com |
๐ |
| Azure Backup | โ | โ | privatelink.{region}.backup.windowsazure.com |
๐ |
| Service / Subnet | NSG | UDR | Notes | Docs |
|---|---|---|---|---|
GatewaySubnet | โ Forbidden | โ Limited | No NSG. UDR without 0.0.0.0/0 route to NVA | ๐ |
AzureFirewallSubnet | โ Forbidden | โ | UDR only for management (forced tunneling) | ๐ |
AzureBastionSubnet | โ | โ | NSG with specific rules required (see docs) | ๐ |
RouteServerSubnet | โ Forbidden | โ Forbidden | No customization allowed | ๐ |
| Application Gateway | โ | โ Limited | NSG: allow GatewayManager ports. No UDR to 0.0.0.0/0 | ๐ |
| API Management | โ | โ | NSG required with specific rules (ports 3443, etc.) | ๐ |
| AKS (Azure CNI) | โ | โ | UDR to force egress traffic through a firewall | ๐ |
| SQL Managed Instance | โ | โ | NSG auto-managed by the service. Don't remove the rules | ๐ |
| Private Endpoints | โ | โ | NSG and UDR supported since 2023 | ๐ |
| App Service (VNet Integration) | โ | โ | Outbound traffic from the app goes through the subnet | ๐ |
| Azure NetApp Files | โ Ignored | โ Ignored | NSG and UDR are applied but ignored by ANF | ๐ |
| Resource | Default Limit | Max Limit | Scope | Docs |
|---|---|---|---|---|
| VNets per subscription | 1,000 | 1,000 | Per region | ๐ |
| Subnets per VNet | 3,000 | 3,000 | Per VNet | ๐ |
| Peerings per VNet | 500 | 1,000 (with AVNM) | Per VNet | ๐ |
| Private IPs per VNet | 65,536 | 65,536 | Per VNet | ๐ |
| Public IPs (Standard) per sub | 1,000 | On request | Per region | ๐ |
| NSGs per subscription | 5,000 | 5,000 | Per region | ๐ |
| Rules per NSG | 1,000 | 1,000 | Inbound + outbound combined | ๐ |
| Routes per Route Table | 400 | 400 | Per table | ๐ |
| Route Tables per subscription | 200 | 200 | Per region | ๐ |
| BGP routes per gateway | 1,000 | 1,000 | Per BGP peer | ๐ |
| Private Endpoints per subscription | 1,000 | On request | Per region | ๐ |
| Private DNS Zones per sub | 25,000 | 25,000 | Per subscription | ๐ |
| VNet Links per Private DNS Zone | 1,000 | 1,000 | Per zone | ๐ |
| DNS records per Private DNS Zone | 25,000 | 25,000 | Per zone | ๐ |
| NICs per VM | Depends on SKU | 8 (large VMs) | Per VM | ๐ |
| NAT Gateway โ concurrent flows | 50,000 | 50,000 | Per public IP | ๐ |
| Load Balancer rules | 300 | 1,000 | Per LB | ๐ |
| Application Security Groups | 3,000 | 3,000 | Per subscription | ๐ |
| SKU | Throughput | S2S Tunnels | P2S (IKEv2) | BGP | Zone-Redundant | Use Case |
|---|---|---|---|---|---|---|
| VpnGw1AZ | 650 Mbps | 30 | 250 | โ | โ | Small business, dev/test |
| VpnGw2AZ | 1.25 Gbps | 30 | 500 | โ | โ | SMB, moderate workloads |
| VpnGw3AZ | 2.5 Gbps | 30 | 1,000 | โ | โ | Enterprise, multi-site |
| VpnGw4AZ | 5 Gbps | 100 | 5,000 | โ | โ | Large scale, hybrid cloud |
| VpnGw5AZ | 10 Gbps | 100 | 10,000 | โ | โ | Very large scale โ otherwise use Virtual WAN |
| Feature | Basic | Standard | Premium |
|---|---|---|---|
| Throughput | 250 Mbps | 30 Gbps | 100 Gbps |
| Autoscaling | โ | โ | โ |
| Threat Intelligence | Alert | Alert/Deny | Alert/Deny |
| FQDN Filtering (L7) | โ | โ | โ |
| DNS Proxy | โ | โ | โ |
| Web Categories | โ | โ | โ |
| TLS/SSL Inspection | โ | โ | โ |
| IDPS | โ | โ | โ (67k+ sigs) |
| URL Filtering (full path) | โ | โ | โ |
| Availability Zones | โ | โ | โ |
| Use Case | SMB, dev/test | Production, enterprise | Compliance (PCI, HIPAA) |
| Feature | Standard | Gateway |
|---|---|---|
| Backend pool | Up to 5,000 instances | Up to 300 instances |
| HA Ports | โ (Internal LB) | โ |
| Availability Zones | โ | โ |
| Cross-Region | โ | โ |
| Security | Secure by default (NSG required) | Transparent to traffic |
| Outbound NAT Rules | โ | โ |
| SLA | 99.99% | 99.99% |
| Use Case | Web apps, APIs, services | NVA chaining (3rd-party firewalls) |
Create Private DNS Zones in the Hub/Connectivity subscription and link them to Spoke VNets. Never duplicate zones across subscriptions.
๐ Docs: Private Link and DNS integration at scaleUse Azure Private DNS Resolver to resolve Azure names from on-premises, and on-premises names from Azure. No more custom DNS VMs needed.
๐ Docs: Private DNS Resolver overviewPrivate DNS Zones for Private Endpoints follow the format privatelink.{service}.{domain}. Don't change the names โ Azure expects them exactly.
DNS auto-registration only works for VMs. Only one VNet can be linked with auto-registration per zone. Use it in the Hub for shared VMs.
๐ Docs: Auto-registration featureWhen you enable a Private Endpoint, public resolution still works for clients not connected to the VNet. The Private DNS Zone only overrides for clients within the linked VNet.
๐ Docs: DNS for on-premises workloadsprivatelink.blob.core.windows.net
privatelink.database.windows.net
privatelink.vaultcore.azure.net
privatelink.azurewebsites.net
privatelink.azurecr.io
Centralize shared services (Firewall, Gateway, Bastion, DNS) in a Hub VNet. Isolate workloads in Spoke VNets peered to the Hub. This is the pattern recommended by the Cloud Adoption Framework.
๐ Docs: Hub-spoke network topologyUse /20 for the Hub, /22 for Spokes. Subnets cannot be resized with resources deployed. Always plan 2x your initial need.
Plan your address space before creating the first VNet. Consider on-premises and other clouds. Overlapping CIDRs block peering and routing.
๐ Docs: VNet FAQ (overlapping)Create a UDR 0.0.0.0/0 โ Azure Firewall on each Spoke subnet. Associate the route table to the subnet โ not the VNet. Without this, traffic goes straight to the internet.
Even with a firewall, apply NSGs to all subnets (except GatewaySubnet and FirewallSubnet). Defense in depth principle. Use Application Security Groups to simplify rules.
๐ Docs: NSG overviewIf Spoke A is peered to Hub and Spoke B too, A and B cannot communicate directly. Traffic must flow through an NVA/Firewall in the Hub with proper UDRs. Or use Azure Virtual WAN.
๐ Docs: VNet peering connectivityUse Private Endpoints (not Service Endpoints) for all PaaS services in production. It's the only way to guarantee 100% private traffic, including from on-premises.
๐ Docs: Azure Private LinkEnable Accelerated Networking on all VMs that support it. It's free and reduces latency by 50%+. Nearly all SKUs with โฅ 2 vCPUs support it.
๐ Docs: Accelerated NetworkingPrefer NAT Gateway over individual public IPs for outbound traffic. Provides a stable outbound IP, more SNAT ports, and avoids Load Balancer SNAT port exhaustion.
๐ Docs: NAT Gateway overviewEnable Network Watcher in every used region. Configure VNet Flow Logs (successor to NSG Flow Logs) to a Storage Account + Log Analytics for auditing and troubleshooting.
๐ Docs: Network Watcher overviewFollow the CAF: vnet-{workload}-{region}-{env}, snet-{purpose}, nsg-{subnet}, rt-{subnet}. Consistent naming prevents production mistakes.
Azure MTU is 1,500 bytes for inter-VNet/peering traffic. Don't rely on jumbo frames cross-VNet. Ensure firewalls don't block ICMP "Fragmentation Needed" messages.
๐ Docs: VM MTU configuration