如何干净、安静地重新加载 iptables 规则?

mdr*_*iel 3 linux firewall nat iptables

我有非常复杂和长的 iptables 脚本。无法通过手动插入/替换或删除操作现有的 iptables 配置。我有一个脚本,它只是刷新所有规则和自定义链,然后从头开始重新加载所有内容。在某种程度上,这种方法效果很好。

我有很多敏感流量,比如封装到 IP 数据包中的 E1 线路等等。我不能放弃所有规则并重新插入它们,因为这太慢了。如果没有超过 50 毫秒的规则,很多东西都会中断。除此之外,一些高吞吐量流量进入部分恢复的防火墙,最终导致非常糟糕的 conntrack 条目,需要手动干预才能恢复功能。

解决方案是在当前的末尾附加新规则,然后删除旧规则,这在理论上可以导致连续的规则集就位。问题是,带有自定义链、ipset 等的脚本变得非常复杂且容易出错。

问题是 - 你知道任何现有的解决方案(iptables 之上的额外层),它处理我在这里提到的问题?

提前致谢。

lar*_*sks 8

您是否尝试使用该iptables-restore命令加载新规则?这在理论上是一个原子操作,可以解决您的大部分问题。这确实要求您以iptables-save.