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查看候选配置与活动配置的差异; - 多人协作时,候选配置是私有的,不会互相踩踏。
下面这张图展示了候选配置、活动配置、提交校验与回滚之间的数据流关系,是理解后续所有治理动作的核心模型。
三、提交模型: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 这些命令,就不再是零散的操作,而是同一套配置管理思想的不同侧面。