每次我重启,我都会丢失那些花了很长时间才输入的 iptables 规则。我知道我可以保存它们并在启动时恢复它们,但有没有办法永久保存它们?我真的需要在每次启动时恢复它们吗?真的吗?
问题是我有一个庞大的名单我使用 while 循环来加载 IP。这可能需要 10 分钟以上。
这是我的家庭 FTP 服务器。这是一个小型虚拟机,内存为 1GB,处理能力非常弱。IP 数量如此之多,是因为我已经基本放弃了亚洲大陆。我不需要他们每天用暴力攻击我的 FTP 服务器。我还会屏蔽政府监控器、跟踪器和垃圾邮件发送者。
这是我用来加载列表的 while 循环。
grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done
答案1
apt-get install iptables-persistent
安装时,它应该会保存您当前的 iptables 配置。否则,您可以将它们保存到这些文件中(取决于 v4 或 v6),iptables-persistent 将在启动时加载它们 :)
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
答案2
首先,创建一个文件,内容如下iptables-save
:
sudo iptables-save > /etc/iptables_rules
文件放在哪里其实并不重要,你只需要确保下一行指向同一个文件。接下来,打开/etc/rc.local
并添加以下行:
/sbin/iptables-restore < /etc/iptables_rules
从现在开始,每次您的计算机启动或重新启动时,iptables 都会从您指定的文件中加载规则。
答案3
如果您确实有很多规则,您还应该考虑将 ipset 与 iptables 结合使用。Ipset 使用索引数据库表,在查找地址以决定是接受还是拒绝时比 iptables 快得多。