2. Junos配置体系深度解析

Junos与许多网络操作系统最根本的差异,在于它把“配置”当作一份可版本化、可校验、可回退的数据库来管理,而不是一堆立即生效的命令行。理解这套体系,是后续做配置合规与变更治理的前提:只有知道配置在哪里、什么时候生效、如何回退,才能谈“合规基线”和“变更审计”。本节围绕四个核心概念展开——层次化结构、候选配置与活动配置、提交模型、回滚机制。

一、层次化结构:配置是一棵树,不是一叠命令

Junos配置采用严格的树形层次结构,从根节点向下逐级展开。以一台运行Junos的设备为例,顶层通常包含 system、interfaces、protocols、routing-options、security、firewall 等分支。每个分支下再细分,例如接口配置的路径是 interfaces ge-0/0/0 unit 0 family inet address 192.0.2.1/24。这种结构带来两个直接好处:一是同一层级的配置天然具备一致性,二是可以用路径精确定位到某个配置片段,便于比对和审计。

在操作层面,进入配置模式后使用 edit 逐级下钻,用 set 直接写完整路径,用 show 查看当前层级。例如:

edit interfaces ge-0/0/0
set unit 0 family inet address 192.0.2.1/24
show

需要强调的是,层次结构不只是“看起来整齐”。合规检查往往就是按路径匹配的:比如要求所有面向用户的接口必须启用 family inet filter input,检查逻辑就是遍历 interfaces 下每个 unit 的 family inet 节点。如果配置是扁平的,这种遍历和比对会非常困难。

二、候选配置与活动配置:编辑与生效分离

Junos把配置分成两份:候选配置(candidate configuration) 和 活动配置(active configuration)。用户进入配置模式后,所有 set、delete、edit 操作都只作用于候选配置,活动配置保持不变,设备转发行为也不受影响。只有执行 commit 时,候选配置才会经过校验并替换活动配置。

这种“编辑—提交”分离的模型,是Junos变更治理能力的根基。它意味着:

  • 可以在不影响业务的前提下准备一整套变更;
  • 提交前可以用 commit check 做语法和语义校验;
  • 可以用 show | compare 查看候选配置与活动配置的差异;
  • 多人协作时,候选配置是私有的,不会互相踩踏。

下面这张图展示了候选配置、活动配置、提交校验与回滚之间的数据流关系,是理解后续所有治理动作的核心模型。

Junos 配置提交与回滚数据流 候选配置 candidate configuration set / delete / edit 仅编辑,不生效 提交校验 commit check 语法 / 语义 / 依赖 通过才允许提交 活动配置 active configuration 设备实际转发依据 commit 后替换 commit 通过 校验失败,候选配置保留待修正 回滚机制:rollback N rollback 0 当前活动配置 rollback 1 上一次提交 rollback 2 上上次提交 rollback N 第 N 次提交前 rollback 恢复 每次 commit 生成一个配置版本,rollback N 即回到第 N 次提交前的状态

三、提交模型:commit 不只是“保存”

在Junos中,commit 是一个带校验、带事务语义的动作。它至少包含三个环节:语法检查、语义检查、生成新活动配置。如果任何一步失败,提交被拒绝,活动配置不变,候选配置保留,便于修正后重试。

实际工作中常用的提交变体包括:

  • commit check:只校验不提交,适合变更前预检;
  • commit confirmed 5:提交后5分钟内若未再次确认,自动回滚到提交前状态,是远程变更的“安全绳”;
  • commit and-quit:提交并退出配置模式;
  • commit comment "...":为本次提交写入说明,便于审计追溯。

其中 commit confirmed 对合规治理尤其重要。它把“变更失败自动恢复”从人工操作变成了系统机制。例如远程修改管理接口地址时,如果新地址不可达,5分钟后设备自动回滚,避免失联。

四、回滚机制:配置版本就是审计线索

每次成功提交,Junos都会生成一个新的配置版本,并保留历史版本。使用 rollback N 可以回到第N次提交之前的状态:rollback 0 表示当前活动配置,rollback 1 表示上一次提交前的配置,依此类推。回滚本身也是修改候选配置,需要再次 commit 才生效。

回滚机制的价值不止于“救火”。它天然形成了一条配置变更时间线:谁在什么时候提交了什么,都可以通过 show system commit 查看。结合 commit comment,这条时间线就变成了可审计的变更记录。对于合规场景,这意味着可以回答“某条安全策略是什么时候被加入的”“某次变更是否经过校验”这类问题。

实践提示:做任何可能影响管理可达性的变更前,先执行 commit confirmed 5,确认业务正常后再执行一次 commit 固化。这是Junos变更治理中最实用的一条习惯。

五、把四个概念串起来看

层次化结构决定了配置“长什么样”,候选/活动配置决定了“什么时候生效”,提交模型决定了“生效前经过什么检查”,回滚机制决定了“出错后如何恢复”。四者共同构成Junos配置治理的底座。后续做合规基线时,基线本质上就是一组按层次路径组织的期望配置;做变更治理时,治理流程本质上就是围绕候选配置编辑、提交校验、版本记录和回滚展开的。

理解这套模型后,再去看 show configuration | display set、show | compare、rollback 这些命令,就不再是零散的操作,而是同一套配置管理思想的不同侧面。