Iptable规则管理

规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息 包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规 则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的 主要工作就是添加、修改和删除这些规则。

规则查询

  • 字段解释
规则字段 含义
pkts 对应规则匹配到的报文个数
bytes 对应匹配到的报文包的大小总和
target 规则对应的target,往往表示匹配后的“动作”,即规则匹配成功后采取的操作
prot 规则对应的协议,是否只针对某些协议应用此规则
opt 规则对应的选项
in 数据包由哪个接口(网卡)流入,可以控制处理哪个网卡流入的报文
out 数据包由哪个接口(网卡)流出,可以控制处理哪个网卡流出的报文
source 规则对应的源地址,可以是一个IP,也可以是一个网段
destination 规则对应的目标地址,可以是一个IP,也可以是一个网段
  • 链数据显示

名称 含义
policy 当前链的默认规则
packets 当前链默认策略匹配到的包的数量
bytes 当前链默认策略匹配到的所有包的大小总和

添加规则

Tips: 规则顺序很重要。如果报文已经被前面的规则匹配到,iptables则会对报文执行对应的动作,即使后面的规则也能匹配到当前报文,很有可能也没有机会再对报文执行相应的动作。

  • 在对应链的末尾添加规则
1
2
3
4
# iptables -t 表名 -A 链名 匹配条件 -j 动作
# -A 在链的末尾添加规则

iptables -t filter -A INPUT -s 192.168.1.146 -j DROP`
  • 在对应链的开头添加规则
1
2
3
# iptables -t 表名 -I 链名 匹配条件 -j 动作
# -I 表示在链的开头添加规则
iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT
  • 指定位置添加一条规则
1
2
3
4
# iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作

# 在第五个位置插入规则
iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT

更新规则

  • 根据规则编号修改

Tips: 如果使用-R选项修改规则中的动作,那么必须指明原规则中的原匹配条件,例如源IP,目标IP等

1
2
# iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT
  • 修改表的默认策略

Tips: 修改指定表的指定链的默认策略(默认动作),并非修改规则

1
2
3
# iptables -t 表名 -P 链名 动作

iptables -t filter -P FORWARD ACCEPT

删除规则

  • 根据规则编号删除
1
2
3
4
# iptables -t 表名 -D 链名 规则序号

#删除INPUT链中第三条规则
iptables -t filter -D INPUT 3
  • 根据具体的匹配条件与动作删除规则
1
2
3
4
#  iptables -t 表名 -D 链名 匹配条件 -j 动作

# 删除INPUT链中源地址为192.168.1.146,动作为ACCEPT的规则
iptables -t filter -D INPUT -s 192.168.1.146 -j ACCEPT
  • 删除所有规则
1
2
3
4
# iptables -t 表名 -F

# 清除filter表中所有规则
iptables -t filter -F

保存规则

  • 保存规则

保存规则命令如下,表示将iptables规则保存至/etc/sysconfig/iptables文件中

1
service iptables save
  • 加载规则
1
iptables-restore < /etc/sysconfig/iptables