首页/网络/IP 与子网速查/用 Python ipaddress 做 IPv6 计算
本包目录(177 条)
掩码与 CIDR 速算50 条私网与特殊地址45 条子网划分方法与例题40 条
IPv6 与下一代网络42 条

用 Python ipaddress 做 IPv6 计算

Python 的 ipaddress 模块原生支持 IPv6:取子网、数地址、压缩形式、判断类型都一行搞定;注意 hosts() 在 /64 上是 2^64 量级的迭代器,永远不要 list(),用 next/islice。

IP 与子网速查网络更新于 2026-10-12

常用操作(已实测输出)

常用操作(已实测输出)
import ipaddress as ipa
n = ipa.ip_network('2001:db8:acad::/48')
n.num_addresses            # 1208925819614629174706176
next(n.subnets(new_prefix=64))
# IPv6Network('2001:db8:acad::/64')

from itertools import islice
hosts = ipa.ip_network('2001:db8::/64').hosts()
list(islice(hosts, 3))
# [IPv6Address('2001:db8::1'), ('2001:db8::2'), ('2001:db8::3')]
IPv6 的 hosts() 从 ::1 起(跳过全零的子网路由任意播地址);/127 互联两个地址都在。

易错点

  • 对 /64 调 list(hosts()):直接内存爆炸
  • 把 /127 当“无可用地址”:两个地址都可用

数据来源与参考

  • Python ipaddress 官方文档
  • RFC 4291(地址架构)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌