Oxidized 网络设备配置备份教程
Oxidized 是一款用 Ruby 编写的网络设备配置备份工具,是传统 RANCID 的现代化替代品。它可以自动通过 SSH 或 Telnet 连接网络设备,提取运行配置并保存到本地文件系统或 Git 仓库中,实现配置的版本控制和变更追踪。Oxidized 支持超过 130 种网络设备,包括 Cisco、Juniper、Huawei、MikroTik、Fortinet 等主流品牌。
一、安装 Oxidized
1.1 安装 Ruby 和依赖
apt update
apt install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++ -y
1.2 安装 Oxidized
gem install oxidized
gem install oxidized-script oxidized-web
1.3 使用 Docker 安装
docker run -d --name oxidized \
-v /opt/oxidized:/home/oxidized/.config/oxidized \
-p 8888:8888/tcp \
--restart unless-stopped \
oxidized/oxidized:latest
二、基本配置
# 首次运行生成默认配置
oxidized
# 编辑配置文件
nano ~/.config/oxidized/config
主配置文件示例:
---
username: admin
password: password
model: junos
resolve_dns: true
interval: 3600
use_syslog: false
log: /home/oxidized/.config/oxidized/logs/oxidized.log
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 0.0.0.0:8888
input:
default: ssh, telnet
debug: false
ssh:
secure: false
output:
default: git
git:
user: Oxidized
email: oxidized@example.com
repo: /home/oxidized/.config/oxidized/devices.git
source:
default: csv
csv:
file: /home/oxidized/.config/oxidized/router.db
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
username: 2
password: 3
model_map:
cisco: ios
juniper: junos
huawei: vrp
三、添加设备清单
# 创建设备清单文件
cat > ~/.config/oxidized/router.db << 'EOF'
192.168.1.1:ios:admin:password
192.168.1.2:junos:admin:password
192.168.1.3:vrp:admin:password
10.0.0.1:routeros:admin:password
EOF
四、配置 Git 存储
# 初始化 Git 仓库
mkdir -p ~/.config/oxidized/devices.git
cd ~/.config/oxidized/devices.git
git init --bare
# 也可以推送到远程 Git 仓库
git remote add origin git@github.com:yourname/network-configs.git
五、配置 systemd 服务
cat > /etc/systemd/system/oxidized.service << 'EOF'
[Unit]
Description=Oxidized Network Configuration Backup
After=network.target
[Service]
Type=simple
User=oxidized
ExecStart=/usr/local/bin/oxidized
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable oxidized
systemctl start oxidized
六、Web 界面
Oxidized 内置了一个 REST API 和简单的 Web 界面,默认监听在 8888 端口。访问 http://你的服务器IP:8888 可以查看设备列表、配置内容和备份状态。
# API 使用示例
# 查看所有设备
curl http://localhost:8888/nodes.json
# 查看特定设备的配置
curl http://localhost:8888/node/fetch/192.168.1.1
# 触发单个设备的立即备份
curl -X PUT http://localhost:8888/node/next/192.168.1.1
七、与 LibreNMS 集成
Oxidized 可以从 LibreNMS 自动获取设备列表,无需手动维护 router.db 文件:
# 在 Oxidized 配置中使用 http source
source:
default: http
http:
url: http://librenms.example.com/api/v0/oxidized
map:
name: hostname
model: os
group: group
headers:
X-Auth-Token: your_librenms_api_token
八、常见问题
8.1 SSH 连接超时
# 增加超时时间
timeout: 30
retries: 5
# 检查 SSH 连通性
ssh -o ConnectTimeout=10 admin@192.168.1.1
8.2 设备型号不支持
Oxidized 使用模型(model)来定义与不同设备的交互方式。可以查看支持的模型列表或自定义模型。
# 查看支持的设备模型
ls /var/lib/gems/*/gems/oxidized-*/lib/oxidized/model/
总结
Oxidized 是网络运维中不可或缺的配置备份工具,结合 Git 版本控制可以精确追踪每一次配置变更。建议将其与 LibreNMS 或 NetBox 集成,构建完整的网络管理平台。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的优惠,通过 bwh81.net 进入官网购买。