一、/24 就是「前 24 位是网络号」
IPv4 是 32 位。/24 表示前 24 位标识网络,剩下 8 位标识主机:
192.168.1.0/24
11000000.10101000.00000001 . 00000000
└──────── 网络号 24 位 ────┘ └─ 主机 8 位 ─┘
主机位有 8 位,共 2⁸ = 256 个地址。其中:
- 网络地址(全 0):
192.168.1.0,代表网段本身,不能分配给主机。 - 广播地址(全 1):
192.168.1.255,用于广播,不能分配给主机。
所以可用主机数 = 2⁸ − 2 = 254。
| 掩码 | 主机位 | 总地址 | 可用 |
|---|---|---|---|
| /30 | 2 | 4 | 2 |
| /29 | 3 | 8 | 6 |
| /28 | 4 | 16 | 14 |
| /24 | 8 | 256 | 254 |
| /16 | 16 | 65536 | 65534 |
| /8 | 24 | 16777216 | 16777214 |
二、子网掩码写法
/24 等价于 255.255.255.0。换算方式是把前 24 位置 1:
/24 → 11111111.11111111.11111111.00000000 → 255.255.255.0
/26 → 11111111.11111111.11111111.11000000 → 255.255.255.192
/20 → 255.255.240.0
非 8 的倍数时容易算错,比如 /26 每个子网 64 个地址,可用 62 个。
三、私有地址段
这三段不会在公网路由,内网随便用:
| 段 | 范围 | 常见用途 |
|---|---|---|
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 大型内网、云 VPC |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 中型网络 |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 家庭/办公局域网 |
另外 127.0.0.0/8 是本机回环,169.254.0.0/16 是 DHCP 失败时的自动地址(看到 169.254.x.x 说明没拿到 IP)。
四、判断两个 IP 是否同网段
把 IP 和掩码都转成二进制,做「与」运算,比较网络号:
192.168.1.10 & 255.255.255.0 = 192.168.1.0
192.168.1.200 & 255.255.255.0 = 192.168.1.0 ← 同网段
192.168.1.10 & 255.255.255.0 = 192.168.1.0
192.168.2.10 & 255.255.255.0 = 192.168.2.0 ← 不同网段
同网段的主机可以直接通信(不经过网关);跨网段必须配网关。
命令行速查:
ipcalc 192.168.1.10/24 # Linux(需安装)
python3 -c "import ipaddress;print(ipaddress.ip_network('192.168.1.0/24').hosts())"
五、安全组里的 0.0.0.0/0
这是最常见的配置项:
0.0.0.0/0表示所有 IPv4 地址,即对全网开放。::/0是所有 IPv6。10.0.0.0/8只允许内网该段访问。
把数据库端口(3306、6379)配成 0.0.0.0/0 是典型的高危操作,扫描器几分钟内就会找上来。正确做法是只放行办公网 IP 或跳板机。
六、几个实际场景
VPC 子网划分:10.0.0.0/16 可以切成多个 /24(10.0.0.0/24、10.0.1.0/24…),分别给不同环境或可用区。
K8s Pod 网段:10.244.0.0/16,每个节点分一个 /24。
CDN 回源白名单:厂商会给一串 CIDR,需要在源站放行。
限流/封禁:按 /24 封一个机房比逐个 IP 高效。
七、IPv6 的差异
IPv6 是 128 位,/64 是标准子网(一个子网内的地址数量是 2⁶⁴,大到不用考虑「够不够」)。IPv6 没有广播地址,所以可用地址是「总数 − 1(网络地址)」,不像 IPv4 要减 2。
八、快速计算
不确定某个网段的范围与可用数量,用 CIDR 计算工具 输入 192.168.1.10/24 即可得到网络地址、广播地址、可用范围与主机数,避免手算出错。
小结
/24 = 前 24 位网络号、8 位主机、可用 254 个;网络地址与广播地址不能分配;私有段是 10/8、172.16/12、192.168/16;0.0.0.0/0 等于对全网开放,数据库端口千万别这么配。