子网数怎么算
IPv6 把 64 位当成链路边界后,子网数量就是 2 的「站点前缀到 64 之间的位数」次方:站点前缀 /48 剩 16 位,能切 65536 个 /64;/52 剩 12 位,切 4096 个;/56 剩 8 位,切 256 个;/60 剩 4 位,切 16 个;/62 剩 2 位,切 4 个。规划时数的是「有几条链路」,不是「有多少个地址」。
地址总量与子网数的区别
另一个常用数字是地址总数:2 的(128 减前缀)次方。例如 /64 有 2^64 个地址,约 1.8×10^19;/48 有 2^80 个地址。这两个数字很容易混:子网数用来做规划,地址总量用来说明规模量级。理解它们的关系有助于判断「能不能扫描这个段」——/64 里的地址数量级决定了不可能枚举。
实践中的含义
由于每个 /64 都大得无法扫描,IPv6 的安全策略不能依赖「地址猜不到」,而要靠前缀层面的明确放行与拒绝。同样地,主机发现与资产管理不能再靠 ping 扫段,需要依赖邻居表、DHCPv6 租约、交换机 MAC 表或专门的发现协议,这也是 IPv6 运维工具链与 IPv4 明显不同的地方。
基本信息
| 子网数 | 2^(64 - 站点前缀) |
|---|---|
| 地址总数 | 2^(128 - 前缀) |
| /48 | 65536 个 /64 |
| /56 | 256 个 /64 |
| /64 | 2^64 ≈ 1.8×10^19 个地址 |
典型使用场景
- 规划企业站点:确认 /48 能容纳多少条 VLAN
- 向运营商申请前的容量沟通:说明需要多少条链路
- 家宽多网段场景:判断 /56 能否满足多个 SSID 与访客网
- 评估扫描与发现方案:/64 不可枚举,需换方法
- 考试与培训中换算 IPv6 子网数量与地址总量
速算表
速算表
/48 → 2^16 = 65536 个 /64
/52 → 2^12 = 4096
/56 → 2^8 = 256
/60 → 2^4 = 16
/62 → 2^2 = 4
/63 → 2^1 = 2Python 验证
Python 验证
python -c "import ipaddress as ipa; n=ipa.ip_network('2001:db8:acad::/48'); print(2**(64-48)); print(next(n.subnets(new_prefix=64))); print(n.num_addresses)"
# 65536
# 2001:db8:acad::/64
# 1208925819614629174706176常见前缀与规模
| 前缀 | 可切 /64 数 | 地址总量量级 | 典型对象 |
|---|---|---|---|
| /32 | 2^32 | 2^96 | 运营商分配起点 |
| /48 | 65536 | 2^80 | 企业站点 |
| /56 | 256 | 2^72 | 家宽、小分支 |
| /60 | 16 | 2^68 | 微型办公 |
| /64 | 1 | 2^64 | 单条链路 |
IPv6 地址充足到不需要「省着用」,规划的重点因此转向结构:把子网位当成编码空间,按区域、楼层、功能分配,让前缀本身表达含义。比起压缩地址,清晰的结构带来的运维收益更大。
想扫描 /64 找主机是不现实的:2^64 个地址即使每秒探测一百万个也需要数千年。资产发现要改用邻居表、DHCPv6 租约与交换机转发表等手段,否则会误判「网络里没有设备」。