当我们使用iptables设置了一些规则后需要对这些设置永久保存,避免当服务器重启后规则消失需要重新配置。为了能够让iptables规则永久保存,这里介绍两种方法:

1、 使用iptables-restore

在设置了一系列的iptables规则后,首先需要切换到root用户,执行如下命令将规则保存到文件中:

#这包括了ipv4和ipv6规则,如果只有ipv4的规则可以只执行第一条
iptables-save > /etc/iptables-rules
ip6tables-save > /etc/ip6tables-rules

然后编辑/etc/network/interfaces文件,在对应的外网网卡下(通常是eth0接口,如果不是请按照实际情况添加,可以通过ifconfig查看外网ip对应的网卡接口)插入下面两行:

pre-up iptables-restore < /etc/iptables-rules
pre-up ip6tables-restore < /etc/ip6tables-rules

这样当服务器重启后就能自动加载已经配置好的iptables规则了。如果后续有添加新的规则则需要重新执行上面的iptables-save命令更新规则文件即可

2、 使用iptables-persistent

这个方法是我更喜欢使用的,它实际操作起来更简单一些。

  • 首先安装iptables-persistent工具
sudo apt install iptables-persistent
  • 每当设置了新的iptables规则后,使用如下命令保存规则即可,规则会根据ipv4和ipv6分别保存在了/etc/iptables/rules.v4和/etc/iptables/rules.v6文件中。
netfilter-persistent  save

由于iptables-persistent在安装时已经把它作为一个服务设置为开机启动了,它在开机后会自动加载已经保存的规则,所以也就达到了永久保存的目的。其实原理和第一种方法是类似的,只是设置起来会更简单一些。


版权声明:本文为原创文章,版权归 nicolaszf 所有,转载请注明出处!

本文链接:https://blog.sourismu.me/archives/81/