为了更好的理解RouterOS的防火墙,特地给大家补一下科学知识,ROS的防火墙,其实运作的就是iptables,也为四表五链。这篇文章教你快速理解ROS的防火墙,看懂了也就懂iptables是什么原理了。

四表五链大致如下。

1.四表:

Raw表——关闭连接追踪机制。用在prerouting,output链上。

Mangle表——拆解报文,分析报文,修改报文。用在prerouting,input,forward,output,postrouting链路上。

Nat表——网络地址转换,用在prerouting,output,postrouting链路上。

Filter表——负责过滤功能,用在input,forward,output链路上。

每个表优先级:

Raw—>Mangle—>Nat—>Filter


2.五链

A.input——进来的数据包应用此规则链中的策略

(经过了第一次路由选择的数据包)

B.output

——外出的数据包应用此规则链中的策略

(经过了第二次路由选择的数据包)

C.forward

——转发数据包时应用此规则链中的策略

(经过了第一次路由选择的数据包)

D.prerouting

——对进来的数据包作路由选择前应用此链中的规则(还没有经过任何路由选择的所有数据包进来的时侯都先由这个链处理)

E.postrouting

——对出去的数据包作路由选择后应用此链中的规则(经过了所有的路由选择的所有数据包出来的时侯都先由这个链处理)

先看五链的图:


也许有人会问,为什么要判断两次路由呢?

其实路由是判断这个数据从哪里来到哪里去,要不要路由器出手干活,可以这么理解:

A.目的IP是路由器,但是不需要内核处理的数据,如内网对内网,只要经过一次判断就一条直线传出去了。

B.目的IP是路由器,且需要内核处理的数据,如内网对公网、公网对内网,都要拐个弯处理。因为涉及修改IP数据的处理。

所以,第一次是判断是否要路由器出手处理,第二次是修改完IP数据之后决定往哪个接口(网关)上面送数据。慢慢理解,不要急。

然后就是ROS里面用的链和表的关系图,告诉你链可以在哪里被处理。


看起来还是很烦,那么如何选用合适的链处理规则呢?

五链可以这样快速理解:

A.——处理进来路由器的的数据包。(目的IP在路由器上的)

B.output——处理从路由器出去的数据包。

C.forward——数据包源IP和目的IP都不在路由器上的。

D.prerouting——外面进来路由器接口的数据包。

E.postrouting——路由器从接口送出去的数据包。

这样子就很好理解了。

以上就是RouterOS的防火墙一个大致处理过程。

3.规则是怎么处理的

任何数据经过路由器都会经过链式处理,我们在合适的地方配置规则,匹配了,就可以进行相应的处理。

那么怎么选择合适的链路进行配置,配置的处理动作又有那些呢?下一章节我们开始介绍下ROS防火墙的每个表是如何设置规则的。