Linux-Netfilter

netfilter 为linux  第三代防火墙,前面为 ipfwadm  与  ipchains  

netfilter 有四个表,五条链,四种状态

四个表:     raw  表       在连接链路检测之前,主要做防火墙性能优化用

                  mangle 表   修改进入linux设备的数据包相关参数,可以改ip的dscp 值,后者加上 mangle 的mark 标记 

                  nat  表     只要是一些 SNAT,DNAT 用

                  filter 表   防火墙的核心,包过滤的作用

 

每个表有不同的链:

      raw:   

               PREROUTING  链

               OUTPUT 链

     mangle:   

             PERROUTING 链,

             INPUT链,

             FORWARD链,

             OUTPUT链

             POSTROUTING链

   

   nat:    

         PERROUTING 链,

         OUTPUT链

         POSTROUTING链

 

数据包的转发流程依次是 raw> mangle > nat > filter

 

netfilter 数据转发流程:

Linux-Netfilter

 

iptables  为 netfilter 统一的规则匹配接口

部分举例:

iptables   -A    INPUT  -p  tcp  -i  eth1   --dport  22  -j  ACCEPT

iptabels  -A  FORWARD -i  eth1   -o  eth0  -p  tcp  --dport  80  -j   DROP

 

iptables  -t   nat  -A  POSTROUTING  -o  eth0  -s  192.168.0.0/24   -j  SNAT  --to  10.0.1.200

iptables  -t   nat  -A  POSTROUTING  -o  eth0  -s  192.168.0.0/24   -j  MASQUERADE

iptables -t   nat  -A  POSTROUTING  -i   eth0  -p  tcp  --dport  80  -j   DNAT  --to  192.168.0.1:80

 

iptables  -t  mangle  -A  OUTPUT  -p  tcp  --dport  22   -j  DSCP  --set-dscp  43