我在一台 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 规则现在应该加载并保留。
如果您有任何其他问题或疑虑,请随时跟进