由于 Docker 操作 iptables 的方式,我无法在不重新启动 Docker 的情况下重置 iptables 并应用新版本的规则。
Docker 使用表NAT
,FILTER
但不接触MANGLE
.
考虑到这一点,我决定将我的防火墙脚本从FILTER/INPUT
和更改FILTER/OUTPUT
为MANGLE/PREROUTING
和MANGLE/POSTROUTING
现在我可以完全重置防火墙 ( iptables -t mangle -F
) 并应用一组新规则,而无需中断/重新启动 Docker。
所以问题是:MANGLE
像我这样使用桌子 有什么缺点吗?我的规则非常简单:每个IP的连接限制,丢弃一些端口,丢弃一些协议......
答案1
如果不重新启动 Docker,我无法重置 iptables 并应用新版本的规则。
我怀疑这是正确的。
“diff”规则转储
我不熟悉 Docker 防火墙配置,但您可以使用 转储状态iptables-save
。您可以为所有规则创建注释,以便可以轻松过滤它们。
然后,您可以重置规则集,恢复 Docker 规则,然后应用新规则。按照这个顺序,这将是最简单的。这有多可行取决于您如何创建规则。
辅助链
另一种方法是仅将一条规则放入官方链中,该规则会跳转到您放置所有规则的链。然后你可以重置并重建这些辅助链。 Docker 规则不会受到影响。