博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables详解
阅读量:5366 次
发布时间:2019-06-15

本文共 1272 字,大约阅读时间需要 4 分钟。

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。

转载于:https://www.cnblogs.com/xingyun/p/4634521.html

你可能感兴趣的文章
Python第三方模块tesserocr安装
查看>>
【Gamma】Scrum Meeting 7
查看>>
Android SQlite详解
查看>>
BBS-项目流程分析-表的创建
查看>>
操作系统简介
查看>>
创建一个dynamics CRM workflow (五) - Deploy Custom Workflows
查看>>
ThinkPHP - Widget 工具
查看>>
前端图片上传预览
查看>>
(ZZ)ACM之歌
查看>>
Mecanim高级主题:Mecanim Blend Tree应用、Blend Tree 选项、复合Blend Tree
查看>>
分页/pagination
查看>>
HOJ Funfair
查看>>
web前端使用localstorage、sessionstorage、cookie增删获方法
查看>>
不要轻视行动的力量
查看>>
Python中re的match、search、findall、finditer区别
查看>>
网页制作中的超链接怎么做
查看>>
PHP类和对象之定义类的方法
查看>>
索引、视图、事务
查看>>
201671030106 词频统计软件项目报告
查看>>
Java作业(六)
查看>>