VLSM 子网规划器

总部给你一段 IP,要分给 N 个部门(每个部门需求量不同)。如果手动算 → 浪费一下午。这个工具 3 秒出方案。

什么是 VLSM

VLSM(Variable Length Subnet Masking,可变长子网掩码)。

传统子网划分:所有子网大小相同(等长子网)。比如 /24 划成 4 个 /26,每个 62 IP —— 但销售部要 100 人,技术部只要 10 人,浪费巨大。

VLSM 按需求分配:大部门大子网,小部门小子网。最大节约地址。

它能做什么

VLSM 规划器

输入原始网络 + 各部门主机需求,自动按贪心算法分配最优子网。

例:把 192.168.1.0/24 划给 4 个部门:

需求:  100, 50, 20, 10
排序:  100, 50, 20, 10(从大到小)

分配:
  销售(100): 192.168.1.0/25    (126 可用)
  财务(50):  192.168.1.128/26  (62 可用)
  技术(20):  192.168.1.192/27  (30 可用)
  行政(10):  192.168.1.224/28  (14 可用)
  剩余:    22 IP

使用场景

场景 1:公司分支办公网规划

总部 IP 段:10.1.0.0/16
部门需求:
  - 销售部:  500 人
  - 研发部:  300 人
  - 行政部:  100 人
  - 财务部:  30 人
  - 会议室:  20 个 AP

→ 一键出方案,按需求精准分配。

场景 2:多门店连锁

总部 IP 段:172.16.0.0/16
  - 旗舰店(最大):300+ 设备
  - 标准店:100 设备
  - 迷你店:20 设备

→ 顶级店用 /22,普通店 /25,迷你店 /27。

场景 3:学校机房

192.168.100.0/22 划分为:
  - 高三机房:100 台电脑
  - 高二机房:80 台
  - 阅览室:30 台
  - 办公室:15 台

核心算法

贪心策略 —— 按需求从大到小逐个分配:

def vlsm_plan(network, host_needs):
    sorted_needs = sorted(host_needs, reverse=True)
    next_avail = int(network.network_address)

    allocations = []
    for need in sorted_needs:
        prefix = hosts_to_prefix(need)  # 计算最小前缀
        candidate = IPv4Network(f'{int_to_ip(next_avail)}/{prefix}', strict=False)

        allocations.append({...})

        next_avail = int(candidate.broadcast_address) + 1

    return allocations

为什么贪心是对的?

VLSM 的核心要求是子网连续且不重叠。贪心策略保证"先满足大需求,剩下的给小需求",避免大需求被切割成多个小段。

反例:如果先满足小需求:

192.168.1.0/27 →  30 IP  ← 行政部(只要 10)
192.168.1.32/26 → 62 IP  ← 研发部(要 80,不够!)

必须给研发部 /25 = 128 IP,但 /27 + /26 已经用到了 .32,/25 起始必须是 .0 或 .128,地址已经碎片化。

贪心避免这个坑。

常见陷阱

1. 算错前缀

def hosts_to_prefix(need):
    n = 0
    while (2**n) - 2 < need:  # ← 别忘了减 2(网络+广播地址)
        n += 1
    return 32 - n

# hosts_to_prefix(100) → /25 (126 可用)
# hosts_to_prefix(126) → /25 (126 可用,刚好)
# hosts_to_prefix(127) → /24 (254 可用)

2. 浪费在"边界对齐"

子网必须从对齐边界开始。/26 的子网起始必须是 0, 64, 128, 192

3. 总容量校验

如果所有需求加起来超过原网络可用 IP,会划分失败。工具会自动检测。

在线使用

👉 VLSM 子网规划器

简单子网划分用 CIDR 子网计算器 就行;多部门规划才用 VLSM。

学习建议

  1. 先手算 2 个例子 → 理解贪心
  2. 再用工具验证
  3. 最后尝试反转:给定一段 IP 划分,反推每个部门的规模

这就是 VLSM 的精髓。


📱 关注「网英的日常」,系统化学习数通知识!