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

Duc*_*uck 7 firewall iptables centos reboot ipset

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

我发现这个答案显示了如何让 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
Run Code Online (Sandbox Code Playgroud)

命令显示-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
Run Code Online (Sandbox Code Playgroud)

Rah*_*til 2

你失去了规则,因为:

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

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

$ /etc/init.d/iptables save
Run Code Online (Sandbox Code Playgroud)

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

$ chkconfig --level 53 iptables on
Run Code Online (Sandbox Code Playgroud)

方法二

保存规则:

$ /sbin/iptables-save  > /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)

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

$ /sbin/iptables-restore < /etc/iptables.rule
Run Code Online (Sandbox Code Playgroud)