每次启动时都需要还原iptable规则吗?


18

每次重新启动时,我都会松开iptables规则,使我无所适从。我知道我可以保存它们并在引导时将其还原,但是总有一天可以永久保存吗?我真的需要每次启动时还原它们吗?认真吗

问题是我有一个巨大的IP 列表,在其中使用while循环将它们加载到其中。这可能要花费10分钟以上的时间。

这是我的家庭FTP服务器。这是一个具有1GB内存且处理能力非常小的虚拟机。IP太多了,因为我已经放弃了在亚洲大陆上的很多工作。我不需要他们每天都用蛮力攻击我的FTP服务器。我也封锁了政府。监控器,跟踪器和垃圾邮件发送者。

这是我用于加载列表的while循环。

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done

您的问题有点模棱两可,当您说“永久保存”时,我认为您的意思是保存到文件中,但是阅读完其余内容后,听起来您的实际意思是您不想手动重新加载它们每次启动时。另外,我认为需要重新加载的规则数量相同,因此仍然需要一段时间,但是您不必按照pankaj的回答手动进行操作。
杰夫·威灵

Answers:


21

首先,创建一个包含以下内容的文件iptables-save

sudo iptables-save > /etc/iptables_rules

将文件放在哪里并不重要,您要做的就是确保下一行引用相同的文件。接下来,打开/etc/rc.local并添加以下行:

/sbin/iptables-restore < /etc/iptables_rules

从现在开始,每次计算机启动或重新启动iptables时,都会从您指定的文件中加载规则。


1
我得到-bash: /etc/iptables_rules: Permission denied第一个命令。使用sudo和all很奇怪。
capdragon 2012年

5
我不得不用它sudo sh -c '/sbin/iptables-save > /etc/iptables.save'来解决Permission denied错误。参考
capdragon 2012年

您可以在任何目录中创建文件,也不必在/ etc /中创建文件
pankaj sharma 2012年

8
我不建议/etc/rc.local为此使用。它在系统启动的其余部分之后执行,并且有可能使系统处于非防火墙状态。我建议将此单行脚本放在/etc/network/if-up.d/firewall(新文件)中。这样可以确保每次启用网络接口时都会执行该命令。
gertvdijk

2
权限错误是正常/预期的。sudo仅适用于“>”之前的命令,文件重定向由外壳程序单独完成。
ImaginaryRobots

16
apt-get install iptables-persistent

在安装时,它将保存您当前的iptables配置。否则,您可以将它们保存到这些文件(取决于v4或v6),并且iptables-persistent将在引导时加载它们:)

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.