Netfilter/Iptables概述

/位于  /sbin/iptables

  四表五链

  四表 filter. nat. mangle. raw

  五链 INPUT. FORWARD. OUTPUT. PREROUTING. POSTROUTING

  表的处理优先级  raw >mangle >nat >filter

 


  filter:执行所有的过滤动作

  nat:(端口映射,地址转换),所有网络地址转换都在nat上执行

  mangle:用于数据包的修改

  raw:加快封包穿越防火墙的速度,可提高防火墙性能

 


  五个链的作用

  INPUT: 处理入站数据包,通过路由表后目的地为本机

  OUTPUT:由本级产生,向外转发

  FORWARD:通过路由表后,目的地不为本机

  PREROUTING:数据包进入路由表之前

  POSTROUTING:在进行路由选择前处理数据包,数据包进入路由表之前

 


  规则链之间的匹配顺序

  入站数据:PREROUTING >INPUT

  出站数据:OUTPUT >POSTROUTING

  转发数据:PREROOUTING >FORWARD >POSTROUTING

  1.当数据包的目标地址是本机时

  (1)数据包进入网络接口

  (2)进入NAT表的prerouting链,根据需要做DNAT

  (3)进入mangle表的prerouting链,在这里根据需要改变数据包头内容(比如TTL值)

  (4)进入路由判断,(进入本地还是转发)

  (5)进入mangle表的INPUT链,在路由之后到达本地程序之前修改数据包头内容

  (6)进入filter表的INPUT链,所有目标地址是本机的数据包都会经过这里

  (7)到达本机应用程序处理

 


  2.当数据包的源地址是本机时、

  (1)本机应用程序产生数据包

  (2)路由判断

  (3)进入mangle表的OUTPUT链,在这里可以根据需要改变包头内容

  (4)进入nat表的OUTPUT链,根据需要对防火墙产产生的数据作DNAT

  (5)进入filter表的OUTPUT链,在这里可以对数据包的过滤条件进行设置

  (6)进入mangle表的PREROUTING链,这里主要做DNAT动作

  (7)进入NAT表的PREROUTING链,这里主要做DNAT动作

  (8)离开本机

 


  3.经由本机转发的数据包  (源、目标地址都不是本机)

  (1)数据包进入网络接口

  (2)mangle表的PREROUTING链,在这里可以根据需要改变数据包内容(TTL值)

  (3)nat表中FORWARD链,可根据需要对数据包做DNAT

  (4)mangle表的FORWARD链,在这里数据包头内容被修改

  (5)filter表的FORWARD链,需要转发的数据包会到这里

  (6)mangle表的PREROUTING链

  (7)nat表的POSTROUTING链,在这里根据需要对数据包做SNAT

  (8)离开网络接口

 


      Iptables表和链的动作

  filter表主要用于过滤数据包,对数据包进行(ACCEPT DROP REJECT LOG RETURN)

  filter表包含:

  INPUT链,过滤所有目标地址是本机的数据包

  FORWARD链,过滤由本机转发的数据包

  OUTPUT链,过滤有本机产生的数据包

 


  NAT表主要用于网络地址转换

  (1)DNAT,主要用于改变数据包目的地址,使包能重新路由到某台主机

  (2)SNAT,改变数据包的源地址,将源地址转换成公网地址

  NAT表包含三条链

  (1)PREROUTING链,在数据包到达防火墙的时候改变目标地址

  (2)OUTPUT链,可以改变数据包的目的地址

  (3)POSTROUTING,在数据包离开防火墙时改变数据包源地址

 

  MANGLE表

  mangle表主要用于修改数据包,通过mangle表可以改变(TTL)等

  mangle表主要包含5条链

  (1)PREROUTING、 (2)POSTROUTING、 (3)OUTPUT、 (4)INPUT、 (5)FORWARD、

推荐阅读:

相关推荐