在CentOS 6.2上重新启动后,Iptables不会持久

我已经尝试添加一些规则到我的iptables,但他们似乎并没有保存。 为了保存它们,我试过运行iptables-saveservice iptables save 。 每次运行这些命令时,都说已成功保存。 这是我想要插入的规则:

 iptables -A INPUT -j REJECT -p tcp --destination-port 3306 iptables -A INPUT -j REJECT -p tcp --destination-port 25 

这些规则工作,并将保持在我input他们的地方,但是当我去重新启动系统,他们从运行iptables -L时,从列表中iptables -L和端口再次打开(使用nmap检查)。

在查看我的/ etc / sysconfig / iptables文件时,规则在那里(在底部),所有“已完成”时间戳都来自保存看起来正确的规则。 另外,在我的/ etc / sysconfig / iptables-config文件中,所有的设置都是默认的,似乎并没有改变任何东西,就像从不同位置或者其他地方加载iptable规则一样。

如果更改在重新启动后无法通过iptables -L显示,则build议执行以下任一操作:

  • 规则不被保存

    • 你build议他们,但同时说'完成时间戳' – 复数。 这可能意味着在同一个文件中有多个规则副本,只有第一个规则正在被应用。
      • 将输出从iptables-saveredirect到上面的文件(不要附加):
          iptables-save> / etc / sysconfig / iptables 
      • 或者,只要将现有的文件移到其他地方,然后保存即可。

  • 规则正被保存到错误的文件中

    • 您的configuration可能会设置为加载一个不同于您保存的文件的文件 – 确保加载的文件与您保存的文件相匹配。
      • 该文件通常是/ etc / sysconfig / iptables
      • 如果您查看/etc/init.d/iptables,您应该find以下几行来确定将加载哪个文件:
          IPTABLES = iptables的
         IPTABLES_DATA =的/ etc / SYSCONFIG / $ IPTABLES 
  • 规则存在错误

    • 这通常不是一个问题 – iptables通常只是忽略错误的规则; 而且你不是手工编写它们(你正在保存一个可行的规则集)。

  • iptables在启动时不启动

    •   chkconfig --list iptables 

      检查哪些运行级别iptables被加载。 如果在右侧的运行级中未启用,请将其添加

        chkconfig --level 2345 iptables on 

你应该可以通过重新启动iptables来testing你的设置(而不是重新启动机器):

 service iptables restart 

标准iptables免责声明:万一出事了…

  • 备份您现有的规则集:
      cp / etc / sysconfig / iptables /etc/sysconfig/iptables.bak 
  • 设置一个cron作业,在几分钟后刷新你的iptables(当然,一旦所有的工作都会删除)。

你确定iptables-save“运行成功”吗? 它所做的就是将当前的规则集保存文件吐出到文本中。 你必须把它指向/ etc / sysconfig / iptables才行。

iptables-save > /etc/sysconfig/iptables

一般来说,如果你看到iptables-save的任何输出,它只是把输出吐到你的显示器上,这对你没有任何好处。

我认为最好的解决办法是:先input以下命令安装iptables-services

 yum install iptables-services 

然后input以下命令来保存iptable规则

 service iptables save