Skip to content

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