NetBox 介绍
起源故事
NetBox 最初由其首席维护者 Jeremy Stretch 在 2015 年在 DigitalOcean 担任网络工程师时开发,作为其自动化网络配置的一部分。认识到这个新工具的潜力后,DigitalOcean 同意在 2016 年 6 月将其作为开源项目发布。
从那时起,全球数千家组织都将 NetBox 作为他们的中心网络真实来源,以赋能网络运营商和自动化。如今,这个开源项目由 NetBox Labs 和一群志愿者维护者共同管理。除了核心产品外,NetBox 社区还开发了众多 插件 来增强和扩展其功能集。
主要特性
NetBox 是专为网络工程师和运营商的需求而构建的。以下是其提供的核心特性的简要概述。
- 具有完整 IPv4/IPv6 对等性的 IP 地址管理(IPAM)
- 下一个可用前缀/IP 的自动配置
- 具有导入和导出路由目标的 VRFs
- 具有可变范围组的 VLANs
- AS 号(ASN)管理
- 具有 SVG 渲染的机架高程
- 使用预定义类型进行设备建模
- 虚拟底座和设备上下文
- 具有 SVG 追踪的网络、电源和控制台线缆
- 分支线缆
- 电源分配建模
- 数据线路和供应商跟踪
- 无线局域网和点对点链接
- VPN 隧道
- IKE 和 IPSec 策略
- 第2层 VPN Overlay
- FHRP 组(VRRP、HSRP 等)
- 应用服务绑定
- 虚拟机和集群
- 灵活的站点和位置层次结构
- 租户所有权分配
- 用于高级配置呈现的设备和虚拟机配置上下文
- 数据模型扩展的自定义字段
- 自定义验证和保护规则
- 直接在用户界面中执行的自定义报告和脚本
- 用于添加自定义功能的广泛插件框架
- 单一登录(SSO)身份验证
- 坚固的基于对象的权限
- 详细的、自动的变更日志
- 全局搜索引擎
- 事件驱动的脚本和 Webhooks
NetBox 不是什么
虽然 NetBox 力图涵盖网络管理的许多领域,但其功能集的范围必然是有限的。这确保了开发集中在核心功能上,并且范围扩张被合理地限制。为此,提供一些 NetBox 不提供 的功能的例子可能有助于理解:
- 网络监控
- DNS 服务器
- RADIUS 服务器
- 配置管理
- 设施管理
尽管如此,NetBox 可以 在向外部工具提供执行这些功能所需的数据方面发挥重要作用。
设计哲学
NetBox 的设计主要遵循以下原则。
复制现实世界
在数据模型中进行了仔细考虑,以确保它能够准确反映现实世界的网络。例如,IP 地址不是分配给设备,而是分配给连接到设备的特定接口,一个接口可能分配有多个 IP 地址。
作为“真相之源”
NetBox 打算代表网络的 期望 状态,而不是其 操作 状态。因此,强烈不推荐自动导入实时网络状态。在 NetBox 中创建的所有数据都应由人工审核,以确保其完整性。然后,NetBox 可以用于以高度自信的方式填充监控和配置系统。
保持简单
在相对简单的 80% 解决方案 和更复杂的完整解决方案之间做出选择时,通常会选择前者。这确保了一个精简的代码库和低学习曲线。
应用栈
NetBox 基于 Django Python 框架构建,并使用 PostgreSQL 数据库。它作为一个 WSGI 服务在您选择的 HTTP 服务器后面运行。
功能 | 组件 |
---|---|
HTTP 服务 | nginx 或 Apache |
WSGI 服务 | gunicorn 或 uWSGI |
应用程序 | Django/Python |
数据库 | PostgreSQL 12+ |
任务队列 | Redis/django-rq |