3. Junos配置提交与回滚机制验证

Junos配置提交与回滚机制验证 学习卡片

为什么需要 commit confirmed

在运营商网络中,一次误配置可能导致管理接口不可达、路由协议中断甚至整台设备失联。Junos 的 commit confirmed 机制提供了一道"安全绳":提交后配置立即生效,但如果在指定时间内没有再次执行 commit 确认,设备会自动回滚到提交前的配置。这让我们可以在远程环境下大胆变更,即使配置错误导致失联,设备也会自行恢复。

验证流程设计

本案例在一台已具备管理连通性的 Juniper 路由器上,通过以下思路验证安全机制:先保存当前配置作为回滚基准,再用 commit confirmed 提交一个"故意错误"的配置(例如把管理接口地址改成一个不可达网段),观察设备是否在超时后自动回滚并恢复管理可达性。整个验证过程的关键在于:提交前记录基准状态,提交后立即观察,超时后再次确认恢复。

时间 ① 基准状态 show configuration | display set 记录管理接口地址 ② commit confirmed set interfaces ge-0/0/0 unit 0 family inet address 10.99.99.1/24 ③ 超时未确认 管理接口不可达 等待 10 分钟 自动回滚触发 ④ 恢复验证 管理接口恢复 show system commit history 配置状态变化对比 检查项 提交前(基准) commit confirmed 后 管理接口地址 192.168.1.1/24 10.99.99.1/24(错误) SSH 可达性 ✓ 可连接 ✗ 连接超时 回滚定时器 未激活 10 分钟倒计时中 最终结果 正常管理 超时后自动恢复为基准

关键操作与命令

以下操作在已建立 SSH 会话的前提下执行。假设管理接口为 ge-0/0/0.0,当前地址为 192.168.1.1/24。

第一步:记录基准配置。在变更前保存当前配置快照,便于回滚后比对:

show configuration interfaces ge-0/0/0 | display set
# 输出示例:
# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/24

第二步:提交一个"错误"配置并启用确认机制。将管理接口地址改为一个不可达网段,使用 commit confirmed 10 表示 10 分钟内未确认则自动回滚:

configure
set interfaces ge-0/0/0 unit 0 family inet address 10.99.99.1/24
commit confirmed 10
# 输出提示:
# commit confirmed will be automatically rolled back in 10 minutes unless confirmed
# commit complete
提交后当前 SSH 会话可能立即断开,因为管理接口地址已变更。这是预期现象,不要惊慌。如果设备支持带外管理或 Console 口,也可以通过 Console 观察回滚过程。

第三步:观察自动回滚。等待约 10 分钟(或根据实际配置的分钟数),设备会自动执行回滚。回滚完成后,管理接口地址恢复为 192.168.1.1/24,SSH 重新可达。此时重新登录设备,检查配置:

show configuration interfaces ge-0/0/0 | display set
# 应恢复为:
# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/24

show system commit
# 输出中会显示 rollback 记录,例如:
# 0   2024-01-15 10:30:00 UTC by admin via cli
# 1   2024-01-15 10:20:00 UTC by admin via cli  (rollback)

手动回滚与确认提交

除了等待超时自动回滚,也可以主动执行 rollback 命令立即恢复。如果确认新配置正确,则在超时前再次执行 commit 即可取消自动回滚:

# 场景A:确认配置正确,取消自动回滚
commit
# 输出:commit complete(回滚定时器取消)

# 场景B:主动立即回滚
rollback 1
commit
# 输出:commit complete(恢复到上一个提交版本)
在生产环境中,建议将 commit confirmed 的超时时间设置为 5–10 分钟,既能留出验证时间,又不会因等待过久而影响业务。对于关键变更,可以先用 commit check 验证语法,再执行 commit confirmed。

验证结果判读

观察点 预期现象 异常处理
commit confirmed 后 SSH 是否断开 断开(因管理地址变更) 若未断开,检查是否修改了正确的接口
超时后管理接口是否恢复 恢复为原地址,SSH 可重连 若未恢复,通过 Console 检查 rollback 日志
show system commit 输出 出现 rollback 记录 无记录则说明回滚未触发,检查定时器设置
配置比对 与基准配置一致 不一致则手动执行 rollback 1 并 commit

常见问题与注意事项

  • 超时时间设置过短:如果设置为 1 分钟,可能来不及验证配置就被回滚。建议根据变更复杂度设置 5–10 分钟。
  • 多次 commit confirmed 叠加:如果在未确认的情况下再次执行 commit confirmed,定时器会重置,但回滚基准仍是第一次提交前的配置。
  • Console 口的重要性:当管理接口完全不可达时,Console 是最后的救援通道。运营商设备应确保 Console 服务器可用。
  • 回滚不影响转发面:Junos 的 commit 机制在控制面完成配置替换,回滚过程对已建立的路由协议邻居影响较小,但仍需关注路由收敛时间。