ROS中Mangle解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BlueCY/article/details/8192307

ROS firewall Mangle的作用与特点详解Mangle作用

    RouterOS是基于linux内核的软路由,是建立在linux防火墙基础上的。Linux的内置防火墙机制,是通过Kernel中的Netfilter模块实现的。完整的Linux防火墙由内核空间的Netfilter框架和用户空间的IPtables工具构成。但是,在RouterOS中去除了IPtables工具,加入了RouterOS自己的管理工具。所以,要深入理解Ros的基本工作机制可以先从linux防火墙的Netfilter框架入手。

       Netfilter框架是Linux内核的一部分,也是模块化的。Netfilter框架在网络协议栈中定义了一些特殊检查点,这些检查点被称为钩子(hook),内核的模块可以对每种协议的一个或多个钩子进行注册,实现挂接,当某个数据包经过协议栈中的这些检查点时,内核能检测是否有任何模块对该协议和钩子函数进行了注册,若注册了,网络协议栈会按模块注册时使用的优先级顺序依次调用相应的钩子函数对数据包进行处理,并将处理结果通过函数值返回给Netfilter,以指示如何处理数据包。Netfilter框架在我们熟悉的IPv4协议栈中定义了五个钩子,数据包由数据链路层传入,经过一些简单校验(版本号、检校和)后被传递到NF_IP_PRE_ROUTING钩子处。接着进入路由处理代码,根据数据包的目的地址判断是发往本地进程还是被转发到其他网络上。如果是发往防火墙本身,在被传递到本地进程之前需要经过NF_IP_LOCAL_IN钩子进行处理;如果数据包需要经其他接口被转发出去,它需要被NF_IP_FORWARD钩子处理,然后交由NF_IP_POST_ROUTING 钩子进行处理,最后被送到数据链路层,准备发送出去。具体处理过程如下图所示。

   

 

    如上图所示,大家可以看到Mangle的身影,注意到:Mangle总是在数据处理动作之前,如Nat、Filter。它在Netfilter框架中起到数据标记的作用,就像是不同的车用不同颜色的车牌,交警可以根据不同的车牌判断是否可以通过,走哪条路(不怎么贴切:!)。它和地址列表有相通之处,但是它又可以标记地址列表。

    RouterOS中的IP firewall主要由3个规则部分组成Mangle、Filter、NAT ,而Address-list常用于地址列表分类。
    Mangle通过标记特定的IP数据流后(该数据流可以是地址列表,也可以将地址标记为一个router-marking),为Filter、NAT、路由(route)、Queue提供标记后的IP数据流。

    注意Mangle的位置,它是在Address-list之后,Address-list可以是单个,也可以一个列表(用ip-router-rules去处理),数据从Address-list进入,Mangle将标记过的数据传送给NAT、Filter、Route、Queue处理,相当于一个前期的筛选、分类、分流。

    Mangle特点:
    不管是QoS、防火墙、nat规则和路由,在许多特殊的应用中都会使用Mangle标记(如routingmark、connection-mark、packet-mark等应用)。我觉得是需要使用Mangle。
    Mangle在RouterOS中起到一个标记和分类的作用;
   掌握RouterOS的高级应用,必须了解Mangle在RouterOS中的运用原理;
   理解了Mangle,也就理解了路由、防火墙和QoS的应用

Prerouting ? 路由之前

Input ? 进入路由

Forward ? 转发路由

Output ? 路由发出

Postrouting ? 路由之后

注意上面图标是等号!!

参考了:http://hi.baidu.com/acel1123/item/7917281742f33cdcbf904276谢谢!

有些东西还没有弄明白,需要大家指正,补充!谢谢!

展开阅读全文

没有更多推荐了,返回首页