在一个项目中,我碰巧需要以编程方式调整iptables规则。经过一些研究(涉及这个和那个),我得出结论,生成一个iptables-save 兼容的输出并使用iptables-restore导入它是合适的。到目前为止还好。
但是我非常想使用ipsets,因为它们极大地简化了结果链。所以在更新时,我需要自动刷新所有 iptables 和 ipset 数据并将一组新条目放入. 我怎样才能做到这一点?
我能想到的唯一解决方案是首先创建新的 ipsets(在它们尚未使用时不是原子地),然后用对旧 ipsets 的引用原子地刷新 iptables,然后用对新 ipsets 的引用导入新链。(在一次原子滑动中)。之后,我可以非原子地删除旧的 ipset,因为它们不再被引用和使用。
但是,这种提议的解决方案似乎相当复杂且开销很大。
有谁知道,如何以更好的方式做到这一点?