几个月前,我在 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
这些更改都没有任何区别。我的理解是 dpkg-reconfigure iptables-persistent 是正确的方法,但是我尝试的方法都没有奏效。恐怕在过去的某个时候,我可能尝试过以在安装 iptables-persistent 之前有效的其他方式使它们持久化,但如果是这样,我不知道我该怎么做。我重启后立即运行:tail -500 /var/log/syslog 以查看系统是否加载了任何内容,但我只看到通常的启动数据。除了我创建的尝试恢复 iptables 设置的 cron 作业之外,此服务器没有其他 cron 作业。我不知道这是否是问题所在,但如果是的话,我不知道如何找到它可能从哪里运行以进行更改。
如果我手动运行我在 cron 中设置的脚本来恢复 iptables 设置,它会正常工作,但不会在重启后持续存在。cronjob 设置正确,在单独的服务器上我有 40 多个 cronjob,我熟悉该过程。
有什么建议吗?我对方法并不挑剔,我只是需要它能起作用。
答案1
我曾经将“iptables-restore”行放在 /etc/rc.local 中(在 Debian 8 和 Ubuntu 16.04 上测试过),并且它运行良好。