如何只保存特定的iptables链?

如何只保存特定的iptables链?

我需要在运行 docker 容器的 Linux 机器上配置 iptables。如果我使用 保存 iptables 规则iptables-save > /etc/iptables/rules.v4,来自所有链的规则将被写入文件。

但我只想保存 INPUT、OUTPUT 和 DOCKER-USER 链,并且不希望保存 DOCKER、DOCKER-ISOLATION-STAGE-1 等链,因为它们包含 docker 自动添加的规则,这些规则在之后将不相关重启。

据我所知,iptables-save可以保存特定的表,但不能保存特定的链。

目前我考虑结合使用iptables-savegrep从不需要的链中删除规则。有没有更好的方法来达到相同的结果?

答案1

iptables您可以使用带有选项-S( )的基本命令--list-rules来获取给定链和表的类似输出,例如:

$ sudo iptables -t filter -S OUTPUT
-P OUTPUT DROP
-A OUTPUT -o lo -j ACCEPT
...

但是您必须对每个表和链重复此操作,如果您希望兼容,则可能会对输出进行一些修改iptables-restore,例如为每个表添加标头*filter,并将默认策略更改-P:,并向每个表添加 a COMMIT

相关内容