基础语法:
iptables --helpiptables v1.4.7Usage: iptables -[AD] chain rule-specification [options] iptables -I chain [rulenum] rule-specification [options] iptables -R chain rulenum rule-specification [options] iptables -D chain rulenum [options] iptables -[LS] [chain [rulenum]] [options] iptables -[FZ] [chain] [options] iptables -[NX] chain iptables -E old-chain-name new-chain-name iptables -P chain target [options] iptables -h (print this help information)
iptables [-t] [表名(小写)] [-ADI] [链名(大写)] [rule]
查看规则
iptables -t filter -L -n --line-number
添加规则
iptables -t filter -A INPUT -s 192.168.198.1 -j ACCEPT
iptables -t filter -I INPUT 2 -s 10.1.1.2 -j ACCEPT
-I INPUT 2 :表示把这条规则添加到规则号的2的位置后面,即这条规则会在第二条规则后面添加。
-A : 默认会在最后一条规则添加规则
-I : 默认会把规则插入到所有规则前面
删除规则 ,把第input链中的第一条规则删除:
iptables -t filter -D INPUT 1
清除规则
iptables -F 清除所有已定的规则
iptables -X 清除所有自定义的链
iptables -Z 清除chain的计数与流量统计归零
保存规则,把规则保存到/etc/sysconfig/iptables文件
/etc/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
iptables结构:
表 - 链 - 规则
1 rule
2 rule
3 rule
...
规则存放在链中。
规则执行顺序:从上到下。当数据包匹配到规则后,会跳过其它规则。
例如:不允许192.168.198.1主机访问iptables主机的22端口,但允许192.168.198.0/24网段其它主机访问22端口。(环境拓扑图,在上一篇博文中)
规则设计:
1、禁止192.168.198.1 访问 iptables 22端口
2、允许192.168.198.0/24 其它主机访问 iptables 22端口
执行过程:
当192.168.198.1的主机访问iptables22端口时,进入到INPUT链中,顺序检测规则,发现第一条规则是禁止这个ip访问22端口,那么匹配成功,此时已把这个数据包丢弃,不会再向下检查允许192.168.198.0/24这个网段允许访问22端口的规则。
其它主机执行有二种情况:
网段192.168.198.0/24:与1规则不匹配,与2规则匹配成功,这时停止再向下匹配。
其它网段:与1、2规则都没有匹配成功,这时数据包会流向按默认规则(丢弃或放行)。
默认规则:
iptables -t 表名(小写) -P(大写P) 链名(大写) ACCEPT或者DROP
有二种设计方式:
1、默认规则:DROP,即写允许规则,不在允许规则中的数据包都会丢弃。
2、默认规则:ACCEPT,即写禁止规则,不在禁止规则中的数据包都会放行。
查看默认规则:
[root@fw ~]# iptables -t filter -L -n --line-numberChain INPUT (policy ACCEPT)num target prot opt source destination Chain FORWARD (policy ACCEPT)num target prot opt source destination Chain OUTPUT (policy ACCEPT)num target prot opt source destination
从上面可以看到 filter表中有三条链,分别是:INPUT 、FORWARD 、 OUPUT,他们的默认规则都是ACCEPT。((policy ACCEPT))
数据包流向如下图:
借这个网站的图一用,里面有详细说明: