这篇文章上次修改于 617 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

在系统中,往往需要进行iptables规则的编写,但是当系统重新启动后这些规则则没有了,那么如何解决这样的问题呢?

解决这样的问题也即是解决iptables规则的持久化,可能使用 iptables-saveiptables-restore 两个命令的组合来完成,解决方法如下:

  1. 先在系统中将需要使用的iptables规则进行配置;
  2. 保存当前规则到文件:

    iptables-save > /etc/iptables.rules
  3. 新建 /etc/network/if-pre-up.d/iptables 文件,使其在网卡设备准备启动的阶段执行该文件中的命令进行规则的恢复,内容如下:

    #!/bin/bash
    iptables -F
    iptables-restore /etc/iptables.rules
  4. 为文件添加执行权限(测试发现无执行权限时规则不会生效)

    chmod +x /etc/network/if-pre-up.d/iptables
  5. 重启系统后规则将默认生效。

在后续进行系统的iptables的配置,只要修改 /etc/iptables.rules 文件增删规则后,重启或手动执行 iptables-restore /etc/iptables.rules 即可生效。