4. Junos配置归档与差异比对

Junos配置归档与差异比对 学习卡片

配置归档策略与差异比对

Junos 的配置归档(archive)功能会在每次 commit 成功后自动把运行配置快照保存到指定位置,并保留最近 N 份历史版本。运维中定位“谁在什么时候改了什么”,最直接的方式就是拿两个归档版本做 compare。

1. 配置自动归档策略

归档位置可以是本地 /var/tmp、/config,也可以是远端 ftp://、scp://。运营商场景通常要求远端集中留存,便于审计。以下示例把归档写到本地并保留 10 份,同时通过 transfer-on-commit 同步到远端服务器:

set system archival configuration transfer-on-commit
set system archival configuration archive-sites "/var/tmp/archive" password "Archive@123"
set system archival configuration archive-sites "scp://netops@10.0.0.50:/data/junos-archive" password "Scp@123"
set system archival configuration archive-sites "/var/tmp/archive" 
set system archival configuration maximum-archive-count 10

关键参数说明:

  • transfer-on-commit:每次提交后立即归档,而不是按时间周期归档。
  • archive-sites:可配置多个目标,Junos 会依次尝试,第一个成功即停止。
  • maximum-archive-count:本地保留的最大份数,超出后最旧的被删除。

2. 手动触发归档

除了自动归档,也可以在维护窗口前手动生成一份基线快照:

request system configuration rescue save
request system archival configuration archive-now

执行后可用 show system archival 查看归档状态与最近一次归档时间:

show system archival
# 输出示例
Archive configuration:
  Transfer on commit: enabled
  Archive sites:
    /var/tmp/archive
    scp://netops@10.0.0.50:/data/junos-archive
  Maximum archive count: 10
  Last archival: 2025-01-15 03:12:44 UTC

3. 使用 compare 比对版本差异

Junos 提供多种 compare 方式,最常用的是 show configuration | compare 系列:

  • show configuration | compare rollback 1:当前运行配置与上一份回滚版本对比。
  • show configuration | compare rollback 3:与 3 次提交前的版本对比。
  • show configuration | compare:与最近一次提交的候选配置对比(需在 edit 模式下)。

输出中 + 表示新增行,- 表示删除行,[edit ...] 标明变更所在的配置层级。例如:

show configuration | compare rollback 1
[edit interfaces ge-0/0/0 unit 0 family inet]
-     address 10.1.1.1/30;
+     address 10.1.1.5/30;
[edit protocols bgp group PEER]
+     neighbor 10.1.1.6;
+     export EXPORT-TO-PEER;

从输出可以快速定位:接口地址被修改,BGP 邻居和导出策略被新增。结合归档时间戳,即可还原变更窗口。

比对远端归档文件时,可先把文件拉回本地:file copy scp://netops@10.0.0.50:/data/junos-archive/juniper.conf.20250115.gz /var/tmp/,再用 load override 或 show configuration | compare 与当前配置比对。
Junos 配置归档与差异比对流程 commit 提交 配置变更生效 transfer-on-commit 自动触发归档 归档目标(archive-sites) /var/tmp/archive(本地,保留10份) scp://netops@10.0.0.50:/data/junos-archive 手动归档 archive-now / rescue save 归档文件 juniper.conf.20250115.gz show configuration | compare rollback N / 当前配置 差异输出示例 [edit interfaces ge-0/0/0 unit 0 family inet] - address 10.1.1.1/30; + address 10.1.1.5/30; [edit protocols bgp group PEER] + neighbor 10.1.1.6; + export EXPORT-TO-PEER; - 删除行 + 新增行 [edit ...] 变更层级

4. 定位变更内容的关键判断

输出特征含义运维动作
- 行该配置被删除或替换确认是否为误删,必要时 rollback
+ 行该配置被新增核对是否符合变更单
[edit ...]变更所在的配置层级快速跳转到对应层级检查上下文
无输出两个版本完全一致确认比对对象是否正确
compare 只显示差异,不显示变更原因。定位到差异后,应结合 show system commit 查看提交用户、时间和提交注释,才能完整还原变更链路。

5. 验证归档与比对是否生效

  1. 执行 show system archival,确认 Transfer on commit 为 enabled,且 Last archival 时间与最近一次 commit 时间吻合。
  2. 在 /var/tmp/archive 下用 file list 查看归档文件数量,确认未超过 maximum-archive-count。
  3. 做一次无害变更(如修改 description),commit 后执行 show configuration | compare rollback 1,确认能输出该变更。
  4. 若远端归档失败,检查 scp 账号权限、目标目录可写性及网络可达性。