了解Juniper产品的都知道,不管是防火墙、交换机还是路由器,Junos操作系统上RE(路由引擎)和PFE(数据转发引擎)是分离的。策略不同步主要是对于低中高端防火墙来说的,像SRX100-SRX300、到最近才出来的SRX1500,及SRX4K,以及史上*一二的防火墙SRX5800都有可能出现策略不同步的情况(Note:Chassis-cluster-双机环境中,防火墙几乎都是双机部署,特殊情况除外)。RE通过由单独的SCB或SFB去承载,而PFE则是在单独的业务接口板卡上(不同的型号需要单独对待)。
根据最近半年的Case处理,发现在SRX1500、SRX4K平面出现策略不同步的情况比较频繁,虽然这事吧,不算大,但在客户方也是蛮重要的,对于大客户来说,基本都是通过Netconf下发配置的,一下发出现提交报错,这很容易影响运维操作。但RE和PFE配置同步失败,最终的Root-Case还是要再等等……并不是什么问题都有解决方案的,大部分都是Workaround来处理的。
案例日志如下:
edit security]
'policies'
Policy is out of sync between RE and PFE <SPU-name(s)>.
Please resync before commit.
error: configuration check-out failed
Note:这个问题可以在低端和高端防火墙单机和双机上看到。错误日志千千万,不变的是需要处理的进程-NSD;
出现策略不同步的原因有以下几点:
1. 从RE到PFE的policy消息丢失
2. RE上出现问题,例如:使用重复的策略ID;
排查的基本细路如下:
1. 如果同步异常的话,先对比RE和PFE的checksum值,通过以下命令:
RE上使用命令“show security policies checksum ” (Note:隐藏命令,需输入完全)
示例:
root@vsrx-a> show security policies checksum
Logical system: root-logical-system
From zone To zone Checksum
trust untrust 0x66b85abb-ca868ed9-a025220e-ca14f609
每个PFE上(Branch防火墙是FWDD, HE防火墙是XLR)
root@vsrx-a% vty fwdd
BSD platform (VMWare virtual processor, 428MB memory, 8192KB flash)
FLOWD_VSRX(vsrx-a vty)# show usp policy checksum
Logical system: root-logical-system
From zone To zone checksum
trust untrust 0x66b85abb-ca868ed9-a025220e-ca14f609
Note: RE和PFE的Checksum值必须一致。
执行以下步骤解决问题:
1. 执行命令 > request security policies resync (隐藏命令)后,查看Commit是可以正常同步。
root@vsrx-a> request security policies resync
node0:
--------------------------------------------------------------------------
Start sending policies ...
Succeeds.
Total sent 2 policies.
{primary:node0}
2. 如果步骤1还未恢复,尝试执行#commit synchronize 【隐藏命令】,如果commit synchronize 从执行失败,则使用commit synchronize force 命令
3. 如果步骤2还是没有恢复Commit问题,重启nsd进程
。
root@vsrx-a# run restart network-security
Network security daemon started, pid 1293
4. 如果操作完步骤3还未恢复,则重启设备(如果是Chassis-cluster则重启两台,如果是生产环境中,则根据评估进行相关操作,不要做重启动作)
后话:很多时候,都是重启NSD进程恢复的,因为在客户生产环境不太可能因为重启设备,这毕竟是大动作,涉及到业务,又是一级变更,备件、现场工程师都要到场。