附加背景信息(可以跳过)
我正在尝试在我的系统上设置 psad,这需要向 iptables 添加一条规则iptables -A INPUT -j LOG
。当然,此规则将在重新启动时被刷新,因此我研究了使其持久的方法(其中有很多)。
虽然该iptables-persistent
软件包似乎是最方便的解决方案,但我无法使用它,因为它与系统上运行的 docker 守护进程冲突,因为只是在没有标志的情况下iptables-persistent
运行,这可能会破坏 docker-daemon 对 iptables 的任何更改。iptables-restore < /etc/iptables/rules.v4
-n
实际问题
所以我不想完全禁用docker守护进程的自动iptable规则,因为这只会带来巨大的维护麻烦,所以我只是添加了一个脚本
#!/bin/bash
iptables-restore -n < /etc/network/iptables.rules
并/etc/network/if-pre-up.d
保存chmod +x
配置没有docker 规则如下iptables-save > /etc/network/iptables.rules
。
然后文件iptables.rules
就说
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -j LOG
但是当我重启系统时,我看到这个规则出现-A INPUT -j LOG
了三次。我目前的猜测是,这可能是因为这个规则/etc/network/firewall
被执行了多次(因为有多个接口??)。
我该如何解决这个问题?请注意,它rc.local
已被弃用,并且不适用于此目的,因为它不会在 iptables 服务重新启动时运行。
答案1
最后,我只是创建了一个 systemd 服务来运行该脚本一次,然后将其从if-pre-up.d