Subnetting & CIDR Cheat Sheet

Subnet Cheat Sheet – 24 Subnet Mask, 30, 26, 27, 29, and other IP Address CIDR Network

Subnetting & CIDR Cheat Sheet: A Practical Guide for Network Engineers and Developers

Quick Reference: Need the subnet table now? Jump to CIDR Reference Tables

Understanding subnet masks and CIDR notation isn’t just for CCNA candidates—it’s essential for cloud architects designing VPCs, DevOps engineers configuring Kubernetes pods, and developers debugging network connectivity. This guide cuts through theory with actionable knowledge you’ll use daily.


🔑 Core Concepts in 60 Seconds

TermWhat It MeansReal-World Analogy
Subnet MaskFilter that separates network vs. host bits in an IP addressZIP code separating city (network) from street address (host)
CIDR NotationShorthand for subnet masks (/24 = 255.255.255.0)“First 24 digits define the neighborhood”
Wildcard MaskInverse of subnet mask (used in ACLs/routing)“These bits can vary”
Usable IPsTotal IPs minus network/broadcast addressesHotel rooms minus lobby & maintenance closet

💡 Pro Insight: In cloud environments (Azure VNets, AWS VPCs), /31 and /32 subnets are common for point-to-point links and single-host allocations—no broadcast address needed in virtual networks.


🧮 How Subnet Masks Actually Work (With Binary)

Every IPv4 address is 32 bits split into 4 octets. A subnet mask uses 1s to mark network bits and 0s for host bits.

Example: 192.168.1.50/26

IP Address:    11000000.10101000.00000001.00110010  (192.168.1.50)
Subnet Mask:   11111111.11111111.11111111.11000000  (255.255.255.192)
               └────────── Network ──────────┘└Host┘
  • Network ID: 192.168.1.0 (first 26 bits fixed)
  • Usable Range: 192.168.1.1192.168.1.62
  • Broadcast: 192.168.1.63

For example, here’s what the IP address 172.16.254.1 looks like in binary:

To convert an IP address between its decimal and binary forms, you can use this chart:

1286432168421
xxxxxxxx

The chart above represents one 8 bit octive.

Now lets say you want to convert the IP address 168.210.225.206. All you need to do is break the address into four blocks (168210225, and 206), and convert each into binary using the chart above.

Remember that in binary, 1 is the equivalent to “on” and 0 is “off”. So to convert the first block, 168, into binary, just start from the beginning of the chart and place a 1 or 0 in that cell until you get a sum of 168.

For example:

1286432168421
10101000

128 + 32 + 8 = 168, which in binary is 10101000.

If you do this for the rest of the blocks, you’d get 10101000.11010010.11100001.11001110.

⚠️ Critical Gotcha: /31 subnets (RFC 3021) have no network/broadcast addresses—both IPs are usable for point-to-point links (common in cloud routing).


📊 CIDR Reference Tables (Optimized for Cloud Workloads)

Quick-Reference CIDR Table

CIDRSubnet MaskWildcard MaskTotal IPsUsable IPsTypical Use Case
/32255.255.255.2550.0.0.011Single host (Azure NSG rule)
/31255.255.255.2540.0.0.122*Point-to-point links (cloud routers)
/30255.255.255.2520.0.0.342Small WAN links
/29255.255.255.2480.0.0.786Small office networks
/28255.255.255.2400.0.0.151614Azure Bastion subnet
/27255.255.255.2240.0.0.313230Small app tiers
/26255.255.255.1920.0.0.636462Medium app tiers
/24255.255.255.00.0.0.255256254Standard VLAN / small VPC subnet
/23255.255.254.00.0.1.255512510Medium VPC subnet
/22255.255.252.00.0.3.2551,0241,022Large app tier (AWS/Azure)
/16255.255.0.00.0.255.25565,53665,534Entire VPC/VNet (e.g., 10.0.0.0/16)

*/31 usable IPs = 2 (RFC 3021 exception for point-to-point links)

CIDRSubnet maskWildcard mask# of IP addresses# of usable IP addresses
/22255.255.252.00.0.3.2551,0241,022
/21255.255.248.00.0.7.2552,0482,046
/20255.255.240.00.0.15.2554,0964,094
/19255.255.224.00.0.31.2558,1928,190
/18255.255.192.00.0.63.25516,38416,382
/17255.255.128.00.0.127.25532,76832,766
/16255.255.0.00.0.255.25565,53665,534
/15255.254.0.00.1.255.255131,072131,070
/14255.252.0.00.3.255.255262,144262,142
/13255.248.0.00.7.255.255524,288524,286
/12255.240.0.00.15.255.2551,048,5761,048,574
/11255.224.0.00.31.255.2552,097,1522,097,150
/10255.192.0.00.63.255.2554,194,3044,194,302
/9255.128.0.00.127.255.2558,388,6088,388,606
/8255.0.0.00.255.255.25516,777,21616,777,214
/7254.0.0.01.255.255.25533,554,43233,554,430
/6252.0.0.03.255.255.25567,108,86467,108,862
/5248.0.0.07.255.255.255134,217,728134,217,726
/4240.0.0.015.255.255.255268,435,456268,435,454
/3224.0.0.031.255.255.255536,870,912536,870,910
/2192.0.0.063.255.255.2551,073,741,8241,073,741,822
/1128.0.0.0127.255.255.2552,147,483,6482,147,483,646
/00.0.0.0255.255.255.2554,294,967,2964,294,967,294

Subnet Mask Binary Reference (Per Octet)

DecimalBinaryWildcard DecimalWildcard Binary
00000000025511111111
1281000000012701111111
192110000006300111111
224111000003100011111
240111100001500001111
24811111000700000111
25211111100300000011
25411111110100000001
25511111111000000000

☁️ Cloud Networking: Subnet Sizing Best Practices

Azure Virtual Networks

# Minimum subnet sizes for Azure services
Azure Bastion:      /27 (30 usable IPs)
Azure Firewall:     /26 (62 usable IPs)
Application Gateway: /28 (14 usable IPs)
AKS Nodes:          /24+ (254+ IPs for scaling)

AWS VPC Design

# Recommended subnet sizing strategy
Public Subnets (NAT/Gateways): /28
Private App Subnets:           /24
Database Subnets:              /26 (isolated tier)
EKS/K8s Worker Nodes:          /22 (for 1000+ pods)

💡 Golden Rule: Always reserve 20% of your VPC address space for future expansion. A /16 VPC (10.0.0.0/16) gives you 65k IPs—start with /24 subnets to allow room for growth.


⚙️ Practical Tools & CLI Commands

Linux/macOS Subnet Calculations

# Install ipcalc (Debian/Ubuntu)
sudo apt install ipcalc

# Analyze a subnet
ipcalc 10.0.1.0/26
# Output:
# Address:   10.0.1.0
# Netmask:   255.255.255.192 = 26
# Wildcard:  0.0.0.63
# Network:   10.0.1.0/26
# HostMin:   10.0.1.1
# HostMax:   10.0.1.62
# Broadcast: 10.0.1.63
# Hosts/Net: 62

PowerShell (Windows)

# Calculate subnet details
Install-Module -Name Subnet
Get-Subnet -IPAddress 192.168.1.50 -PrefixLength 26

# Output usable IP range
192.168.1.1 - 192.168.1.62

Python One-Liner

# Calculate number of hosts for any CIDR
cidr = 24
hosts = 2**(32-cidr) - 2  # -2 for network/broadcast
print(f"/{cidr} = {hosts} usable IPs")  # Output: /24 = 254 usable IPs

🚫 Common Subnetting Mistakes (And How to Avoid Them)

MistakeConsequenceFix
Using /32 for a subnet (not a host route)Routing failures/32 = single host; use /30+ for networks
Forgetting /31 has no broadcast addressBGP sessions failValid for point-to-point links only (RFC 3021)
Overlapping subnets in VPC/VNetTraffic blackholingValidate with az network vnet check-ip-address
Using Classful masks (255.0.0.0 for 10.x)Wasted IP spaceAlways use VLSM (e.g., 10.0.0.0/24 not /8)
Ignoring cloud service minimum sizesDeployment failuresAzure Firewall requires /26—check docs first

🔍 Real-World Scenario: Debugging a Connectivity Issue

Problem: App server (10.0.2.15/24) can’t reach database (10.0.3.10/24).

Diagnosis:

# Check routing table
ip route show
# Output: 10.0.2.0/24 dev eth0 → No route to 10.0.3.0/24!
# Verify subnet mask on both hosts
ip addr show eth0 | grep inet
# App: 10.0.2.15/24 → Network: 10.0.2.0
# DB:  10.0.3.10/24 → Network: 10.0.3.0 → Different networks!
# Solution: Add route via gateway OR place in same subnet
ip route add 10.0.3.0/24 via 10.0.2.1

Key Insight: Devices only ARP for hosts in their own subnet. Cross-subnet traffic requires a router/gateway.


💎 Pro Tips You Won’t Find in Textbooks

  1. Cloud networks ignore broadcast addresses
    In AWS/Azure/GCP, /31 and /32 subnets are fully usable—no reserved broadcast address.
  2. VPC peering requires non-overlapping CIDRs
    10.0.0.0/16 can’t peer with 10.0.1.0/24 (overlap). Plan address space early.
  3. Kubernetes needs generous IP space
    Each pod gets its own IP. For 100 nodes × 110 pods = 11,000 IPs → minimum /20 subnet.
  4. Use RFC 1918 space wisely
   10.0.0.0/8      → Largest block (16M IPs) - enterprise use
   172.16.0.0/12   → Medium (1M IPs) - multi-tenant environments
   192.168.0.0/16  → Smallest (65k IPs) - labs/home networks
  1. Document your IP schema
    Example:
   10.0.0.0/16 VPC
   ├── 10.0.1.0/24   Public subnets (NAT/Gateways)
   ├── 10.0.2.0/24   App tier (EC2/EKS)
   ├── 10.0.3.0/26   Database tier (RDS)
   └── 10.0.255.0/27 Management (Bastion/Jumpbox)

Classful IP Addressing

Now that we’ve gone over some basic examples of subnetting and CIDR, let’s zoom out and look at what’s known as Classful IP addressing.

Back before subnetting was developed, all IP addresses fell into a particular class:

Image

Note that there are class D and E IP addresses, but we’ll go into these in more detail a bit later.

Classful IP addresses gave network engineers a way to provide different organizations with a range of valid IP addresses.

There were a lot of issues with this approach that eventually lead to subnetting. But before we get into those, let’s take a closer look at the different classes.

Class A IP Addresses

For Class A IP addresses, the first octet (8 bits / 1 byte) represent the network ID, and the remaining three octets (24 bits / 3 bytes) are the host ID.

Class A IP addresses range from 1.0.0.0 to 127.255.255.255, with a default mask of 255.0.0.0 (or /8 in CIDR).

This means that Class A addressing can have a total of 128 (27) networks and 16,777,214 (224-2) usable addresses per network.

Also, note that the range 127.0.0.0 to 127.255.255.255 within the Class A range is reserved for host loopback address (see RFC5735).

Class B IP Addresses

For Class B IP addresses, the first two octets (16 bits / 2 bytes) represent the network ID and the remaining two octets (16 bits / 2 bytes) are the host ID.

Class B IP addresses range from 128.0.0.0 to 191.255.255.255, with a default subnet mask of 255.255.0.0 (or /16 in CIDR).

Class B addressing can have 16,384 (214) network addresses and 65,534 (216) usable addresses per network.

Class C IP Addresses

For Class C IP addresses, the first three octets (24 bits / 3 bytes) represent the network ID and the last octet (8 bits / 1 bytes) is the host ID.

Class C IP Addresses range from 192.0.0.0 to 223.255.255.255, with a default subnet mask of 255.255.255.0 (or /24 in CIDR).

Class C translates to 2,097,152 (221) networks and 254 (28-2) usable addresses per network.

Class D and Class E IP Addresses

The last two classes are Class D and Class E.

Class D IP addresses are reserved for multicasts. They occupy the range from 224.0.0.0 through 239.255.255.255.

Class E IP addresses are experimental, and are anything over 240.0.0.0.

The Issue with Classful IP Addresses

The main issue with classful IP addresses is that it wasn’t efficient, and could lead to a lot of wasted IP addresses.

For example, imagine that you’re part of a large organization back then. Your company has 1,000 employees, meaning that it would fall into class B.

But if you look above, you’ll see that a class B network can support up to 65,534 usable addresses. That’s way more than your organization would likely need, even if each employee had multiple devices with a unique address.

And there was no way your organization could fall back to class C – there just wouldn’t be enough usable IP addresses.

So while classful IP addresses were used around the time IPv4 addresses became widespread, it quickly became clear that a better system would be necessary to ensure we wouldn’t use up all of the ~4.2 billion usable addresses.

Classful IP addresses haven’t been used since they were replaced by CIDR in 1993, and are mostly studied to understand early internet architecture, and why subnetting is important.

📚 Further Learning

  • RFC 4632: CIDR specification (the official standard)
  • RFC 3021: /31 prefix usage for point-to-point links
  • Azure VNet Planning: Microsoft Docs
  • AWS IP Addressing: VPC Best Practices

You now know more than 80% of developers about practical subnetting. Bookmark this page—you’ll reference it during your next cloud architecture review or network troubleshooting session.

Found this useful? Share it with a colleague who’s still converting binary in their head during interviews. 😄

Leave a Reply

Your email address will not be published. Required fields are marked *