linux的防火墙功能
iptables不是真正的防火墙,真正的防火墙是位于内核空间的netfilter安全框架,用户通过iptables把防火墙规则应用到这个框架中。
Netfilter是linux内核中的一个数据包处理模块,包括3大功能
1,数据包过滤功能
2,网络地址转换功能(NAT)
3,数据包内容修改功能
iptables分有4张表 ()
1,filter表 (负责过滤数据包)
2,nat表 (负责转换数据包的ip地址和端口)
3,mangle表 (负责修改数据包内容)
4,raw表 (关闭nat表上开启的链接跟踪机制)
iptables分有5条规则链
1,prerouting (数据包路由前时的规则链)
2,input (数据包发往本机时的规则链)
3,forward(数据包转发时的规则链)
4,output (数据包由本机发出时的规则链)
5,postrouting (数据包路由后转发时的规则链)
数据包经过这5条规则链的流程
当数据包目标地址是本机的web服务时 经过的规则链是 prerouting ---> input
当本机web服务响应客户请求的数据包时,经过的规则链是 output ---> postrouting
当数据包目标地址不是本机,并由本机转发时,经过的规则链是 prerouting ---> forward ---> postrouting
iptables表和规则链的关系
表的角度
1,filter表包含的规则链(input,forward, output)
2,nat表包含的规则链(prerouting ,output ,postrouting )
3,mangle表包含的规则链(prerouting ,input ,forward ,output ,postrouting )
4,raw表包含的规则链(prerouting ,output )
链的角度
1,prerouting的规则可以存在于(raw表,mangle表,nat表)
2,input的规则可以存在于(mangle表,filter表)
3,forward的规则可以存在于(mangle表,filter表)
4,output的规则可以存在于(raw表,mangle表,nat表,filter表)
5,postrouting的规则可以存在于(mangle表,nat表)
iptables定义的4张表,当他们处于同一条规则链是执行的优先级是:raw --> mangle --> nat --> filter