返回技术博客

SKNK 中文技术指南

IPv6 /48 怎么划分?/64、/56、/127 与 VLAN 地址规划

从一个 IPv6 /48 出发,说明如何按地区、环境和业务划分 /64,/56 适合什么场景,点对点链路何时使用 /127,以及如何避免后期重编址。

技术内容

由 Shikanoko Networks 编写与维护

一个 IPv6 /48 可以划分成 65,536 个 /64。实际规划的重点不是节省地址,而是让每个子网的位置、环境和用途可以被长期识别,并为新机房、新 VLAN、路由汇总和反向 DNS 留出空间。

普通终端 LAN 通常使用 /64,路由器点对点链路可以按 RFC 6164 使用 /127,单个 Loopback 常使用 /128/56 则更适合作为向一个站点、客户或下级网络委派的地址块,而不是普通 VLAN 的终端子网。

小鹿把一大块 IPv6 地址整理进分层清晰的地址柜

好的 IPv6 规划不是把地址切得越碎越好,而是让层级、用途和预留空间一眼可读。

先理解 /48 的结构

IPv6 地址一共 128 位。以文档地址为例:

2001:db8:1200::/48

前三个十六进制组,也就是前 48 位,属于这个前缀。接下来的 16 位可以用来编号 /64 子网:

2001:db8:1200:0000::/64
2001:db8:1200:0001::/64
2001:db8:1200:0002::/64
...
2001:db8:1200:ffff::/64

计算公式是:

2^(64 - 48) = 65,536

因此,规划 /48 时真正需要设计的是第四个十六进制组,也就是 16 位 Subnet ID。

常见前缀长度分别做什么

前缀长度 包含多少个 /64 常见用途
/48 65,536 组织、站点集合或终端网络的总体地址块
/52 4,096 /48 内的大区块或区域汇总
/56 256 站点、客户或下级网络委派
/60 16 较小站点或设备组委派
/64 1 普通 LAN、VLAN、终端网段
/127 不按 /64 子网数量理解 路由器点对点链路
/128 单个地址 Loopback、Host Route、特定服务地址

这张表描述的是常见工程习惯,不意味着所有场景只能使用一种长度。地址分配政策、接入方式、设备能力和协议要求仍需单独确认。

为什么普通 LAN 通常使用 /64

IPv6 Stateless Address Autoconfiguration(SLAAC)和许多终端实现都围绕 64 位 Interface Identifier 工作。

在普通终端网段上使用比 /64 更长的前缀,例如 /80/120,可能导致:

  • SLAAC 无法按标准方式工作;
  • 操作系统和网络设备行为不一致;
  • Neighbor Discovery、地址生成或安全功能出现兼容问题;
  • 后续接入新设备时需要特殊配置;
  • 运维人员无法使用通用工具和经验排障。

所以,普通 LAN、VLAN、无线网络和服务器二层网段优先使用 /64。不要把 IPv4 的“按主机数量精确切小子网”习惯原样搬到 IPv6。

/127 适合什么

RFC 6164 建议在路由器之间的点对点链路上使用 /127。这种场景只有两个链路端点,不需要普通终端使用的 SLAAC。

示例:

2001:db8:1200:ff00::/127

Router A: 2001:db8:1200:ff00::
Router B: 2001:db8:1200:ff00::1

RFC 6164 采用 /127 的主要理由,包括避免某些点对点链路的 Ping-Pong 转发问题,以及缩小由未使用地址触发 Neighbor Cache 消耗的攻击面。

但不要因此把所有网络都改成 /127。它适用于明确的路由器点对点链路,不适用于有普通主机、SLAAC 或多设备接入的 LAN。

/56 应该怎样理解

一个 /56 包含 256 个 /64

2^(64 - 56) = 256

常见用法是把 /56 作为一个站点或下级网络的委派范围。例如:

总部:2001:db8:1200:0000::/56
东京:2001:db8:1200:0100::/56
法兰克福:2001:db8:1200:0200::/56
实验环境:2001:db8:1200:f000::/56

每个 /56 内仍然可以划分 256 个 /64

这样做的价值不是“每个站点现在就需要 256 个 VLAN”,而是:

  • 站点边界清楚;
  • 可以按站点汇总路由;
  • 新 VLAN 不需要跨区寻找零散编号;
  • 防火墙、日志和 IPAM 更容易按范围管理;
  • 迁移或新增站点时不必重排整个地址计划。

用十六进制做结构化编号

IPv6 适合按 4 位 Hex Nibble 规划。一个 /48/64 之间有四个十六进制数字,可以拆成:

R E FF
│ │ └─ 业务或 VLAN 编号(8 位)
│ └─── 环境编号(4 位)
└───── 地区或站点编号(4 位)

示例约定:

字段 数值 含义
Region 1 上海
Environment 2 生产
Function 01 Web VLAN

得到:

2001:db8:1200:1201::/64

再例如:

2001:db8:1200:1101::/64  上海 / 测试 / Web
2001:db8:1200:1201::/64  上海 / 生产 / Web
2001:db8:1200:1202::/64  上海 / 生产 / Database
2001:db8:1200:2201::/64  东京 / 生产 / Web

是否采用这套字段并不重要,重要的是规则固定、有文档,而且预留值有明确含义。

不要把所有信息都塞进地址

结构化地址很有用,但过度编码会让计划难以维护。

不建议把以下内容全部写进 16 位 Subnet ID:

  • 国家;
  • 城市;
  • 机房;
  • 楼层;
  • 机柜;
  • 环境;
  • 部门;
  • VLAN;
  • 设备类型;
  • 客户编号。

16 位空间有限,组织结构也会变化。地址里只保留最稳定、最有运维价值的两到三个维度,其余信息放进 IPAM、DNS 和资产系统。

一个小型双站点示例

假设一家公司有上海和东京两个站点,分为生产、测试和基础设施三类。

可以先按 /56 预留:

2001:db8:1200:0000::/56  上海
2001:db8:1200:0100::/56  东京
2001:db8:1200:fe00::/56  全局基础设施
2001:db8:1200:ff00::/56  路由器链路与 Loopback

上海站点内:

2001:db8:1200:0001::/64  管理网
2001:db8:1200:0010::/64  生产 Web
2001:db8:1200:0011::/64  生产 Database
2001:db8:1200:0020::/64  测试 Web
2001:db8:1200:0021::/64  测试 Database

东京站点内使用相同末尾编号:

2001:db8:1200:0101::/64  管理网
2001:db8:1200:0110::/64  生产 Web
2001:db8:1200:0111::/64  生产 Database

同类业务在各站点使用相似编号,看到地址就能大致判断用途。

BGP 应该发布哪些前缀

内部划分很多 /64,不等于要把每个 /64 发布到全球 BGP。

对于一个 /48,常见做法是:

  • 对公网发布聚合的 /48
  • 在内部 IGP、IBGP 或静态路由中处理各 /56/64
  • 只有在明确的流量工程、Anycast 或故障隔离需求下,才评估发布更具体路由;
  • 发布前确认上游长度限制、IRR 和 ROA maxLength
  • 避免向全球路由表加入没有必要的更具体前缀。

如果 ROA 只授权 /48maxLength=/48,发布 /64 会成为 RPKI Invalid。反过来,为了将来“可能会用”而把 maxLength 放宽到 /64,也会扩大授权范围。地址规划和 ROA 计划应一起设计。

PA 与 PI 对地址规划的影响

地址内部怎么划分是一回事,地址能否在更换提供方后继续使用是另一回事。

PA 地址

Provider Aggregatable 地址依附于上级地址持有方。更换提供方或终止服务时,通常需要重新编号。规划时应:

  • 保留清晰的 IPAM;
  • 避免把地址写死在无法批量修改的配置里;
  • 使用配置管理和 DNS;
  • 提前记录迁移依赖;
  • 不把 PA 地址当作永久可携带资产。

PI 地址

Provider Independent 地址作为独立资源,迁移上游时通常更灵活,但仍需维持相应合同、政策和注册关系。

无论 PA 还是 PI,都需要合理的内部规划。PI 不会自动解决混乱的 VLAN 编号,PA 也不意味着可以不做长期设计。

DNS、反向 DNS 和 IPAM

IPv6 地址比 IPv4 更难靠人脑记忆,地址计划必须与管理系统配合。

至少记录:

  • Prefix 和用途;
  • 站点;
  • VLAN 或接口;
  • 网关;
  • DHCPv6、SLAAC 或静态分配方式;
  • DNS Zone;
  • Reverse DNS 委派;
  • 防火墙区域;
  • 负责人;
  • 创建和回收日期。

反向 DNS 使用 ip6.arpa 的 Nibble 形式。按 4 位边界规划 /48/52/56/60/64,通常更方便做清晰的反向委派。

ULA 和公网地址怎么配合

ULA 使用 fc00::/7 范围,目前本地生成通常使用 fd00::/8。它适合不应依赖公网前缀的内部通信,但不是“IPv6 私网地址直接替代品”这么简单。

需要注意:

  • ULA 不应出现在公共 DNS 中;
  • 同一主机同时有 ULA 和 Global Unicast 时,要理解源地址选择;
  • 防火墙不能因为是 ULA 就默认信任;
  • VPN、网络合并时要避免 ULA 前缀冲突;
  • 不要用 ULA 掩盖本应通过路由和安全策略解决的问题。

对于服务器网络,很多团队直接使用 Global Unicast,再通过防火墙控制访问范围。是否同时部署 ULA,应基于具体依赖和运维能力决定。

常见错误

沿用 IPv4 的节省思路

把普通 LAN 划成 /120,只因为“实际只有几十台主机”,会牺牲 SLAAC 和兼容性,却没有带来有意义的地址节省。

按创建顺序连续编号

000100020003 初期看起来简单,几年后却无法从地址判断站点和用途,也难以做范围汇总。

第一版就设计得过度复杂

为了未来可能出现的几十个国家和几百个部门,把所有位都预先编码,反而让当前团队无法理解。规划应保留空间,但不需要预测所有未来。

忘记路由和 ROA 边界

内部切了 /64 后直接对公网发布,却没有核对上游最长前缀和 ROA maxLength

没有回收流程

删除 VLAN 后不回收 DNS、防火墙、IPAM 和监控记录,旧地址会长期保留在系统里。

把两条 PA 前缀混成一套地址计划

多上游各提供一段 PA 地址时,终端会出现多个前缀,故障切换和源地址选择也会变复杂。这不等同于使用自有可独立发布前缀的 BGP Multihoming。

地址规划检查清单

  • 普通 LAN 使用 /64
  • 点对点路由链路按实际设备能力评估 /127
  • Loopback 使用清晰的 /128 地址池
  • /48/64 的 16 位有稳定编号规则
  • 为新站点和新环境预留空间
  • 内部子网不被无意发布到公网
  • BGP 前缀、IRR 和 ROA 相互一致
  • DNS、反向 DNS 和 IPAM 同步设计
  • PA 地址具备未来重编址方案
  • 地址创建、变更和回收都有负责人

常见问题

一个 /48 有多少个 /64

有 65,536 个,计算方式是 2^(64-48)

每个 VLAN 都应该使用 /64

普通终端 VLAN 通常是。路由器点对点链路和 Loopback 是不同场景,可以分别使用 /127/128

/56/64 更适合服务器网段吗

不是这个关系。/56 通常作为包含多个 /64 的委派或站点范围,具体服务器 LAN 仍使用 /64

地址多是不是可以随便分

不能。IPv6 不缺地址,但仍需要清晰的路由边界、访问控制、DNS、日志和回收流程。

/48 里的所有 /64 都能对公网发布吗

技术上能否被上游接受取决于过滤政策和授权,运营上通常不应把大量内部 /64 加入全球路由表。优先发布聚合前缀。

小结

IPv6 地址规划关注的不是把地址用得最省,而是让网络长期可读、可汇总、可迁移。

对一个 /48 来说,最实用的原则是:

普通 LAN 使用 /64,站点按 /56 或其他清晰边界预留,点对点链路单独规划;公网只发布必要的聚合前缀,并让 IRR、ROA 和真实公告保持一致。

参考资料

继续阅读