iptables 规则不会在 CentOS 6.x 上重新加载

iptables 规则不会在 CentOS 6.x 上重新加载

我在一台 CentOS 6.x 机器上添加了一个 ipset iptables,当机器重新启动时,该规则就会丢失。

我发现了这个答案展示如何让 Ubuntu 系统iptables在重新启动后重新加载规则,但 CentOS 上不存在此目录。

如何让 CentOS 机器在重启后加载防火墙规则?

笔记:是的,我正在使用保存规则iptables save并且正在保存文件。

这是里面的东西/etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Mon Apr  8 09:52:59 2013
*filter
:INPUT ACCEPT [2713:308071]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1649:1766437]
-A INPUT -p tcp -m multiport --dports 25,587,465,110,143,993,995 -m state --state INVALID,NEW,RELATED,ESTABLISHED -m set
 --match-set blocking src -j DROP 
COMMIT
# Completed on Mon Apr  8 09:52:59 2013

该命令显示,-A INPUT但当我创建它时,我已经使用了-I INPUT.

用于创建此规则的规则是:

iptables -I INPUT -p tcp -m multiport --dports 25,587,465,110,143,993,995 -m state --state NEW,ESTABLISHED,RELATED,INVALID -m set --set blocking src -j DROP

答案1

你失去了规则,因为:

添加规则后,您必须在重新启动服务或服务器之前保存。因为当您添加规则时,它们位于内存中,但保存后它们将保存在文件中并在启动时从该文件恢复。

所以首先您需要使用以下方法保存添加的规则:

$ /etc/init.d/iptables save

这将保存所有规则/etc/sysconfig/iptables,然后在启动时启用 iptables 服务:

$ chkconfig --level 53 iptables on

方法2

保存规则:

$ /sbin/iptables-save  > /etc/iptables.rules

要恢复规则 [ 添加以下条目/etc/rc.local]:

$ /sbin/iptables-restore < /etc/iptables.rule

答案2

我也遇到过同样的问题。

您已经创建了一个set名为“阻止”的 ipset,但是,我看不到它set保存在哪里,所以您必须在脚本中重新启动后重新创建它,我猜?

答案3

刚刚在 Centos 6.4 上注意到同样的问题。

我刚刚放入@reboot /etc/init.d/iptables restart了 crontab,它就可以工作了。

答案4

我向 Host Gator 发送了一封电子邮件,最终得到了 Host Gator 的 Linux 管理员的回复:

你好呀!

HostGator 构建了一个自定义防火墙,默认情况下在所有 VPS 和专用服务器计划上都已安装该防火墙。

幸运的是,防火墙配置中有一个文件用于保存 iptables 配置。

该文件是这样的:/etc/firewall/INCLUDE

只需将 iptables 行添加到该文件中,然后通过服务防火墙重新启动来重新启动防火墙。 iptables 规则将继续存在。

实际上,我已经将这些行添加到文件中,因此您的 iptables 规则现在应该加载并保留。

如果您有任何其他问题或疑虑,请随时跟进

相关内容