我需要在运行 docker 容器的 Linux 机器上配置 iptables。如果我使用 保存 iptables 规则iptables-save > /etc/iptables/rules.v4
,来自所有链的规则将被写入文件。
但我只想保存 INPUT、OUTPUT 和 DOCKER-USER 链,并且不希望保存 DOCKER、DOCKER-ISOLATION-STAGE-1 等链,因为它们包含 docker 自动添加的规则,这些规则在之后将不相关重启。
据我所知,iptables-save
可以保存特定的表,但不能保存特定的链。
目前我考虑结合使用iptables-save
来grep
从不需要的链中删除规则。有没有更好的方法来达到相同的结果?
答案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
。