首页 > 代码库 > Linux的iptables(一)
Linux的iptables(一)
Linux包过滤防火墙概述
netfilter、iptables都可以称作Linux的防火墙,区别在于netfilter位于Linux内核的包过滤功能体系中,叫做Linux防火墙的“内核态”;而iptables位于/sbin/iptables,是用来管理防火墙规则的工具,可以叫做Linux防火墙的“用户态”。
iptables的作用在于为包过滤机制的实现提供了规则(策略),通过不同的规则告诉netfilter该怎么处理数据包,为了方便管理,iptables采用了“表”和“链”的分层结构。称为规则表、规则链,规则表相当一个容器,里面包涵有不同的规则链。根据处理时机的不同划分为五种规则链,按顺序放在不同的规则表中。根据功能的不同iptables划分管理了四个表,分别为filter表、nat表、mangle表和raw表,各个表中包含的链及各自的用途如下:
filter表:确定是否放行数据包(过滤)。表内包涵三个链:INPUT、OUTPUT、FORWARD
nat表:修改数据包中的源、目标IP地址或端口。表内包涵三个链:PREROUTING、POSTROUTING、OUTPUT
mangle表:为数据包设置标记、修改TOS(type of service 服务类型)、TTL(生存周期)。表内包涵五个链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
raw表:确定是否对该数据包进行状态跟踪。表内包涵两个链:OUTPUT、PREROUTING
五个规则链的不同介入时机如下:
INPUT链:数据包入站时 OUTPUT链:数据包出站时 FORWARD链:当收到需要通过防火墙转发给其他地址的数据包时 PREROUTING链:在对数据包进行路由选择之前 POSTROUTING链:在对数据包进行路由选择后
当数据包到达防火墙时是按照什么样的顺序来匹配规则表和规则链的呢? 下面有解》》》》》》
规则表之间的顺序:当数据包到达防火墙时将依次应用raw、mangle、nat、filter表中对应链内的规则(如果有)。
规则链之间的顺序:1、入站数据流向:首先被PREROUTING链处理,进行路由选择,如果数据包的目标是防火墙本机,那么将交给INPUT链处理,决定是否允许通过,通过以后再交给系统的上层应用程序进行响应。
2、转发数据流向:首先被PREROUTING链处理,进行路由选择,再由FORWARD处理(允许转发或者拦截、丢弃),最后交给POSTROUTING链处理(是否修改数据包的地址等等)。 3、出站数据流向:先由OUTPUT链处理,再交给POSTROUTING链处理。
规则链内部各条防火墙规则之间的匹配顺序:
当数据包经过每条规则链的时候将依次按第一、第二......条规则进行匹配,一旦找到一条相匹配的规则后就不再继续检查这个链后面的其他规则,既遵循“匹配即停止”的原则。如果都找不到相匹配的规则,就按照默认策略处理。
-------------------------------------------------------------------------------------
未完待续............
本文出自 “南国之境、” 博客,请务必保留此出处http://452133dream.blog.51cto.com/8930483/1588121
Linux的iptables(一)