>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

如何停止在大脑中计算子网掩码,开始真正的生活

每个团队都有那么一个人,能以计算器般的速度回答“/26 有多少地址?”这样的问题,并立即告诉你某个 IP 是否在某个范围内。我不是那种人。每次需要处理网络时,我都要打开 Python 开始逐位点击。直到我发现了 cidr.xyz。

这到底是什么

cidr.xyz 是一个 CIDR 计算器和子网可视化工具,由开发者 yuvadm 创建。这个项目已经存在一段时间了:代码库创建于 2015 年 12 月,至今已获得约 850 颗星和 238 个分支。该服务本身托管在 cidr.xyz,完全在浏览器中运行。

这个想法非常简洁:输入一个 IP 地址和掩码(可以是 CIDR 表示法或经典的 255.255.255.0 格式),页面立即显示可以从这对信息中提取的所有内容。输入后的第一行是一个可直接使用的 CIDR 后缀,可以直接复制到配置文件中。

计算器显示的内容

让我通过一个例子来说明。我们输入 IP 地址 192.168.1.0,掩码为 /26。输出会显示:

  • 网络地址和广播地址
  • 第一个和最后一个可用主机地址
  • 子网中的主机数量
  • 地址和掩码的二进制表示,逐位显示
  • 通配符掩码(这是配置 ACL 时不可或缺的)
  • “所有地址范围”格式——这是 pfSense 或 Cisco 配置中常见的字符串
  • 二进制掩码的十进制形式

听起来像任何 ipcalc 的描述,但有一个特点让 cidr.xyz 与其他类似工具区分开来——可视化。在输入字段下方,会绘制一个位网格:32 位的地址和 32 位的掩码,分成四个八位字节。网络部分和主机部分的位用不同的颜色高亮显示。

就在那一刻,恍然大悟的感觉袭来。之前我知道 /22 表示 22 个网络位,但我只是把它当作抽象知识记在脑子里。在 cidr.xyz 上,当拖动掩码从 /24 到 /21 时,你可以看到网络部分和主机部分之间的边界在变化。你立刻明白为什么 192.168.0.0/22 属于 192.168.0.0 网络——第三个八位字节 255 在二进制中是 11111111,而 /22 掩码下,第三八位字节的前 6 位被网络部分占用,剩余的 6 位留给主机。没有哪个表格能给你那种“原来如此”的感觉。

谁适合使用

首先是为面试或认证考试做准备的人。VLSM 和网络划分的问题在 CCNA 中经常出现,理解位运算确实是必需的。

其次是处理配置的网络管理员和 SRE。快速验证 ACL 的通配符掩码是否计算正确,确认 10.0.0.0/8 范围实际上以 10.255.255.255 结束——这类任务只需十秒钟就能完成。

第三类是每月接触一次网络、每月都要重新学习的人。我就属于这一类。

技术实现

这个项目使用 TypeScript、React 和 Next.js 构建。README 非常简洁——只有两个部分——但这足以运行本地副本:

之后可以在 127.0.0.1:3000 访问该工具,可以深入研究代码或根据自己的需求进行定制。例如,我曾认真考虑添加按给定数量划分时的子网数量计算功能。这是一个代码库非常紧凑的罕见例子,你完全可以在一个晚上提交一个 pull request。

部署是自动化的:main 分支通过 Cloudflare Workers 自动部署。采用 MIT 许可证,所以如果你愿意,可以 fork 它或嵌入到其他地方。

一点批评

没有一桶蜂蜜不伴着一勺焦油的。功能主要针对 IPv4 设计——计算器不支持 IPv6 地址。如果你工作在 IPv6 的世界里,这个工具帮不了你。二进制可视化有时也会让人感到信息过载:看一眼闪烁的位表,很容易迷失方向。还有,850 颗星不等于一百万——这个项目在小圈子里有名,但没有被遗忘:main 分支的最近一次提交是最近的,代码库仍然活跃。

值得一试吗

绝对值得尝试,如果你:正在准备网络面试;为网络设备编写配置;想要真正直观地理解子网掩码如何划分地址空间。只要把 cidr.xyz 添加到书签里,放在翻译工具旁边——它会派上用场的。

如果你想要更多功能,fork 这个代码库并添加 IPv6 支持。根据代码的紧凑程度,这是一个完全可以在周末完成的任务。

相关项目