如何使用 NetBox 组织您的网络基础设施
每个网络工程师或系统管理员可能都有一个关于 Excel 表格的悲伤故事。他们多年来一直在表格中追踪可用 IP 地址,直到有人不小心将同一个地址同时分配给了网关和新数据库服务器。至于服务器机房中的物理机架,文档通常会落后于实际状态好几个月。没有人能准确记得那根蓝色网线接入的是哪个配线架端口。
NetBox 项目诞生于 2016 年,正是为了应对这种混乱局面。它采用 Python 和 Django 构建,旨在替代分散的 IP 地址管理系统(IPAM)和数据中心基础设施管理工具(DCIM)。如今,该项目在 GitHub 上已获得超过 21,000 颗星,成为维护网络权威状态的行业标准。

什么是单一数据源以及为什么需要它
NetBox 的核心原则是单一数据源概念——一个权威信息的单一来源。NetBox 捕获的是网络的预期状态,而非其当前运行状态。
这是一个根本性的区别。该程序不会通过 SNMP 轮询交换机或扫描端口。它描述的是网络应该如何根据工程师的设计进行配置。

这种关注点分离从根本上改变了自动化的方式。工程师不再需要手动配置设备然后费力编写报告,而是直接在 NetBox 数据库中进行更改。Ansible 和 Salt 等脚本或编排系统随后通过 REST API 检索这些参数,生成配置,并将其部署到设备上。
主要功能
开发人员特意专注于网络特定需求,因此数据模型在安装后即可直接使用。
1. 详细的物理和逻辑建模
该系统可以统一所有基础设施层:
- 站点位置、服务器机房、机架和特定单元
- 设备类型、扩展模块、电源和网络接口
- 从服务器端口到核心交换机端口的端到端线缆路径追踪
- IP 前缀、地址池、VLAN 和 VRF
界面可以可视化显示已安装设备的机架,并追踪穿过配线架的完整线缆路径。


2. 通过 Jinja2 渲染配置
您可以直接在 NetBox 中存储 Jinja2 模板。这些模板从数据库中提取参数,为 Cisco、Juniper、Mikrotik 或 Linux 服务器生成可直接使用的配置。模板可以通过 Web 界面上传或与外部 Git 仓库同步。
3. 自定义脚本和 Webhook
日常操作(例如上线新分支机构)在手动填写数十个表单时会耗费大量时间。NetBox 内置了对自定义 Python 脚本的支持。您编写一个包含必要输入字段的脚本,工程师可以直接在浏览器中运行它。脚本会自动分配所需的子网、创建设备,并根据公司策略分配地址。
Webhook 支持与其他服务集成。当您添加新服务器时,Webhook 会立即向监控系统发送事件,或更新 DHCP 服务器上的记录。
4. 变更控制和验证规则
系统维护所有操作的完整审计日志。您可以准确查看谁更改了端口状态、地址何时被分配,以及与之关联的工单是什么。
为防止员工违反公司标准,管理员可以配置自定义验证规则。例如,您可以禁止删除标记为"运行中"的设备,或要求特定服务器型号必须填写资产编号字段。

技术栈和可扩展性
NetBox 在底层运行的是一个经典且经过验证的技术栈:
- Python 3 和 Django Web 框架
- PostgreSQL 作为主数据库
- Redis 用于任务队列和缓存
该应用提供基于 REST 和 GraphQL 的开放 API,这大大简化了集成构建。
当标准实体不足时,可以通过插件扩展功能。例如,官方 NetBox Branching 插件引入了类似 Git 的分支逻辑进行数据管理。工程师创建一个分支,进行计划的拓扑更改,获得同事批准后,仅在部署到生产环境前合并到主数据库。其他流行插件增加了 DNS 区域管理和 BGP 会话追踪功能。
谁可以从这个项目中受益
如果您的公司只有几台服务器和一台非网管交换机,部署 NetBox 就没有意义了。维护它的开销会超过其带来的好处。
然而,如果您的基础设施包含数十台交换机、数百台虚拟机或多个分支机构,该项目很快就能收回实施时间。它将分散在各个工程师手中的知识转化为可用于自动化的结构化数据库。
您可以通过公开演示探索界面而无需在本地安装任何内容,项目文档提供了通过 Docker 或直接在主机上安装的详细步骤。
相关项目