Featured image of post CIDR 子网掩码速查:/8 /16 /24 /30 /32 到底是什么意思?

CIDR 子网掩码速查:/8 /16 /24 /30 /32 到底是什么意思?

A/B/C 类 IP 默认掩码、CIDR 后缀数字含义、子网掩码换算二进制、可用主机数计算、VLSM 可变长子网掩码、特殊 IP 段 127/169/224

背景

看到 192.168.1.0/2410.0.0.0/8172.16.0.0/12127.0.0.1/32 这些写法,很多人不知道末尾的数字是什么意思

这是 CIDR(Classless Inter-Domain Routing,无类域间路由)表示法,1993 年提出,取代了传统的 A/B/C 类 IP 划分——现在所有 IP 都用 CIDR。

理解 CIDR 的关键

  1. 末尾数字 = 网络前缀位数(子网掩码里 1 的个数)
  2. 数字越大 → 网络号越长 → 可用主机数越少
  3. 数字越小 → 网络号越短 → 可用主机数越多

一、A/B/C 类 IP 默认子网掩码(历史背景)

为什么会有 /8、/16、/24?这要追溯到 1981 年的有类 IP(Classful IP):

类别起始位默认子网掩码CIDR 后缀网络数每网主机数范围
A 类0xxxxxxx255.0.0.0/812816,777,2141.0.0.0 ~ 127.255.255.255
B 类10xxxxxx255.255.0.0/1616,38465,534128.0.0.0 ~ 191.255.255.255
C 类110xxxxx255.255.255.0/242,097,152254192.0.0.0 ~ 223.255.255.255
D 类(组播)1110xxxx/4224.0.0.0 ~ 239.255.255.255
E 类(实验)1111xxxx/4240.0.0.0 ~ 255.255.255.255

为什么 A 类网络号只有 8 位? 因为 0xxxxxxx 第一位固定为 0,剩 7 位可变,所以 2^7 = 128 个 A 类网段。 为什么 A 类每网 16,777,214 台? 因为主机号 24 位全可变,2^24 - 2 = 16,777,214(减 2 是去掉网络地址和广播地址)。

历史包袱

  • 一个公司哪怕只有 100 台机器,分到 A 类也用不完 16,777,214 个 IP
  • A 类 1.0.0.0 给了一家澳大利亚公司(APNIC),B 类 16.x 给 HP,C 类 192.168.0.0/16 留作私网
  • 1993 年 CIDR 出现,允许"借位"——A 类也能划 /16、/24,按需分配

结论:现代网络已经没有"必须按 A/B/C 类划分"的规则。/8、/16、/24 只是"看起来眼熟"的历史值。


二、子网掩码与 CIDR 换算

2.1 子网掩码的本质

子网掩码 = 32 位二进制,1 的部分是网络号,0 的部分是主机号

例如 255.255.255.0

1
2
3
4
二进制:11111111 11111111 11111111 00000000
        ←── 网络号 ──→ ←─ 主机号 ─→
位数:   8 位 + 8 位 + 8 位 = 24 位 1
CIDR:  /24

2.2 常用 CIDR 速查表

CIDR子网掩码主机位数可用主机数(2^n - 2)典型用途
/8255.0.0.02416,777,214一个超大组织(如军队、运营商)
/12255.240.0.0201,048,574RFC 1918 私网中等规模
/16255.255.0.01665,534大学、大企业内网
/20255.255.240.0124,094中型企业
/22255.255.252.0101,022中型企业分支
/23255.255.254.09510跨子网但节约 IP
/24255.255.255.08254最常见:小型企业 / 一个 C 段
/25255.255.255.1287126拆分 /24
/26255.255.255.192662微小型网络
/27255.255.255.224530路由器点对点 / 小型
/28255.255.255.240414极小网络
/29255.255.255.24836点对点链路(两台设备)
/30255.255.255.25222点对点(刚好 2 IP)
/31255.255.255.25410(特殊:2 主机)RFC 3021 点对点
/32255.255.255.25501单 IP(路由条目 / 主机)

2.3 例子:192.168.0.0/24 是什么意思?

  • 子网掩码:255.255.255.0
  • 网络号:192.168.0(前 24 位固定
  • 主机号:0~255(后 8 位可变
  • 可用 IP:192.168.0.1 ~ 192.168.0.254254 个
  • 特殊:
    • 192.168.0.0 = 网络地址(标识这个网段,不能配给主机)
    • 192.168.0.255 = 广播地址(这个网段所有主机),不能配给主机
    • 192.168.0.1 = 网关(惯例)

2.4 子网掩码换算二进制

/24 → 255.255.255.0

1
2
3
4
5
6
CIDR: /24
网络位 24 个 1:11111111 11111111 11111111 00000000
                  └───── 24 个 1 ─────┘ └─ 8 个 0 ─┘
                  ↓                    ↓
十进制:255        255        255       0

/30 → 255.255.255.252

1
2
3
4
网络位 30 个 1:11111111 11111111 11111111 11111100
                  └─────── 30 个 1 ───────┘ └─ 2 个 0 ─┘
                  ↓                    ↓
十进制:255        255        255       252

三、可变长子网掩码(VLSM)

传统 A/B/C 类的痛点:分到一个 C 类(254 IP),实际只用 50 台,剩 204 个浪费

CIDR 的解决方案VLSM(Variable Length Subnet Mask)允许在同一网络内混合不同长度的子网。

实战例子:公司拿到 192.168.10.0/24(256 IP),需要:

  • 部门 A:100 台机器
  • 部门 B:50 台机器
  • 部门 C:20 台机器
  • 部门 D:10 台机器
  • 点对点链路 × 4:各 2 IP

VLSM 划分(从大到小):

子网范围子网掩码可用主机部门
192.168.10.0/25.1 ~ .126255.255.255.128126A
192.168.10.128/26.129 ~ .190255.255.255.19262B
192.168.10.192/27.193 ~ .222255.255.255.22430C
192.168.10.224/28.225 ~ .238255.255.255.24014D
192.168.10.240/30.241 ~ .242255.255.255.2522p2p 1
192.168.10.244/30.245 ~ .246255.255.255.2522p2p 2
192.168.10.248/30.249 ~ .250255.255.255.2522p2p 3
192.168.10.252/30.253 ~ .254255.255.255.2522p2p 4

256 个 IP 全部分完,零浪费


四、Linux 实战命令

4.1 ipcalc(计算工具)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# CentOS
yum install ipcalc

# Ubuntu
apt install ipcalc

# 用法
ipcalc 192.168.1.0/24
# Address:   192.168.1.0
# Netmask:   255.255.255.0 = 24
# Wildcard:  0.0.0.255
# Network:   192.168.1.0/24
# HostMin:   192.168.1.1
# HostMax:   192.168.1.254
# Broadcast: 192.168.1.255
# Hosts/Net: 254

ipcalc 10.0.0.0/12
# Hosts/Net: 1048574

4.2 ip 命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 查看本机 IP 和子网掩码
ip addr show
#  inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
#  ↑ IP/CIDR            ↑ 广播地址

# 加 IP
ip addr add 10.0.0.5/24 dev eth0

# 删 IP
ip addr del 10.0.0.5/24 dev eth0

# 看路由(CIDR 形式)
ip route show
# default via 192.168.1.1 dev eth0
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

4.3 路由表里的 CIDR

1
2
3
4
5
6
7
# 添加点对点路由
ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0

# 默认路由(/0 = 全网)
ip route add default via 192.168.1.1 dev eth0
# 等价于
ip route add 0.0.0.0/0 via 192.168.1.1 dev eth0

4.4 防火墙规则中的 CIDR

1
2
3
4
5
6
7
8
# 放行 10.0.0.0/8 内网
iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT

# 放行单 IP
iptables -A INPUT -s 192.168.1.100/32 -j ACCEPT

# 拒绝 169.254.0.0/16(链路本地)
iptables -A INPUT -s 169.254.0.0/16 -j DROP

4.5 nginx/HAProxy upstream 限制

1
2
3
4
5
# 允许某个 /24 网段访问
location /admin {
    allow 10.0.0.0/24;
    deny all;
}

五、特殊 IP 段

含义用途
0.0.0.0/0全网默认路由;监听所有网卡
127.0.0.0/8回环127.0.0.1 = 本机
169.254.0.0/16链路本地DHCP 失败时自动分配
224.0.0.0/4组播OSPF 224.0.0.5/6、PIM 等
240.0.0.0/4保留/实验不可用
255.255.255.255本地广播限于本物理网段
10.0.0.0/8RFC 1918 私网A 类私网
172.16.0.0/12RFC 1918 私网B 类私网(172.16 ~ 172.31)
192.168.0.0/16RFC 1918 私网C 类私网(家用路由最常见)
100.64.0.0/10RFC 6598 共享地址空间CGN(运营商内网 NAT)
198.18.0.0/15RFC 2544 基准测试iperf3、netperf 基准测试

六、计算可用主机数公式

可用主机数 = 2^(32 - CIDR) - 2

/242^8 - 2 = 254(去掉网络地址和广播地址) /302^2 - 2 = 2(点对点) /322^0 - 2 = -1特殊:表示单 IP,没有"网络+广播"概念,所以可用数 = 1

/31 是个特例(RFC 3021):允许 2 个 IP 全部可用,专门给点对点链路,省 IP。


七、IPv6 CIDR 简述

IPv6 用相同的 CIDR 概念,但位数扩展到 128:

CIDR含义
::1/128回环(IPv6 的 127.0.0.1)
fe80::/10链路本地(IPv6 的 169.254.0.0/16)
fc00::/7私网(IPv6 的 10.0.0.0/8)
2000::/3全局单播(公网)
2001:db8::/32文档示例

小结

CIDR 看起来只是 IP 后面"加个斜杠 + 数字",但理解它就理解了 IP 网络的精髓

  1. /8 /16 /24 是历史值,现在不强制
  2. 数字 = 网络前缀位数 = 子网掩码里 1 的个数
  3. VLSM 按需分配,大网拆小网,零浪费
  4. /30 给点对点链路,/32 给单 IP 路由

记忆口诀

  • /30 = 255.255.255.252 = 2 IP(点对点)
  • /24 = 255.255.255.0 = 254 IP(小型企业)
  • /16 = 255.255.0.0 = 65,534 IP(大学、大企业)
  • /8 = 255.0.0.0 = 16,777,214 IP(超大组织)

下一步

  • ipcalc 做日常 IP 规划
  • 学 VLSM 拆网(CCNA 经典题)
  • IPv6 完整子网规划(IPv6 128 位,CIDR 是必备工具)

2024 视角:IPv6 在 2024 已成"必选项"

2015 那篇 IPv6 只是一笔带过。2024 视角下,IPv6 已是"必选项"——大陆三大运营商全部默认下发 IPv6 PD,Cisco IOS / Linux 内核默认开启 IPv6。

一、IPv6 单栈已"上路"

  • 2024 中国大陆:电信 / 联通 / 移动宽带默认下发 IPv6 前缀(PD / 60 或 /64)。
  • 2024 云厂商:阿里云、腾讯云、华为云 ECS 默认开启 IPv6
  • 2024 K8s / Docker:默认网络栈都支持 IPv6 双栈。
  • 2024 现实:仍然IPv4 主导(NAT 仍在用),但 IPv6 流量已逐年增长到 30-50%(Google 2024 报告)。

二、IPv6 CIDR 的"日常用法"

  • /128(单 IP):一个地址,::1(loopback)= 127.0.0.1 的 IPv6 版
  • /64:标准 LAN 网段(SLACC 自动配置的基础单位,不能再细分)。
  • /48:一个站点的标准前缀(SLAAC 的"父级")。
  • /56:小型家庭 / 小企业分配前缀。
  • /32:ISP / 自治系统的标准分配(IANA 给 RIR)。
  • /16:RIR 的标准池(IANA 给 RIPE / APNIC)。
含义
::/0全网(默认路由)
::1/128回环
fe80::/10链路本地(IPv4 的 169.254.0.0/16)
fc00::/7ULA 私网(IPv4 的 10.0.0.0/8 / 192.168.0.0/16)
2000::/3全局单播(公网)
2001:db8::/32文档示例(RFC 3849)
64:ff9b::/96IPv4/IPv6 NAT(RFC 6052)

三、ip 命令 IPv6 用法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 看 IPv6 地址
ip -6 addr show

# 看 IPv6 路由
ip -6 route show

# 加 IPv6 地址
ip -6 addr add 2001:db8::1/64 dev eth0

# ping IPv6
ping6 fe80::1%eth0
ping -6 2001:db8::1

四、ipcalc IPv6 支持

1
2
3
4
5
ipcalc 2001:db8::/32
# Address:   2001:db8::
# Netmask:   ffff:ffff:0000:0000:0000:0000:0000:0000 = 32
# Prefixlen: 32
# ...

五、IPv6 安全

  • IPv6 没有 NAT 隐藏内网——每个 IPv6 设备默认公网可达
  • 防火墙必须显式配置:
1
2
3
4
# nftables IPv6 防火墙
nft add rule inet filter input ip6 saddr ::/0 drop
nft add rule inet filter input ip6 saddr fe80::/64 accept
nft add rule inet filter input ip6 saddr 2001:db8::/32 accept
  • NDP 防护(防止 IPv6 的"ARP 欺骗"):
1
2
sysctl -w net.ipv6.conf.all.accept_ra=0     # 关路由器公告
sysctl -w net.ipv6.conf.eth0.accept_ra=0

六、CIDR 在 K8s 时代的"IPAM"

  • 2024 K8s 网络插件(Calico / Cilium)都用 CIDR 做 IPAM(IP 地址管理)。
  • 典型分配:
1
2
3
4
5
6
7
8
9
# Calico
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
  name: default-pool
spec:
  cidr: 10.244.0.0/16          # Pod IP 池
  ipipMode: Always
  natOutgoing: true
  • 每个 Node 划分子网(Calico blocksize = 26):
1
2
3
calicoctl ipam show
# 10.244.0.0/26   node-a
# 10.244.0.64/26  node-b
  • IPv6 双栈
1
2
3
4
spec:
  cidr: 10.244.0.0/16
  cidr6: 2001:db8::/56
  ipipMode: Always

源文档os/linux/第三方tools/net/ip.md(CIDR 概念、二进制换算、可用 IP 范围)

使用 Hugo 构建
主题 StackJimmy 设计