Iptables是管理Netfilter的唯一工具,Netfilter直接嵌入在Linux内核没有守护进程,在OSI模型的第234层(数据链路层,网络层和应用层)插入策略。因为他只读取数据包头,不会给信息流量增加负担,也无需进行验证,因此过滤的速度非常快。

iptables一共有三张表和五条链

三张表分别是:filter  nat  mangle

filter    这个表主要执行数据包过滤。

NAT        主要进行网络地址转换。

mangle用于修改一些特殊的规则。

五条链分别是:prerouting input forward output postrouting

prerouting 刚到达的数据包

input   目标为本机的数据包

foward  需要通过本机进行转发的数据包

output  由本机产生需要向外转发的数据包

postrouting  即将离开的数据包

iptables 规则

iptables -t filter -A input -s 192.168.2.0 -j accept

解释:-t 指定表 -A添加一条规则 -j 对数据包的操作 还可以添加-dport目标端口 -p 协议

意味将来自192.168.2.0的input链包全部允许

注意:一般如果不指定表默认的就是对filter表进行操作

查看某个链或者表中的规则

iptables -L  也可以用-t指定表

注意,修改了iptables设置就必须重启iptables服务,重启的方法有两种:

/etc/init.d/iptables restart

service iptables restart

这样iptables才会生效

iptables -F 删除规则  删除filter表中所有的规则

iptables -t nat -F PORTROUTING 删除nat表中PORTROUTING链中的所有规则。

最常用的几条规则列出如下:

设置回环允许规则,没有这个规则好多服务不能启动:

iptables –A INPUT –i lo –j ACCETP    允许本地回环接口

iptables –A INPUT –p tcp --dport 20:21 –j ACCEPT 开放FTP的20、21端口

iptables –A INPUT –P tcp --dport 80 –j ACCEPT 开放http的80端口。

iptables –I INPUT –p tcp –dport 22 –j ACCEPT 开放SSH服务的22端口。

我们讲师曾经说过,iptables是表的容器,表示链的容器,链是规则的容器,之前还不太懂,现在是知道了这句话的意思。