规则(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
| iptables-restore < /etc/sysconfig/iptables
|