ping6.net
基础知识

IPv6 子网划分:从 /48 到 /64

通过正确的子网划分规划你的 IPv6 网络。了解 /64 边界、如何划分 /48 和 /56 分配以及实际示例。

ping6.net2024年2月1日4 min read
IPv6子网划分CIDR网络规划前缀

IPv6 子网划分理念#

IPv6 子网划分颠覆了 IPv4 的思维方式。你不是在小心翼翼地配给稀缺的地址空间,而是在划分丰富的资源。单个 /48 分配为你提供 65,536 个 /64 子网,比大多数组织将使用的要多。

TL;DR - 快速摘要

要点:

  • 始终对终端主机网络使用 /64(SLAAC 和邻居发现所需)
  • ISP 分配:/48 用于企业(65,536 个子网),/56 用于小型企业(256 个子网),/64 用于最小分配
  • 点对点链路可以使用 /127 或 /126 来节省地址
  • 停止节省地址——IPv6 的丰富性是一个特性,应该合理组织而不是节约

跳转至: 常见 ISP 分配 | 划分 /48 | 特殊情况

设计目标很简单:使子网划分简单且一致。对连接终端主机的所有内容使用 /64。停止担心地址保护。

/64 边界:直接使用它#

/64 前缀长度在 IPv6 中是特殊的。不是因为它在美学上令人愉悦或传统,而是因为基本的 IPv6 协议需要它:

**SLAAC(无状态地址自动配置)**从设备的 MAC 地址或随机值生成 64 位接口 ID。它需要正好 64 位才能工作。给它更少,自动配置就会中断。

邻居发现优化假设为 /64 子网。使用较小的前缀会创建不值得「节省」地址的性能问题。

修改的 EUI-64 接口标识符需要 64 位。隐私扩展需要 64 位。IPv6 生态系统中的所有内容都期望 64 位。

不要在 /64 以下进行子网划分

对终端用户网络使用 /96 或 /112 会破坏 SLAAC 并导致兼容性问题。唯一的例外是点对点路由器链路(/127 或 /126)和环回接口(/128)。

实际建议:对具有主机的每个网段使用 /64。完成。

CIDR 表示法#

IPv6 使用 CIDR 表示法来表示网络前缀:

2001:db8:abcd:1234::/64
│                  │
│                  └─ 前缀长度
└──────────────────── 网络前缀(前 64 位)

斜线后的数字表示标识网络的位数。其余位标识各个接口。

对于 2001:db8:abcd:1234::/64

  • 网络前缀:前 64 位(2001:db8:abcd:1234
  • 接口 ID:后 64 位(从 ::ffff:ffff:ffff:ffff 的任何内容)

常见的 ISP 分配#

大多数 IPv6 连接都带有以下前缀大小之一:

/48 - 企业和大客户#

你获得 16 位用于子网划分(位 49-64),创建最多 65,536 个 /64 网络。

2001:db8:abcd:0000::/64  ─┐
2001:db8:abcd:0001::/64   │
2001:db8:abcd:0002::/64   ├─ 全部来自同一个 /48
...                       │
2001:db8:abcd:ffff::/64  ─┘

这是企业的标准分配。它支持具有数百个位置和 VLAN 的复杂网络。

/56 - 小型企业和住宅#

你获得 8 位用于子网划分,创建最多 256 个 /64 网络。

2001:db8:abcd:ab00::/64  ─┐
2001:db8:abcd:ab01::/64   │
...                       ├─ 可用 256 个 /64 子网
2001:db8:abcd:abff::/64  ─┘

对于具有多个 VLAN 的家庭网络(主网络、访客 WiFi、物联网设备等)来说足够了。

/64 - 最小住宅#

单个子网。如果你不需要网络分段,这很好。大多数家庭用户不需要更多。

许多 ISP 默认为 /64,但会根据请求分配 /56。始终要求至少 /56。

划分 /48 子网#

当你收到 /48 时,你控制位 49-64 用于子网标识。这是 16 位 = 65,536 个子网。

实际示例:办公网络#

分配:2001:db8:abcd::/48
 
子网计划:
├─ 0000-000f  基础设施
│  ├─ 2001:db8:abcd:0001::/64  管理/带外
│  ├─ 2001:db8:abcd:0002::/64  交换机和 AP
│  └─ 2001:db8:abcd:0003::/64  监控和日志

├─ 0010-00ff  服务器
│  ├─ 2001:db8:abcd:0010::/64  Web/应用服务器
│  ├─ 2001:db8:abcd:0011::/64  数据库服务器
│  └─ 2001:db8:abcd:0012::/64  存储

├─ 0100-01ff  用户网络
│  ├─ 2001:db8:abcd:0100::/64  1 楼工作站
│  ├─ 2001:db8:abcd:0101::/64  2 楼工作站
│  └─ 2001:db8:abcd:0102::/64  3 楼工作站

├─ 0200-02ff  访客和公共
│  ├─ 2001:db8:abcd:0200::/64  访客 WiFi
│  └─ 2001:db8:abcd:0201::/64  公共 WiFi

└─ f000-ffff  保留供将来使用

注意十六进制范围创建逻辑分组。该方案可读并为增长留有空间。

分层子网划分#

多站点组织可以为每个位置分配更大的块:

2001:db8:abcd::/48

├─ 2001:db8:abcd:0000::/52  总部(4,096 个 /64 子网)
│  └─ 2001:db8:abcd:0000::/64 到 2001:db8:abcd:0fff::/64

├─ 2001:db8:abcd:1000::/52  分支 A(4,096 个子网)
│  └─ 2001:db8:abcd:1000::/64 到 2001:db8:abcd:1fff::/64

├─ 2001:db8:abcd:2000::/52  分支 B(4,096 个子网)

└─ 2001:db8:abcd:3000::/52  分支 C(4,096 个子网)

每个分支独立管理自己的 /52。总部可以在没有协调开销的情况下委派。

你可以进一步划分子网:

分支 A:2001:db8:abcd:1000::/52

├─ 2001:db8:abcd:1000::/56  建筑物 1(256 个子网)
├─ 2001:db8:abcd:1100::/56  建筑物 2(256 个子网)
└─ 2001:db8:abcd:1200::/56  建筑物 3(256 个子网)

层次结构可以深入到你需要的程度,直到 /64 边界。

划分 /56 子网#

使用 /56,你有 8 位(位 57-64)用于子网划分。这是 256 个 /64 网络。

家庭网络示例#

分配:2001:db8:abcd:ab00::/56
 
子网计划:
├─ 2001:db8:abcd:ab00::/64  主 LAN
├─ 2001:db8:abcd:ab01::/64  家庭办公室
├─ 2001:db8:abcd:ab02::/64  访客 WiFi
├─ 2001:db8:abcd:ab03::/64  物联网设备(摄像头、传感器)
├─ 2001:db8:abcd:ab04::/64  智能家居(扬声器、灯)
├─ 2001:db8:abcd:ab05::/64  实验室/测试网络
└─ 2001:db8:abcd:ab06-abff  可用(250 个子网未使用)

即使是高级用户也不会用完 256 个子网。这个分配很慷慨。

第四个十六进制组中的第八位发生变化:

  • ab00 = 二进制 ...0000 0000(子网 0)
  • ab01 = 二进制 ...0000 0001(子网 1)
  • ab02 = 二进制 ...0000 0010(子网 2)
  • abff = 二进制 ...1111 1111(子网 255)

特殊情况#

点对点链路#

路由器到路由器的链路不需要 18 百京个地址。两个选项:

/127 - RFC 6164 点对点链路标准。提供恰好 2 个地址,类似于 IPv4 的 /31:

2001:db8:abcd:1::/127
├─ 2001:db8:abcd:1::0   路由器 A
└─ 2001:db8:abcd:1::1   路由器 B

/126 - 提供 4 个地址,类似于 IPv4 的 /30:

2001:db8:abcd:1::/126
├─ 2001:db8:abcd:1::0   网络地址(可以使用)
├─ 2001:db8:abcd:1::1   路由器 A
├─ 2001:db8:abcd:1::2   路由器 B
└─ 2001:db8:abcd:1::3   (可用)

两者都有效。/127 更有效。一些较旧的设备仅支持 /126。

或者,只需在点对点链路上使用 /64。它不会浪费任何重要的东西,并简化你的地址计划。

环回地址#

路由器环回接口使用 /128(单个地址):

2001:db8:abcd::1/128

这些用于路由器 ID、管理访问和协议端点。

文档实践#

在分配地址之前记录你的子网计划。一个简单的表格就可以:

| 前缀                       | VLAN | 用途                 | 网关       |
|---------------------------|------|----------------------|------------|
| 2001:db8:abcd:1::/64      | 10   | 管理                 | ::1        |
| 2001:db8:abcd:2::/64      | 20   | 服务器               | ::1        |
| 2001:db8:abcd:10::/64     | 100  | 1 楼用户             | ::1        |
| 2001:db8:abcd:11::/64     | 101  | 2 楼用户             | ::1        |
| 2001:db8:abcd:100::/64    | 200  | 访客 WiFi            | ::1        |
| 2001:db8:abcd:200::/64    | 300  | 物联网设备           | ::1        |

包括:

  • 前缀:完整的 /64 网络
  • VLAN ID:如果适用(有助于关联第 2 层和第 3 层)
  • 用途:连接到此网络的内容
  • 网关:通常是 ::1,第一个地址
  • 备注:防火墙区域、联系信息,任何有助于操作的内容

在你的网络文档系统中跟踪这一点,而不是被遗忘的电子表格。未来的你会感激的。

计算子网信息#

可用的 /64 子网数#

公式:2^(64 - prefix_length)
 
/48: 2^(64-48) = 2^16 = 65,536 个子网
/52: 2^(64-52) = 2^12 = 4,096 个子网
/56: 2^(64-56) = 2^8  = 256 个子网
/60: 2^(64-60) = 2^4  = 16 个子网

子网范围#

对于给定的 /64 子网,范围很简单:

前缀:2001:db8:abcd:1234::/64
 
第一个地址:2001:db8:abcd:1234::
最后一个地址:2001:db8:abcd:1234:ffff:ffff:ffff:ffff
 
可用地址:全部(18,446,744,073,709,551,616)

与 IPv4 不同,没有要保留的广播地址。IPv6 使用多播来实现类似广播的功能。

查找子网边界#

当给定像 2001:db8:abcd:ab00::/56 这样的 /56 时,子网边界是:

第一个 /64:  2001:db8:abcd:ab00::/64
最后一个 /64:   2001:db8:abcd:abff::/64
 
范围锁定位 1-56:     2001:db8:abcd:ab...
位 57-64 可以变化:           00 到 ff
位 65-128 标识接口(/64 部分)

对于分层分配,尽可能在半字节(4 位)边界上对齐。它保持十六进制表示法整洁:

  • /48、/52、/56、/60、/64 在半字节边界上对齐
  • /50、/54、/58、/62 不对齐并创建混乱的十六进制范围

除非你有特定原因,否则坚持使用半字节对齐的前缀。

总结#

一旦你内化了理念,IPv6 子网划分比 IPv4 更简单:

  1. 对所有主机网络使用 /64。不要过度思考。协议栈期望它。

  2. ISP 分配很慷慨。企业为 /48(65,536 个子网),小型站点为 /56(256 个子网),最小部署为 /64。

  3. 分层规划。将块分配给位置或功能。让每个站点独立管理其部分。

  4. 记录你的计划。未来的故障排除取决于了解每个子网的作用。

  5. 停止保护地址。IPv6 丰富是一个特性。使用它。

从 IPv4 的最大思维转变:你不是从有限的空间中挤出每个最后的地址。你正在将丰富的资源组织成逻辑结构。

相关文章#

亲自尝试

使用我们的子网计算器规划你的 IPv6 网络分配并可视化子网层次结构。