在保持状态的同时刷新ipfilterconfiguration

我有一个运行在Solaris 11.2服务器上的ipfilter,其规则类似于:

pass in log first quick proto tcp from any to any port = 22 flags S keep state

我希望能够编辑并从/etc/ipf/ipf.conf重新加载ipfilterconfiguration。 但是,当我运行svcadm refresh ipfilter ,dynamic状态被丢弃,并且我失去了任何依赖于状态的活动会话。

看起来在Solaris中刷新服务需要简单而残酷的方法:

  1. ipf -D
  2. ipf -E
  3. 从configuration文件加载规则

有没有更好的方法来刷新ipfilter(a)不会丢失状态,(b)确保运行的configuration与从零开始加载configuration相同?

它看起来像这样做,我想要的:

ipf -IFa && ipf -If /etc/ipf/ipf.conf && ipf -s -y

这会刷新不活动的filter列表,将规则加载到不活动的filter列表中,交换活动和不活动的filter列表,并使用当前的networking接口列表更新ipfilter。

可以使用ipfstat -tipfstat -sl监视dynamic状态,并使用ipf -FS刷新(如果需要)

为了检查磁盘上的configuration是否与当前的configuration相匹配,我发现这个命令很有用(请注意,它将消除不活动的filter列表):

diff -u <(ipfstat -io) <(ipf -IFa && ipf -If /etc/ipf/ipf.conf && ipfstat -Iio)

如果有人知道为什么Solaris服务默认使用ipf -Dipf -E ,我很想知道。