iptables学习总结
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
表
iptables为我们提供了如下规则的分类,或者说,iptables为我们提供了如下”表”
- filter表:负责过滤功能,防火墙;内核模块:iptables_filter
- nat表:network address translation,网络地址转换功能;内核模块:iptable_nat
- mangle表:拆解报文,做出修改,并重新封装 的功能;iptable_mangle
- raw表:关闭nat表上启用的连接追踪机制;iptable_raw
规则表之间的优先顺序:
Raw——mangle——nat——filter
链
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。
- INPUT——进来的数据包应用此规则链中的策略
- OUTPUT——外出的数据包应用此规则链中的策略
- FORWARD——转发数据包时应用此规则链中的策略
- PREROUTING——对数据包作路由选择前应用此链中的规则(记住!所有的数据包进来的时侯都先由这个链处理)
- POSTROUTING——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
根据上图,我们能够想象出某些常用场景中,报文的流向:
-
到本机某进程的报文:PREROUTING –> INPUT
-
由本机转发的报文:PREROUTING –> FORWARD –> POSTROUTING
-
由本机的某进程发出报文(通常为响应报文):OUTPUT –> POSTROUTING
各表包含的链
- Filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter. - Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat - Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD , 即作用于全部链(chains).
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它) - Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
网友评论