CIDR(Classless Inter-Domain Routing,无类域间路由)1993 年就替代了 A/B/C 类网络的老划法,但很多人对 /24、/27、/30 这些斜杠数字仍是死记硬背。理清三个换算和五条心算规则,CIDR 子网划分能在脑子里 5 秒跑完。
CIDR 的本质:前缀长度
IPv4 地址 32 位。CIDR 用 /N 表示网络部分占前 N 位、主机部分占后 (32-N) 位:
192.168.1.0 / 24
└──────┬──────┘ └─ 网络号 24 位
二进制:
11000000.10101000.00000001.00000000
└──── 24 位网络 ────┘└8 位主机┘
子网掩码 = 前 N 位全 1、后 32-N 位全 0 的位串:
/24 → 11111111.11111111.11111111.00000000 = 255.255.255.0
/16 → 11111111.11111111.00000000.00000000 = 255.255.0.0
/27 → 11111111.11111111.11111111.11100000 = 255.255.255.224
可用主机数 = 2^(32-N) - 2(减网络号 + 广播):
/24 → 2^8 - 2 = 254
/27 → 2^5 - 2 = 30
/30 → 2^2 - 2 = 2
特例:
/31→ 2 个(点对点用,RFC 3021 不减)/32→ 1 个(单 IP,loopback、单主机路由)
常用前缀速查表
不查表能秒答出来的程度才算掌握:
| CIDR | 掩码 | 子网大小 | 可用主机 | 典型用途 |
|---|---|---|---|---|
/8 | 255.0.0.0 | 16,777,216 | 16,777,214 | 大型 ISP / 国家级 |
/16 | 255.255.0.0 | 65,536 | 65,534 | 中型企业内网、AWS VPC 默认 |
/20 | 255.255.240.0 | 4,096 | 4,094 | AWS AZ 级子网 |
/24 | 255.255.255.0 | 256 | 254 | 家用 / 办公室子网(最常见) |
/25 | 255.255.255.128 | 128 | 126 | 半个 /24 |
/26 | 255.255.255.192 | 64 | 62 | 1/4 个 /24 |
/27 | 255.255.255.224 | 32 | 30 | AWS 推荐最小子网 |
/28 | 255.255.255.240 | 16 | 14 | 小型 DMZ |
/29 | 255.255.255.248 | 8 | 6 | 小型设备组 |
/30 | 255.255.255.252 | 4 | 2 | 路由器对点链路(传统) |
/31 | 255.255.255.254 | 2 | 2 | 路由器对点链路(RFC 3021) |
/32 | 255.255.255.255 | 1 | 1 | 单主机路由 / Loopback |
记忆口诀:
/24是基线(256 IP,254 可用,最常见)- 每
+1子网减半,每-1子网翻倍 - 可用主机比子网大小少 2(除 /31 /32 外)
第三段/第四段心算
家用 / 办公室基本只用 /16 到 /30,掩码集中在第三或第四段,背一张”主机位 → 步长”表就够:
| 主机位 | 步长 | 掩码末段 | CIDR 第四段 |
|---|---|---|---|
| 1 | 128 | 128 | /25 |
| 2 | 64 | 192 | /26 |
| 3 | 32 | 224 | /27 |
| 4 | 16 | 240 | /28 |
| 5 | 8 | 248 | /29 |
| 6 | 4 | 252 | /30 |
| 7 | 2 | 254 | /31 |
| 8 | 1 | 255 | /32 |
记忆:步长是 2 的幂、掩码末段是 256 - 步长。
实战例题:192.168.5.130/27 属于哪个子网?
1. /27 → 主机位 5 位 → 步长 = 32
2. 130 ÷ 32 = 4 余 2,所以子网起点 = 4 × 32 = 128
3. 子网范围 192.168.5.128 ~ 192.168.5.159
4. 网络号 192.168.5.128,广播 192.168.5.159
5. 可用主机 192.168.5.129 ~ 192.168.5.158(共 30 个)
5 秒之内做完才算熟练。
/31 的特殊待遇
传统点对点链路用 /30 浪费 50%:
10.0.0.0/30
├─ 10.0.0.0 网络号
├─ 10.0.0.1 路由器 A
├─ 10.0.0.2 路由器 B
└─ 10.0.0.3 广播
4 个 IP 中只有 2 个能用,剩 2 个被网络号 / 广播占了。RFC 3021(2000)观察到点对点链路上不需要广播——一端发的包另一端必定收到,没有”广播给所有人”的语义——所以允许 /31:
10.0.0.0/31
├─ 10.0.0.0 路由器 A
└─ 10.0.0.1 路由器 B
前提条件:
- 链路两端必须支持 RFC 3021——Cisco IOS 12.2(2)T+、Juniper JunOS、Linux 内核 2.6+ 都支持
- 不能用在以太网广播段——只在配置为点对点链路(PPP、MPLS、IP-in-IP)的接口上有效
- 老设备 / 消费级路由器可能拒绝
今天:运营商骨干普遍 /31、企业内网保守仍 /30、Linux 服务器 ↔ Linux 服务器之间的私有链路 /31 完全 OK。
几个特殊地址
| CIDR | 含义 | 用途 |
|---|---|---|
0.0.0.0/0 | 全 IPv4 互联网 | 默认路由 |
0.0.0.0/32 | 未指定地址 | DHCP 客户端启动时的源地址 |
127.0.0.0/8 | 整个 loopback 段 | 通常只用 127.0.0.1 |
169.254.0.0/16 | 链路本地 | DHCP 失败时的自动 IP |
255.255.255.255/32 | 受限广播 | 不跨路由器 |
RFC 1918 私有地址:
10.0.0.0/8 16M IP,大企业 / 数据中心首选
172.16.0.0/12 1M IP,覆盖 172.16.0.0 ~ 172.31.255.255
192.168.0.0/16 65K IP,家用路由器默认
RFC 6598 共享地址段:100.64.0.0/10 ——专给运营商 NAT 用,不是 RFC 1918 私有段,但在公网上不可路由。AWS 推荐 VPC 用这段做大规模内部网络。
AWS VPC 切分模板
经典三层结构(适合中型 web 应用):
VPC: 10.0.0.0/16 (65536 IP)
├─ AZ-a: 10.0.0.0/20 (4096 IP)
│ ├─ public: 10.0.0.0/24 (256 IP,含 NAT/ALB)
│ ├─ private: 10.0.1.0/24 (256 IP,应用层)
│ ├─ database: 10.0.2.0/24 (256 IP,RDS)
│ └─ reserved: 10.0.3.0/24 ~ 10.0.15.0/24(备扩容)
├─ AZ-b: 10.0.16.0/20 (4096 IP)
│ ├─ public: 10.0.16.0/24
│ ├─ private: 10.0.17.0/24
│ └─ ...
└─ AZ-c: 10.0.32.0/20
└─ ...
AWS 子网约束:
- 保留 5 个 IP——前 4 个(网络号 + VPC 路由器 + DNS + 未来 + 广播)+ 最后 1 个,所以
/24实际可用 251 - CIDR 不可改——VPC 创建后无法改主 CIDR,只能 add secondary(最多 5 个)
- 最小
/28,最大/16——/28实际只能用 11 个 IP,生产环境建议最小/27 - 跨 VPC peering 不能重叠——peering 双方 CIDR 必须互不相交
- 回本地 DC(VPN/Direct Connect)也不能和本地重叠——这是企业最常踩的坑
特殊情况下用 100.64.0.0/10:
- 跨账号 EKS 集群之间避免 10.x 冲突
- VPN 回家时家里和办公室都是 192.168.x,公司 VPC 选 100.64.x 干净
VLSM 与路由聚合
VLSM(Variable Length Subnet Mask,变长子网掩码)= 在同一个父网段里切出不同大小的子网:
父网:10.0.0.0/22 (1024 IP)
├─ 10.0.0.0/23 (512 IP, 大子网)
├─ 10.0.2.0/24 (256 IP)
├─ 10.0.3.0/25 (128 IP)
├─ 10.0.3.128/26 (64 IP)
└─ 10.0.3.192/26 (64 IP)
VLSM 对 IP 利用率提升巨大——传统 A/B/C 类划分根本做不到。
**路由聚合(Supernetting)**反过来:把多个连续小段合成一条路由通告:
10.0.0.0/24
10.0.1.0/24 → 路由聚合 → 10.0.0.0/22
10.0.2.0/24
10.0.3.0/24
聚合后路由表里只有一条 10.0.0.0/22 而不是 4 条 /24,BGP 全互联网正是靠聚合把路由表压在 1M 条以内。
常见错误
错 1:以为 /24 就是 254 台主机,其他前缀也减 2
/31 不减 2 → 2 个可用
/32 不减 2 → 1 个可用(单点路由)
错 2:以为子网掩码 255.255.255.10 这种”不连续”的合法
合法掩码必须是"前面全 1、后面全 0"的连续模式
255.255.255.0 ✓
255.255.255.224 ✓ (/27)
255.255.255.10 ✗ 不存在这种掩码
错 3:把 192.168.1.0/24 的网关默认设成 .1(“约定俗成”)但实际可以是该子网内任何主机 IP
错 4:跨 VPC peering 后忘记两端 CIDR 不能重叠,10.0.0.0/16 和 10.0.0.0/24 也算重叠
错 5:以为 /30 升级到 /31 能省路由器配置,但老设备拒绝时整条链路 down
一句话总结
CIDR /N 就是前 N 位是网络号;子网大小 = 2^(32-N),可用主机减 2(/31//32 除外);步长 = 256 - 掩码末段记一张表;AWS VPC 一律 /16 起步、AZ 切 /20、子网切 /24 是稳妥模板。