IPv6 中文资料和培训

IPv6 规划、配置、安全加固、迁移方案的信息平台,为信息化部门负责人、网络工程师和网络爱好者提供技术和决策支持。

原创 IPv6 教程
IPv6 参考资料
中国/中文站点对 IPv6 支持情况
关于 IPv6-CN.com

意见和建议提交 Issue

IPv6 地址规划与分配——全球可路由地址

作者 宋崟川

科学规划 IPv6 地址空间的意义:

几种常见前缀长度和分配场景

前缀长度 适用场景
32 RIR/NIR(区域/国家互联网注册机构)分配给有 ASN 的运营商、互联网公司、大型企业。是地址最小分配单元(再小就不给了)。
40 运营商向有多个(256个以内)站点和数据中心的大型企业分配的前缀
44 运营商向有多个(16个以内)站点和数据中心的中型企业分配的前缀
48 运营商向中小客户分配的常见前缀长度。或大中企业内一个站点的前缀
56 宽带运营商给家庭用户和小微企业分配的最小前缀长度(最大子网大小)
64 末端设备子网,/64 是很多协议硬性要求的(IPv6 无广播风暴风险)
127 路由器点对点链路,此处不是为了节约地址而是防止一种资源耗尽型攻击

由于 IPv6 的接口地址部分,即后 64 位,所能容纳的地址数量远超过现有任何设备的硬件转发表项,可以近似看做无限的地址空间,完全不需要考虑节约地址的事情。

客户端接入的二层网络的规模(即每个 /64 所对应的 VLAN)要尽量小,因为二层网络的状态难以使用成熟的分布式路由协议进行分发,网络规模发展会很快遭遇瓶颈。笔者目前的推荐是一个 VLAN 不要超过 2012 个有唯一 MAC 地址的网络接口。

虽然在路由层面,设备都支持任意长度的前缀,但为了使维护人员无需在紧急排障时还要计算子网范围,请务必在 4 比特边界,即每个 16 进制数处划分子网。

如果根据计算,获得的前缀不足以支撑足够多的 /64 子网,请尽快向地址分配机构请求(空间)更大的地址前缀,即更短的前缀。

本文中使用的所有全球单播地址前缀均为标准文档专用地址:2001:db8::/32

几个不同前缀长度地址的例子和所包括的地址范围:

前缀长度 示例地址 地址范围
32 2001:db8::/32 2001:0db8:0000:0000:0000:0000:0000:0000
2001:0db8:ffff:ffff:ffff:ffff:ffff:ffff
40 2001:db8:ab00::/40 2001:0db8:ab00:0000:0000:0000:0000:0000
2001:0db8:abff:ffff:ffff:ffff:ffff:ffff
48 2001:db8:abcd::/48 2001:0db8:abcd:0000:0000:0000:0000:0000
2001:0db8:abcd:ffff:ffff:ffff:ffff:ffff
56 2001:db8:abcd:1200::/56 2001:0db8:abcd:1200:0000:0000:0000:0000
2001:0db8:abcd:12ff:ffff:ffff:ffff:ffff
64 2001:db8:abcd:1234::/64 2001:0db8:abcd:1234:0000:0000:0000:0000
2001:0db8:abcd:1234:ffff:ffff:ffff:ffff

那属于运营商和自己的地址在配置时有何不同?

除了使用自己的地址在边界路由器上需要运行 BGP 与上游运营商建立关系以外,内部地址的划分没有不同。

如果预计要经常切换运营商,则必须考虑申请自己的 ASN 和 IPv6 地址前缀,与上游运营商使用 BGP 交换路由信息。

给宽带运营商的话:

示例:两种常见情况下的地址分配

获得运营商静态分配 /48 前缀的单位和企业

  1. 这个前缀不适合有多个大型园区,每个园区超过 16 个楼宇或数据中心的场景。但是对于单个大园区、或多个小园区是合适的。
  2. 考察现有 IPv4 子网分配情况,假设内部没有额外一层受企业控制的 NAT(即没有用户私接 NAT 路由器之外的情况),统计子网个数。如果超过 65536 个,检查有无因为某个子网地址不够分配而新加子网的情况。
  3. 一个 /48 可以划分为 16 个 /52,256 个 /56,4096 个 /60,65536 个 /64 大小的子网。每一位分配时,建议预留 0000 (0) 和 1111(F),避免书写和阅读障碍。
  4. 前两位 16 进制数的划分可以有以下两种思路,笔者推荐第一种。

先考虑路由聚合,再考虑基于地址的安全策略。

第 49 – 52 比特,可能的取值是 0 – F 的十六进制,去掉头尾共 14 个数。可以给每个楼或者小型园区分配一位。对网络核心方向只发布属于自己的一条聚合路由。
功能块/地理位置 /52 长度地址前缀
办公楼 2001:db8:abcd:1000::/52
教学楼A 2001:db8:abcd:2000::/52
教学楼B 2001:db8:abcd:3000::/52
宿舍楼A 2001:db8:abcd:8000::/52
数据中心A 2001:db8:abcd:c000::/52
数据中心B 2001:db8:abcd:d000::/52
第 53 – 56 比特,共 14 个可能的组合,可以给每个安全组分配一位。以上面的办公楼为例:
安全组 /56 地址前缀
网络设备 2001:db8:abcd:1100::/56
楼内服务器 2001:db8:abcd:1200::/56
安防系统 2001:db8:abcd:1300::/56
会议系统 2001:db8:abcd:1400::/56
IP 电话 2001:db8:abcd:1500::/56
网络信息化中心 2001:db8:abcd:1800::/56
办公室无线 2001:db8:abcd:1c00::/56
办公室有线 2001:db8:abcd:1d00::/56
学生无线 2001:db8:abcd:1e00::/56

合理分配安全组前缀,简化 ACL 条目数量。

这样分配后,网络内路由表条目达到最少,如果每个 /52 子网一样的话安全策略条目大部分都是简单的重复,可以批量生成。

先考虑安全策略,再考虑路由聚合。

这样所有设备上的安全策略可以达到一致,大大降低了安全相关的维护成本。

路由条目较多,不过对于现代的动态内部路由协议(IGP)例如 OSPF,EIGRP 和 IS-IS 也不是问题。但需要更多路由聚合的配置分散在各种网络边界设备上,才能控制住路由表规模。

随着现在诸如 BeyondCorp(来自 Google) 的理念普及,用户的访问权限不再与其所在子网和网络地址相关,只在应用层对用户进行认证和鉴权。甚至可以省略掉这一位作为安全边界的划分,为内部提供更多可用子网。

上面分析了 49-56 比特的地址分配,接下来讨论剩下的部分

如果有多个不同地理位置的站点和数据中心,先按照地理位置分配,再考虑安全和流量策略分配。

所得前缀长度小于 /48 的可以参考此划分方法,为未来发展进一步预留空间,比如配置 /56,预留包含此 /56 的 /52。

获得运营商静态或动态分配 /56 前缀的家庭

先来帮运营商算一下:

所以请务必不要节约前缀,而是从未来网络发展的角度来考虑,为家庭用户分配 /56 的前缀。

与企业网络层次结构不同,家庭网络的前缀分配是扁平化的,通常所有设备都连接在同一个路由器上,重新编址也不会太难。

在目前应用尚不丰富的情况下,我们从 2001:db8:1234:4300::/56 中选择一个 /60 前缀 2001:db8:1234:4320::/60 来为家庭网络分配地址。

一个 /60 前缀包含 16 个 /64 前缀,保留第 61 – 64 位全 0 和全 1 的,不使用。可以直接考虑安全策略为主的划分。

总结

分配前缀时要把以下几个重要思想牢记:

  1. 地址合理分配后,组织进一步扩大规模是不需要对网络进行大规模改动或重编址的。
  2. 网络局部发生变化时,细节信息不应当传播到不关心的区域(路由设计问题)。
  3. 用户应当有条件获得较大子网以进行网络隔离。
  4. 组织的网络拓扑和用户与地址的对应关系要控制在组织内部,对外有保护措施。
  5. 二层网络会制约网络健康发展,要有意识地利用三层路由来控制二层网络规模。
  6. 路由表尽量小,让网络管理员看起来每一位都有意义。
  7. 重复性操作要考虑使用脚本完成。
  8. 注意由于地址空间扩大带来的有意无意的拒绝服务攻击风险。

IPv6 前缀的分配一定要考虑未来五年十年的发展需求,地址重编码并不简单。虽然 IPv6 支持多个前缀同时使用,但客户端行为目前还不确定,要无缝切换需要更多精力周密规划,尤其是网络结构调整造成的地址重编码。

如果你遇到的场景不能直接套用前面的例子,请邮件与我联系 yinchuan@ipv6-cn.com ,我会考虑增加更多实例。

任何使用本文制作出版物的行为需经本人书面同意,并支付稿酬。

参考资料(英文原文)

tags: tutorial