Oxidized 0.37.0 介绍与选型指南

Oxidized 0.37.0 网络设备配置备份工具的定位、架构、功能与 RANCID/rConfig 量化选型对比,Ubuntu 22.04 实测与多源溯源取证。

OxidizedOxidized网络配置备份2026/10/22

Oxidized 0.37.0 介绍与选型指南

目标:介绍开源网络设备配置备份工具 Oxidized(0.37.0)的定位、架构、功能与适用边界,并与 RANCID、rConfig 等同类方案做量化选型对比。本文所有版本号、机型数量、命令回显均在 Ubuntu 22.04.5 LTS 服务器上实测取证(安装与备份端到端跑通),选型对比数据均标注来源与查询日期(2026-10-22)。

一、环境信息

本篇素材取自如下实测环境(安装与端到端备份验证过程见本专栏《Ubuntu 22.04 安装 Oxidized 指南》):

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64,内核 6.8.0-138-generic,12 vCPU,31 GB 内存)
  • Oxidized 版本:0.37.0(oxidized --version 实测输出:0.37.0)
  • Ruby 版本:3.0.2p107(Ubuntu 22.04 发行版自带,满足 oxidized gem 要求的 Ruby >= 3.0)
  • 配套组件:oxidized-web 0.18.1(Web UI + REST API)、rugged 1.9.6(Git 输出后端)、sequel 5.109.0 + sqlite3 2.0.4(SQL 数据源)
  • 备份对象:一台通过 SSH 管理的 Linux 设备(主机名 sw01,账号 admin),使用 linuxgeneric 机型模型端到端跑通「采集 → 入库 → Web API 查询 → 版本差异」全链路
  • 版本与机型数量取证方式:GitHub Releases 页面、RubyGems 官方源、仓库源码目录统计(详见文末参考链接与各章标注)

二、软件概述

Oxidized 是一个用 Ruby 编写的开源网络设备配置备份(Network Device Configuration Backup)工具,官方仓库 ytti/oxidized 对它的自我定位只有一句话:"RANCID replacement!"——即经典配置备份工具 RANCID 的现代化替代品。它定期通过 SSH/Telnet 登录网络设备(交换机、路由器、防火墙、无线控制器等),执行各厂商机型专属的采集命令,把运行配置(running-config)抓取下来,存入文件目录或 Git 版本库,并支持配置变更差异对比、变更提交历史、REST API 查询与 Web 界面浏览。

💡 技术拓展:网络配置备份工具的「存储后端」不止一种选择,常见方案对比——

存储后端原理/特点适用场景
纯文件目录每设备一个文本文件,覆盖式保存最新版最简单,配合外部 rsync/快照
Git 版本库每次变更自动 commit,天然带历史与 diff需要审计「谁在何时改了什么」
CVS/SVNRANCID 传统后端,集中式版本控制沿用既有 RANCID 资产
对象存储/数据库部分商业 NCM 内置商业产品生态

Oxidized 同时支持「纯文件目录」与「Git 版本库」两种输出(output),本文实测环境最终以 Git 版本库为主线演示(变更历史与差异对比是网络运维的高频刚需)。

Oxidized 的关键身份数据(均为 2026-10-22 实查):

  • 最新稳定版:0.37.0(GitHub Releases 页面 releases/latest 最终跳转到 tag/0.37.0;RubyGems 官方源最新非预发布版本同为 0.37.0)
  • 开源许可证:Apache-2.0(仓库 LICENSE 文件为 Apache License 2.0,gemspec 中 s.licenses = %w[Apache-2.0],shields.io 许可证徽章亦返回 Apache-2.0)
  • 社区规模:GitHub Star 3.6k(shields.io github/stars 徽章返回 3.6k)
  • 语言与运行时:Ruby(gemspec 要求 required_ruby_version >= 3.0)
  • 机型支持:源码 lib/oxidized/model/ 目录下共有 198 个机型模型文件(ls | wc -l 实测);官方文档 docs/Supported-OS-Types.md 按厂商列出 205 条机型条目,覆盖 Cisco、Juniper、华为、H3C、Arista、A10、Fortinet、Palo Alto 等主流厂商

三、核心架构

Oxidized 采用「数据源 → 核心调度 → 采集 → 输出」的单进程管道式架构,另有一个可选的 Web/API 扩展进程内组件。理解这条管道,是后续配置与排障的基础:

┌─────────────┐    ┌──────────────────────────────────────────┐    ┌──────────────┐
│   Sources    │    │                Oxidized Core              │    │   Outputs     │
│  设备清单来源  │───▶│  Nodes(节点表) → Worker(工作线程池)          │───▶│ 配置去向       │
│  CSV / SQL   │    │  → Job 队列 → Input(ssh/telnet/ftp/http)  │    │  file / git  │
└─────────────┘    │  → Model(机型采集逻辑)                     │    └──────────────┘
                   └──────────────┬───────────────────────────┘    ┌──────────────┐
                                  │ REST API / Web UI              │   Hooks       │
                                  ▼ (oxidized-web 扩展)            │ 变更事件回调    │
                          http://<host>:8888/nodes                 └──────────────┘

各层职责与实测要点:

层组件职责实测要点
数据源source(csv / sql)提供「有哪些设备」的清单CSV 默认读 router.db(冒号分隔),SQL 默认读 SQLite devices 表,均可自定义列映射
调度Nodes + Worker维护节点表与抓取队列,按 interval 周期调度每台设备默认 30 线程、周期 3600 秒;/node/next/<name> API 可把设备插队立即抓取(实测生效)
采集input(ssh/telnet/ftp/http)+ model登录设备并按机型执行采集命令模型自带 prompt 识别与命令清单;本实测用 linuxgeneric 模型对 Linux 设备采集成功
输出output(file / git)把抓到的配置落盘file 每设备一个文件;git 自动 commit(实测提交信息 update /sw01)并支持版本列表/差异 API
扩展oxidized-webWeb UI + REST API监听 8888 端口(实测),旧参数 rest: 已弃用,改用 extensions.oxidized-web
回调hooks在抓取成功/失败/配置变更等事件上触发外部动作支持 exec 脚本、githubrepo 推送等,官方 docs/Hooks.md 有完整清单

这一架构带来的直接好处:设备清单(source)与存储(output)都可插拔,机型逻辑(model)与登录方式(input)解耦——新增一家厂商设备通常只需在清单里换 model 名,不用改核心配置。

四、功能特性

以下特性均在 0.37.0 源码与实测环境中逐项确认(括号内为验证方式):

  1. 多厂商机型支持:198 个机型模型文件(源码目录统计),官方支持列表 205 条机型条目(2026-10-22 实查)。第三方评测称其支持「130+ OS types」(ControlMonkey 2026 年榜单,查询日期 2026-10-22),口径不同但结论一致:主流厂商覆盖完整。
  2. SSH / Telnet 双输入:默认输入 ssh, telnet(首次生成的配置模板原文 input: default: ssh, telnet),另支持 ftp、http 类输入。
  3. 周期调度与并发自适应:默认 3600 秒周期、30 线程(配置模板实测值);use_max_threads 可切换为吃满线程的模式。
  4. REST API 与 Web UI:oxidized-web 提供节点列表、配置抓取、版本历史、差异对比、配置内容全文检索、手动触发等接口(本专栏《Oxidized 0.37.0 常用 CLI 命令详解》逐条实测)。
  5. Git 版本化输出:每次配置变更自动 commit,可查任意两版差异(实测 /node/version/diffs 返回 +vlan 10 name OFFICE 类新增行)。
  6. 立即抓取插队 API:GET /node/next/<name> 把指定设备插入队首(实测日志出现 Add node sw01 to running jobs)。
  7. syslog 联动:接收设备 syslog(如 Cisco/Juniper 的「配置已保存」消息)触发立即抓取,实现「改完即备」。
  8. Hooks 扩展:抓取成功/失败/配置变更事件可触发脚本、推送 GitHub 等远程仓库(官方 docs/Hooks.md)。
  9. 分组与组内凭据:groups 按机房/厂商分组管理不同账号密码,group_map 支持别名归并。
  10. 诊断自检:oxidized --support 一键输出版本、系统、Ruby、配置等诊断信息,密码自动脱敏为 [REDACTED](实测)。

五、快速开始(最小可用示例)

三步跑通最小备份链路(本节所有命令与回显均为实测原文,完整安装步骤见《Ubuntu 22.04 安装 Oxidized 指南》)。

  1. 安装并生成配置模板。首次运行会在配置目录生成带默认值的模板并退出提示:
oxidized

实测回显:

edit /etc/oxidized/config
  1. 编辑配置指向一台设备。最小可用配置只改 4 处:账号、机型、节点清单、Web 端口:
---
username: admin
password: q1w2e3r4
model: linuxgeneric
interval: 3600
extensions:
  oxidized-web:
    load: true
    listen: 0.0.0.0
    port: 8888
output:
  default: file
  file:
    directory: "/etc/oxidized/configs"
source:
  default: csv
  csv:
    file: "/etc/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      name: 0
      model: 1

节点清单 router.db 一行一台设备(冒号分隔:设备名:机型):

echo 'sw01:linuxgeneric' > /etc/oxidized/router.db
cat /etc/oxidized/router.db

实测回显:

sw01:linuxgeneric
  1. 启动并验证。日志确认加载节点数、Web 监听与备份结果:
oxidized

实测回显(节选):

2026-10-22 09:16:54.820375 I [6523:1400] Oxidized::CLI -- Oxidized starting, running as pid 6523
2026-10-22 09:16:54.861523 I [6523:1400] Oxidized::Nodes -- Loaded 1 nodes
2026-10-22 09:16:54.983812 I [6523:2260] Oxidized::API::Web -- Oxidized-web server listening on 0.0.0.0:8888
2026-10-22 09:17:00.975862 I [6523:1400] Oxidized::Worker -- Configuration updated for /sw01

用 REST API 查看节点状态与备份结果:

curl -s http://127.0.0.1:8888/nodes.json

实测回显(节选):

[{"name":"sw01","full_name":"sw01","ip":"10.89.58.20","group":"default","model":"LinuxGeneric","last":{"start":"2026-10-22 09:21:05 UTC","end":"2026-10-22 09:21:10 UTC","status":"success","time":5.325234613},"vars":{},"mtime":"2026-10-22 09:21:11 UTC","status":"success","time":"2026-10-22 09:21:10 UTC"}]

验证要点:status: success 且 /etc/oxidized/configs/sw01 文件已生成(实测 3355 字节),即最小链路跑通。

六、适用场景与限制

适合的场景:

  • 多厂商混合网络(几十到几千台)的集中配置备份与变更审计;
  • 需要把配置纳入 Git 流程(历史追溯、diff 审查、异机容灾推送)的团队;
  • 已用 LibreNMS、NetBox、phpIPAM 等工具,希望补齐「配置备份」一环并做联动(LibreNMS 原生集成 Oxidized 作为 RANCID 替代;NetBox 可作设备清单来源);
  • 希望通过 REST API / syslog 事件把备份挂进自动化流水线(变更触发、工单联动)。

已知的限制(依据官方文档与实测):

  • 机型模型质量取决于社区维护者,冷门机型可能采集不全,需按官方 docs/Creating-Models.md 自行适配;
  • 官方文档相对精简,部分高级用法要读源码(第三方评测 ManageEngine 2026 年榜单同样指出 "sparse documentation",查询日期 2026-10-22);
  • 单实例架构,无内置高可用——备份服务器自身要做系统级备份;恢复(回灌配置到设备)不在工具职责内,需人工或自研脚本执行;
  • 配置参数改动需重启 oxidized 进程才生效(实测:改 password 后调用 /reload 仅重载节点清单,不重载全局配置;systemctl restart oxidized 后新值才生效);
  • Ruby 运行时要求 >= 3.0(gemspec 实测),CentOS 7 等老系统需先升级 Ruby。

七、同类选型对比

网络配置备份这个细分领域,开源侧常被拿来对比的是 RANCID 与 rConfig。为避免概念混淆,先澄清两个「名字相近但不是同类」的词(2026-10-22 联网核实):SweetPotato(CCob/SweetPotato)是 Windows 提权渗透测试工具,与网络备份无关;Kathmann 是德国 IT 系统集成商/人名,也不存在同名开源备份工具。选型对比以下列三个真实可用的方案为准。

7.1 量化对比表

维度OxidizedRANCIDrConfig
语言/技术栈RubyPerl/ExpectPHP (Laravel)
最新稳定版(查询日期 2026-10-22)0.37.0(GitHub Releases + RubyGems 双源核实)3.14(官网 shrubbery.net 提供 rancid-3.14.tar.gz)core-8.2.18(GitHub Releases tag)
许可证Apache-2.0(仓库 LICENSE 实查)官网未单列许可页(自由软件)GPL-3.0(shields.io 许可证徽章)
社区规模GitHub Star 3.6k(shields.io,2026-10-22)无公开 Star 数据(源码发布模式)GitHub Star 221(shields.io,2026-10-22)
机型支持官方列表 205 条机型条目/198 个模型文件(0.37.0 源码实测)数十种厂商(Cisco/Juniper 等为主)主流厂商(官方宣称多厂商支持)
配置存储file 目录 / Git 版本库(可插拔 output)CVS/SVN/Git(传统为 CVS)内置数据库 + 文件(PHP 应用形态)
Web UI有(oxidized-web,实测 8888 端口可用)无原生(仅 CLI + 邮件 diff,历史快照需自建 Web)有(产品级 Web)
REST API有(实测 /nodes /node/fetch /node/version 等 15 个路由)无有(Laravel 应用 API)
版本化与 diffGit commit + API diff(实测 +vlan 10 name OFFICE)版本库 diff + 邮件推送内置变更检测与合规审计
定位与生态RANCID 现代替代品,LibreNMS/NetBox 生态集成25 年+ 老牌,稳定保守现代 NCM(备份+合规+变更检测一体)

表格解读:三者中 Oxidized 与 RANCID 是「纯备份/版本化」工具,rConfig 更接近「配置管理平台」;Oxidized 以机型覆盖广、Git 原生、API 完整、部署轻(单 Ruby 进程)取胜,RANCID 胜在超长稳定运行记录但交互停留在 CLI+邮件时代,rConfig 功能面广但社区规模最小且 GPL-3.0 对二次开发约束更强。

7.2 社区与评测佐证(标注来源 + 查询日期 2026-10-22)

  • ELECTROTUTO《Rancid vs Oxidized : Quel Outil de Gestion Réseau Choisir》(2024-01-29 发布,2026-10-22 查询):对比表原文要点——Rancid「Perl/Expect、CLI Only、平面 router.db」vs Oxidized「Ruby、Web UI + REST API、YAML 配置」。
  • ManageEngine 博客《10 best network backup solutions》(2026 年更新,2026-10-22 查询):将 Oxidized 列为开源网络备份工具第 2 名,评语要点——"modern alternative to RANCID with cleaner architecture, better performance, and Git integration"、"integrates with platforms like LibreNMS"、"The downside is sparse documentation"。
  • ControlMonkey《10 Best Network Configuration Backup Solutions In 2026》(2026-10-22 查询):第 5 名 Oxidized,要点——"Git-based version control, support for over 130 OS types, RESTful API, and syslog-triggered config fetches. Free (open source)"。

7.3 选型建议

  • 选 Oxidized:多厂商、几百台以上规模、想要 Git 版本化 + REST API + 轻量单进程部署的绝大多数团队(本专栏后续安装/配置/命令三篇均以 0.37.0 为基础);
  • 选 RANCID:已有 RANCID 资产且运行良好、变更诉求极少的环境——稳定优先,不值得为迁移付出风险;
  • 选 rConfig:需要「备份 + 合规审计 + 变更检测」开箱一体的 PHP 技术栈团队,且能接受 GPL-3.0 与较小社区;
  • 商业化 NCM(SolarWinds NCM、ManageEngine NCM 等):预算充足、需要厂商 SLA 与合规报告时再考虑,开源侧 Oxidized 已覆盖备份与审计主链路。

八、参考链接