Oxidized 0.37.0 介绍与选型指南
Oxidized 0.37.0 网络设备配置备份工具的定位、架构、功能与 RANCID/rConfig 量化选型对比,Ubuntu 22.04 实测与多源溯源取证。
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/SVN RANCID 传统后端,集中式版本控制 沿用既有 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-web | Web UI + REST API | 监听 8888 端口(实测),旧参数 rest: 已弃用,改用 extensions.oxidized-web |
| 回调 | hooks | 在抓取成功/失败/配置变更等事件上触发外部动作 | 支持 exec 脚本、githubrepo 推送等,官方 docs/Hooks.md 有完整清单 |
这一架构带来的直接好处:设备清单(source)与存储(output)都可插拔,机型逻辑(model)与登录方式(input)解耦——新增一家厂商设备通常只需在清单里换 model 名,不用改核心配置。
四、功能特性
以下特性均在 0.37.0 源码与实测环境中逐项确认(括号内为验证方式):
- 多厂商机型支持:198 个机型模型文件(源码目录统计),官方支持列表 205 条机型条目(2026-10-22 实查)。第三方评测称其支持「130+ OS types」(ControlMonkey 2026 年榜单,查询日期 2026-10-22),口径不同但结论一致:主流厂商覆盖完整。
- SSH / Telnet 双输入:默认输入
ssh, telnet(首次生成的配置模板原文input: default: ssh, telnet),另支持 ftp、http 类输入。 - 周期调度与并发自适应:默认 3600 秒周期、30 线程(配置模板实测值);
use_max_threads可切换为吃满线程的模式。 - REST API 与 Web UI:oxidized-web 提供节点列表、配置抓取、版本历史、差异对比、配置内容全文检索、手动触发等接口(本专栏《Oxidized 0.37.0 常用 CLI 命令详解》逐条实测)。
- Git 版本化输出:每次配置变更自动 commit,可查任意两版差异(实测
/node/version/diffs返回+vlan 10 name OFFICE类新增行)。 - 立即抓取插队 API:
GET /node/next/<name>把指定设备插入队首(实测日志出现Add node sw01 to running jobs)。 - syslog 联动:接收设备 syslog(如 Cisco/Juniper 的「配置已保存」消息)触发立即抓取,实现「改完即备」。
- Hooks 扩展:抓取成功/失败/配置变更事件可触发脚本、推送 GitHub 等远程仓库(官方 docs/Hooks.md)。
- 分组与组内凭据:
groups按机房/厂商分组管理不同账号密码,group_map支持别名归并。 - 诊断自检:
oxidized --support一键输出版本、系统、Ruby、配置等诊断信息,密码自动脱敏为[REDACTED](实测)。
五、快速开始(最小可用示例)
三步跑通最小备份链路(本节所有命令与回显均为实测原文,完整安装步骤见《Ubuntu 22.04 安装 Oxidized 指南》)。
- 安装并生成配置模板。首次运行会在配置目录生成带默认值的模板并退出提示:
oxidized
实测回显:
edit /etc/oxidized/config
- 编辑配置指向一台设备。最小可用配置只改 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
- 启动并验证。日志确认加载节点数、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 量化对比表
| 维度 | Oxidized | RANCID | rConfig |
|---|---|---|---|
| 语言/技术栈 | Ruby | Perl/Expect | PHP (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) |
| 版本化与 diff | Git 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 已覆盖备份与审计主链路。
八、参考链接
- Oxidized 官方仓库(版本/许可证/机型列表取证):https://github.com/ytti/oxidized (查询日期 2026-10-22)
- Oxidized 最新 Release:https://github.com/ytti/oxidized/releases/latest (2026-10-22 实查跳转 tag/0.37.0)
- RubyGems oxidized 版本源:https://rubygems.org/gems/oxidized (2026-10-22 查询,最新 0.37.0)
- 官方支持机型列表:https://github.com/ytti/oxidized/blob/main/docs/Supported-OS-Types.md (0.37.0 源码内含同文件)
- Star/许可证徽章取证:https://img.shields.io/github/stars/ytti/oxidized.json 、https://img.shields.io/github/license/ytti/oxidized.json (2026-10-22 查询)
- RANCID 官网:https://www.shrubbery.net/rancid/ (2026-10-22 查询,rancid-3.14.tar.gz)
- rConfig 仓库与 Releases:https://github.com/rconfig/rconfig (2026-10-22 查询,core-8.2.18)
- ELECTROTUTO 对比文:https://electrotuto.com/2024/01/29/rancid-vs-oxidized-les-outils-de-gestion-des-configurations-reseau-en-comparaison/ (2026-10-22 查询)
- ManageEngine 博客:https://www.manageengine.com/za/network-configuration-manager/blog/10-best-network-backup-solutions.html (2026-10-22 查询)
- ControlMonkey 榜单:https://controlmonkey.io/resource/network-configuration-backup-solutions/ (2026-10-22 查询)
- SweetPotato 同名澄清:https://github.com/CCob/SweetPotato (Windows 提权工具,2026-10-22 查询)