3. Junos操作系统基础与配置框架
Junos与多数通用网络操作系统最大的差异,在于它把“配置”和“运行”彻底分开:所有配置先写入候选配置(candidate configuration),只有执行提交(commit)后才真正生效。理解这套框架,是后续在MX上做运营商骨干网设计、变更与排障的基础。本节围绕层次化配置、提交机制、回滚、日志、用户权限与自动化接口六个方面展开,并给出可直接参考的操作示例。
一、层次化配置:配置是一棵树
Junos配置是一棵严格的层次树,从顶层edit进入后,按“系统—接口—协议—策略”逐级展开。以MX常用结构为例:system管主机名、用户、日志;interfaces管物理与逻辑接口;protocols管IS-IS、OSPF、BGP、MPLS、RSVP等;routing-options管路由表与自治系统;policy-options管路由策略;firewall管过滤与限速。层次化带来的直接好处是:同一层级可被show、set、delete、replace统一操作,且配置天然可被结构化解析,为自动化接口打下基础。
常用操作方式有两种:一是set逐条设置,适合脚本与自动化;二是edit进入层级后用set/delete,适合人工交互。例如为MX配置一个骨干互联接口:
edit interfaces ge-0/0/0
set description "to-P1-core"
set unit 0 family inet address 10.0.0.1/30
set unit 0 family mpls
top
注意top用于回到配置树顶层,避免在错误层级继续操作。查看时可用show interfaces ge-0/0/0,也可用show configuration interfaces ge-0/0/0查看候选配置中的对应片段。层次化配置还支持wildcard与apply-groups,前者可批量匹配接口,后者可把公共配置抽成组,减少重复。
二、提交机制:候选、检查、生效
提交是Junos的核心动作。执行commit时,系统会先做语法与语义检查,再生成新的运行配置,并触发相应进程重新加载。若检查失败,提交被拒绝,运行配置保持不变。常用形式包括:commit check只做检查不生效;commit confirmed 5提交后5分钟内若未再次确认,自动回滚,这是远程变更的“安全绳”;commit and-quit提交并退出配置模式;commit synchronize在双RE设备上同步提交到备用路由引擎。
提交过程还会触发commit脚本与事件策略,这对自动化很重要。需要特别提醒:commit confirmed的倒计时从提交成功开始计算,若期间链路中断导致无法确认,设备会自动恢复到提交前状态,因此它非常适合骨干网远程割接。
三、回滚:把配置当作版本管理
Junos会保留最近若干份已提交配置(默认50份,可调整)。rollback 0表示回到当前已提交版本,rollback 1表示回到上一份,依此类推。rollback只把候选配置替换为历史版本,仍需commit才生效。查看历史可用show system rollback compare 1,比较当前候选与上一版本差异;show configuration | compare rollback 1也常用。回滚是变更失败后的第一手段,但要注意:回滚不会自动回滚已产生的协议状态,例如BGP会话可能仍需重新建立。
四、日志:从syslog到traceoptions
Junos日志分几类:system日志记录登录、提交、接口状态等;messages记录常规系统消息;chassis记录硬件告警;interactive-commands记录用户执行过的命令。配置示例:
set system syslog host 10.0.0.100 any info
set system syslog file messages any notice
set system syslog file interactive-commands interactive-commands any
排障时更常用traceoptions,可针对BGP、IS-IS、RSVP等协议打开详细跟踪,输出到文件。例如跟踪BGP更新:
set protocols bgp traceoptions file bgp-trace size 10m files 5
set protocols bgp traceoptions flag update detail
查看用show log bgp-trace | last 50。日志与跟踪是判断“配置是否生效、协议是否正常”的直接依据。
五、用户权限:login class与权限位
Junos通过login class定义权限,再把用户归入类。常见权限位包括configure(可进入配置模式)、control(可重启进程)、interface(可操作接口)、routing(可操作路由协议)、snmp、view等。运营商环境通常区分只读、运维、管理员三类。示例:
set system login class noc-read-only permissions view
set system login class noc-ops permissions configure interface routing
set system login user noc1 class noc-ops authentication plain-text-password
实际部署中应避免多人共用root,并为每个用户单独建账号,便于审计。配合set system login user noc1 uid 2001可固定UID。
六、自动化接口:NETCONF、REST与PyEZ
Junos对外提供多种自动化接口:NETCONF over SSH(默认830端口)、REST API(set system services rest)、以及基于Python的PyEZ库。NETCONF适合结构化配置下发与状态采集;REST适合与编排系统集成;PyEZ适合编写运维脚本。例如用PyEZ加载配置并提交:
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
with Device(host='10.0.0.1', user='noc1', password='******') as dev:
cu = Config(dev)
cu.lock()
cu.load('set interfaces ge-0/0/1 description "to-P2"', format='set')
cu.commit_check()
cu.commit(comment='add P2 link')
cu.unlock()
自动化接口的价值在于把“层次化配置+提交+回滚”变成可编程流程:先lock避免并发冲突,再load、commit_check、commit,失败则rollback。这与人工操作在语义上完全一致,只是入口不同。
commit confirmed 5:提交后5分钟内确认,否则自动回滚,可有效避免失联。clear bgp neighbor。把以上六点串起来看:层次化配置提供结构,提交机制提供生效控制,回滚提供安全网,日志提供可观测性,用户权限提供边界,自动化接口提供规模化能力。在MX骨干网中,这六者共同构成“可变更、可回退、可审计、可编程”的运维底座。实际工作中,建议先在小范围接口上验证commit check与commit confirmed流程,再逐步扩展到IS-IS、MPLS、BGP等全局协议,确保每次变更都有明确的检查点与回退路径。