文档介绍:netfilter/iptablesIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。filter/iptablesIP信息包过滤系统被称为单个实体,filter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,filter的两个维度。4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。filter:一般的过滤功能nat:用于nat功能(端口映射,地址映射等)mangle:用于对特定数据包的修改raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。PREROUTING:数据包进入路由表之前INPUT:通过路由表后目的地为本机FORWARDING:通过路由表后,目的地不为本机OUTPUT:由本机产生,向外转发POSTROUTIONG:发送到网卡接口之前。如下图:INPUT/OUTPUT/FORWARD只用于-tfilterINPUT如果包的目标就是本机,则包直接进入INPUT链,再被本地正在等待该包的进程接OUTPUT两类包走OUTPUT,一类是INPUT入的包,一类是主机本身产生的包FORWARD如果包的目标不是本机,而是穿过本机的包,则进入FORWARD链,FORWARD既不走INPUT,也不走OUTPUTPOSTROUTING/PREROUTING只用于-tnatPREROUTING进入路由之前进行,最先进行,DNATPOSTROUTING进入路由之后进行,最后进行,SNATFOWARD是基于两个接口的,不象INPUT,OUTPUT都是基于单一接口的-i,--in-interface匹配包的入口-i只适用于INPUT、FORWARD、PREROUTING链中,而用在OUTPUTPOSTROUTING都会出错。-ieth+:可以用通配符,表示匹配从所有的以太接口进入的数据包可以用去反符号“!”来标示”除了”被列出的接口的所有接口。-o,--out-interface匹配包的出口-o适用于OUTPUT、FORWARD,POSTROUTING,而用来INPUT,PREROUTING会出错-i-o同时匹配入口和出口的,只有非NAT的FORWARD链#iptables–AFORWORD–ieth0–oeth1–ptcp–EPT凡是从eth0接口进入,从eth1接口流出的tcp数据流被允许通过-p,--protocol[!]protocol两种方式-pname,可以是tcp,udp,icmp,orall-pall-pall只表示tcp、udp、icmp这三种协议,而不包括RFC1340(/etc/protocol)中的所有协议。其他协议,要用数字缺省是-pall,即:不写-p时,相当于-pall,相当于tcp,udp,icmp-p数字,必须符合RFC1340(/etc/protocol)-AINPUT-p50-EPT-AINPUT-p51-EPT-p0相当于-pall-ptcp--sport,-ptcp--source-port-ptcp--dport,-ptcp--destination-port缺省(无--sport),表示匹配所有端口--sport135单端口--单个服务名,服务名必须在/etc/services文件中进行标注--sport135:139连续端口匹配源端口从135到139--sport1024:匹配源端口从1024到65535--sport!1032表示除了该端口以为的其他所有端口--sport,--dport不支持逗号枚举端口注意--sport,--dport可以单个端口,可以连续端口,但不支持逗号枚举端口,逗号枚举必须加-mmultiport参数-ptcp-mmultiport--sport/--dportiptables-AFORWARD–ieth0–ptcp–mmultiport--dports25,80,110,443,1863–EPT--port