如何阻止 iptables 每次重启时恢复到早期版本?

如何阻止 iptables 每次重启时恢复到早期版本?

几个月前,我在 iptables 中设置了规则,并习惯于iptables-persistent让规则在重启后仍然有效。我刚刚更新了我的规则,并试图让它们保留下来,但没有任何效果,它们不断重置为较早的版本。我尝试过:

创建一个在系统重启时以及每分钟运行的 cronjob,

#!/bin/bash
iptables-restore -c < /home/amart219/iptables.backup

我已将其保存到据称是规则默认位置的文件并重新配置了 iptables-persistent

iptables-save > /etc/iptables/rules.v4

dpkg-reconfigure iptables-persistent 我在 /etc/network/if-pre-up.d/ 目录中放置了一个脚本,内容如下:

#!/bin/bash
/sbin/iptables-restore < /home/amart219/iptables.backup
/sbin/ip6tables-restore < /home/amart219/iptables.backup

我修改了/etc/network/interfaces文件

iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-restore < /etc/iptables.downrules

if-pre-up.d我在和if-post-down.d目录中添加了 iptables-restore 和 iptables-save/etc/network directory

#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0

#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
iptables-restore < /etc/iptables.downrules
fi
exit 0

我确信这些文件是可执行的。

sudo chmod +x /etc/network/if-post-down.d/iptablessave
sudo chmod +x /etc/network/if-pre-up.d/iptablesload

这些更改都没有任何区别。我的理解是 dpkg-reconfigure iptables-persistent 是正确的方法,但是我尝试的方法都没有用。恐怕在过去的某个时候,我可能尝试过以在安装 iptables-persistent 之前有效的其他方式使它们持久化,但如果是这样,我不知道我该怎么做。我运行:tail -500 /var/log/syslog在重启后立即查看系统是否加载了任何东西,但我只看到通常的启动数据。除了我创建的尝试恢复 iptables 设置的 cron 作业之外,此服务器没有其他 cron 作业。我不知道这是否是问题所在,但如果是的话,我不知道如何找到它可能从哪里运行以更改它。

如果我手动运行我在 cron 中设置的脚本来恢复 iptables 设置,它会正常工作,但不会在重启后持续存在。cronjob 设置正确,在单独的服务器上我有 40 多个 cronjob,我熟悉该过程。

有什么建议吗?我对方法并不挑剔,我只是需要它能起作用。

答案1

Andrea Turbiglio 在另一个网站上回答了我的问题。我相信该网站与此网站有关联,但我不知道链接到另一个网站的规则,所以我将答案归功于他,并将其放在这里。

“我曾经将“iptables-restore”一行放在 /etc/rc.local 中(在 Debian 8 和 Ubuntu 16.04 上测试过),并且它运行良好。”

答案2

可能是第三方防火墙程序被激活了。检查ufwfirewalld使用

dpkg -l | grep ufw
dpkg -l | grep firewalld

你可以安装相应的GUI工具:

sudo apt-get install ufw gufw
sudo apt-get install firewalld firewall-applet

相关内容