码迷,mamicode.com
首页 > 其他好文 > 详细

iptables详解

时间:2015-07-10 00:21:24      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

1. 概念

  • 包过滤系统由两个组件 netfilter 和 iptables 组成,netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集;iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
  • iptables包含4个表,5个链。其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度
    4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter

  • 四张表:

 

   filter:一般的过滤功能
   nat:用于nat功能(端口映射,地址映射等)
   mangle: 用于对特定数据包的修改
   raw:优先级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能

 

  • 5个链:

 

   PREROUTING:数据包进入路由表之前
   INPUT:通过路由表后目的地为本机
   FORWARDING:通过路由表后,目的地不为本机
   OUTPUT:由本机产生,向外转发
   POSTROUTIONG:发送到网卡接口之前。

 

  • 流程图

   技术分享 

    • 数据包到达网络接口,比如 eth0
    • 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。
    • 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。
    • 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。
    • 决定路由,看是交给本地主机还是转发给其它主机。   

    到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过:

    • 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。
    • 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。

    

  • 当数据包到达防火墙时,如果MAC地址符合,就会由内核里相应的驱动程序接收,然后会经过一系列操作,从而决定是发送给本地的程序,还是转发给其他机子,或是其他操作。
  • 我们先来看一个以本地为目的的数据包,它要经过以下步骤才能到达要接收它的程序:

   

 

 

下文中有个词mangle,我实在没想到什么合适的词来表达这个意思,只因为我的英语太差!我只能把我理解的写出来。这个词表达的意思是,会对数据包的一些传输特性进行修改,在mangle表中允许的操作是 TOS、TTL、MARK。

iptables详解

标签:

原文地址:http://www.cnblogs.com/xingyun/p/4634521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!