在使用服务器时,定义网络过滤规则是必须的,以确保系统的安全。对于Linux系统管理员来说,你经常需要添加、恢复或更新iptables中定义的网络防火墙规则。好消息是,这个过程很简单,但当你已经定义了你的规则,而它们在重启后丢失时,就会变得很烦人。
通常情况下,定义的规则会被设置为持续到下一次重启。如果处理复杂和多条规则,你可能需要保存它们。如果你不知道如何去做,Linux的iptables-save命令可以完成这个工作。本指南涵盖了该命令的实际用法。
使用Iptables规则
要过滤网络流量,必须明确定义iptables规则。定义的规则会存储在系统内存中。因此,这些规则是不持久的。当系统重新启动时,你必须再次定义你的规则。使用少数规则是实际的。但是,当你有多个普通规则时,怎么办?解决办法是保存它们,有一种方法可以做到这一点。
1.查看可用的规则
如果你不确定你已经设置的规则,你可以随时列出它们。iptables命令提供了一些列出规则的选项。使用下面的命令,以行号列出规则:
$ sudoiptables\-L \-n \-v

我们目前没有为这个例子设置防火墙规则,但我们以后会添加它们。你的输出应该显示已设定的规则。
让我们创建一个新的规则。
2.添加Iptables规则
iptables允许为你的网络定义防火墙规则。在我们的例子中,我们将创建一个规则来阻止来自一个特定IP地址的所有连接。我们的目标IP是192.12.34.2,我们将使用以下规则阻止其连接:
$ sudoiptables\-AINPUT\-s192.12.34.2\-jdrop

继续,列出可用的规则。在这种情况下,我们将看到我们的新规则被添加。

然而,如果我们重新启动系统并检查相同的iptables规则,该规则就会丢失。为了避免每次系统重启时清除规则,我们应该在添加规则后保存文件。
3.保存Iptables规则
保存防火墙规则的命令是iptables-save。通过使用它,你可以指定要保存的文件并在以后访问它。
要想在不指定文件的情况下保存规则,请运行下图所示的命令:

这种方法不好的一面是,你不能从文件中恢复规则。
要将文件保存在一个文件中,例如,在一个名为rules.v4的文件中,命令将是:
$ sudoiptables-save\> /etc/iptables/rules.v4
记住,在你执行该命令之前,你必须是root:

现在,让我们重新启动系统,打开我们的iptables,确认是否有任何定义的规则。

从输出结果来看,目前没有设置任何规则。然而,与我们不得不重新创建规则的情况不同,我们现在可以从文件中恢复已保存的规则。
4.恢复Iptables规则
恢复规则的过程很简单。你只需要指定文件的路径,如下面的命令。
$ iptables-restore < /etc/iptables/rules.v4

一旦恢复,你就可以打开iptables,看到可用的规则。

这就是了!我们已经恢复了之前创建的规则,可以在会话中使用。你需要在未来使用相同的规则,就是将它们从文件中恢复。此外,你也可以根据你的需要更新它们。
结论
你不需要再为重启后丢失防火墙规则而感到沮丧了。我们已经介绍了如何使用iptables-save Linux命令,它可以让你保存你的规则并在必要时从文件中恢复它们。