| 规则 1 | 合并块大小必须是 2 的幂,且首地址按块大小对齐 |
|---|---|
| 规则 2 | 合并后前缀 = 32 - log2(合并地址总量) |
| 例 | 192.168.0.0/24 - 192.168.3.0/24(4 个)→ 192.168.0.0/22 |
逐层合并(4 个 /24 → 1 个 /22)
逐层合并(4 个 /24 → 1 个 /22)
192.168.0.0/24 + 192.168.1.0/24 → 192.168.0.0/23
192.168.2.0/24 + 192.168.3.0/24 → 192.168.2.0/23
192.168.0.0/23 + 192.168.2.0/23 → 192.168.0.0/22Python 批量聚合
Python 批量聚合
import ipaddress as ip
nets = [ip.ip_network(f'172.16.{x}.0/24') for x in range(32, 64)]
list(ip.collapse_addresses(nets))
# [IPv4Network('172.16.32.0/19')]聚合不能多含未规划的地址:172.16.32.0/19 覆盖 32-63 共 32 个 /24,其中任一段预留他用都会形成黑洞。