VLSM 规划器
按一份主机需求清单,把一个地址块拆成大小合适的子网。规划器从最大的子网开始分配,计入每个子网的网络地址与广播地址开销,统计浪费的地址,并在地址块不够用时明确告诉你还需要多少空间。
要划分的地址块。如果填入的是主机地址,会自动对齐到它所在的网络边界。
推荐取值
子网需求
VLSM 算法
算法本身很短,但每一步都很关键。排序搞错是“算术上明明够用、方案却算不出来”最常见的原因。
1. 对每个需求计算前缀长度:
prefix = 满足 2^(32 − P) ≥ hosts + 2 的最小 P
2. 按主机数从大到小排序。
3. 把游标放在基地址块的起始地址上。
4. 依次处理每个需求:
把游标向上取整到子网大小的整数倍
若该子网能放进基地址块,就分配它
把游标移到已分配子网之后
5. 若还有需求放不下,说明地址块太小。第 4 步的对齐正是手工表格最容易出错的地方。大小为 64 的子网必须从 64 的整数倍地址开始,所以游标要向上取整,而不能简单地按上一个子网的大小往前挪。
推算示例:用 10.0.0.0/24 划分四个部门
需求:办公 100、研发 50、摄像头 20、管理 10。
逐个定大小:100 台主机需要 102 个地址,所以是 /25;50 台需要 52 个,所以是 /26;20 台需要 22 个,所以是 /27;10 台需要 12 个,所以是 /28。
从大到小排序:办公 /25、研发 /26、摄像头 /27、管理 /28。
游标 10.0.0.0 → 分配 10.0.0.0/25 (128 个地址) 游标移到 10.0.0.128 游标 10.0.0.128 → 分配 10.0.0.128/26(64 个地址) 游标移到 10.0.0.192 游标 10.0.0.192 → 分配 10.0.0.192/27(32 个地址) 游标移到 10.0.0.224 游标 10.0.0.224 → 分配 10.0.0.224/28(16 个地址) 游标移到 10.0.0.240 剩余空闲:10.0.0.240 – 10.0.0.255(16 个地址,即一个 /28)
四个子网用掉了 256 个地址中的 240 个,末尾留下一个干净的 /28。注意每个子网都落在了自然边界上 —— .0、.128、.192、.224 —— 因为分配是按大小排序进行的。
如果从小到大分配会发生什么
同样的需求,在 10.0.0.0/24 上按错误的顺序分配:管理 /28 放在 10.0.0.0,摄像头 /27 放在 10.0.0.32,研发 /26 放在 10.0.0.64。这样 10.0.0.128 之后才空闲 —— 只剩 128 个地址 —— 而办公的 /25 需要 128 个地址,且必须从 128 的整数倍开始。这里恰好放得下,但余量是零。
现在把研发改成 /25、办公改成 /26。从小到大分配会把 /26 放在 .0,把 /25 放在 .64,而 .64 不是 128 的整数倍 —— 于是 /25 根本放不进去,尽管还有 192 个地址空闲。从大到小分配则是把 /25 放在 .0、/26 放在 .128,毫无问题。
经得起生产环境检验的规划原则
- 把网络地址和广播地址算进去。 需求 100 台主机,需要的是 102 个地址而不是 100 个。漏掉这一点,得到的子网会比需求少一个地址。
- 把基础设施地址数进去。 网关、交换机管理接口,以及 HSRP 或 VRRP 的虚拟地址,都要先从可用范围里扣掉,剩下的才轮到终端设备。
- 点对点链路用 /31。 /30 会在每条广域网链路上浪费四个地址中的两个。链路一多,这就是实打实的地址空间。
- 按三到五年的规模来定大小。 给运行中的 VLAN 重新编址代价很高。如果一个部门现在 100 台主机且还在增长,那么今天给一个 /24,比现在给 /25、两年后再迁移一次要划算。
- 把规划方案纳入版本管理。 CSV 导出就是为这个设计的:把它和配置模板放在一起提交,这样地址方案和设备配置可以一起评审。
跨多个地址块规划
真实网络很少能塞进一个 /24。常见做法是拿一个私有的 /16 或 /12 按站点切分,每个站点内部可能还要再细分。分层使用这个规划器即可:先给各站点分配 /20,再在每个站点的地址块内部为它自己的 VLAN 重新跑一遍规划。因为每个站点的地址块都从其大小对应的自然边界开始,两层划分可以无冲突地叠加。
常见问题
什么是 VLSM?
VLSM 是 Variable Length Subnet Mask(可变长子网掩码)的缩写,指的是在同一个地址空间内使用不同的前缀长度 —— 100 台主机的部门拿到 /25,而只有 2 台设备的广域网链路拿到 /30。在 VLSM 之前,一个网络里所有子网的大小必须一致,这在只需要两个地址的链路上浪费了海量地址空间。
为什么必须从最大的子网开始分配?
因为每个子网的起始地址都必须是其自身大小的整数倍:/25 必须从 128 的整数倍开始,/26 必须从 64 的整数倍开始。如果先分配小子网,它们会散落在地址块各处,最后留下来的空间虽然总量够,却找不到足够大的对齐位置 —— 排序从大到小不是经验法则,而是“只要存在可行方案就一定能找到”的保证。
如何根据主机数算出前缀长度?
主机数加二(网络地址和广播地址),然后找到不小于该总数的、最小的 2 的幂。100 台主机需要 102 个地址,不小于 102 的最小 2 的幂是 128,即 7 个主机位,对应 /25。规划器会在你输入的每一行旁边直接显示所需前缀,方便你在正式计算前就看到划分结果。
如果需求放不进基地址块会怎样?
规划器会明确给出可用空间总量、请求总量,以及能够放下的最小前缀 —— 例如建议改用 10.0.0.0/23 而不是 10.0.0.0/24。它还会点名列出无法放置的具体子网,这通常比一句笼统的失败提示更有可操作性。
VLSM 会浪费地址吗?
会,而且无法避免。子网尺寸只能是 2 的幂,所以 20 台主机的需求会占用一个有 30 个可用地址的 /27,浪费 10 个。把整个方案里这些取整损失加起来,就是规划器给出的“浪费地址”总数。要么换用更大的基地址块,要么接受这些浪费 —— IPv4 里不存在可用主机数介于 14 和 30 之间的子网尺寸。
VLSM 方案中的广域网链路应该用 /31 吗?
在现网路由器上,应该。RFC 3021 允许把 /31 的两个地址分别分配给点对点链路的两端,因此 /31 一点都不浪费,而 /30 要浪费两个地址。规划器接受“2 台主机”的需求,并为其分配一个 /31。
应该预留多少扩展空间?
常见做法是按比当前需求大一级的前缀来定大小 —— 100 台主机的部门给 /24 而不是 /25 —— 因为以后把 VLAN 迁到新子网意味着给每台设备重新编址。把地址段末尾剩余的地址块整体预留出来,留给将来全新的子网。规划器会明确列出未使用的地址范围,方便你看到还剩下什么。