首页

关于

方案

工具下载

路由产品 无线应用

技术资料

代理商

汇款方式

 

MikroTik RouterOS应用事例讲解

 

                                

 

 

 

导航:

 

防火墙配置规则
防火墙Tracking设置
双线备份自动切换配置
源地址双线应用配置
端口策略路由配置
透明传输整形器配置
电信网通流量控制
动态流量控制
PPTP借线配置
Hotspot服务器配置
PPPoE服务器配置
EoIP隧道配置
User Manager操作配置
Webbox配置无线网络
PPTP远程办公互联配置
1 : 1 NAT实例

 

  

防火墙规则

下面是三条预先设置好了的chains,他们是不被能删除的:

  • input用于处理进入路由器的数据包,即数据包目标IP地址是到达路由器一个接口的IP地址,经过路由器的数据包不会在input-chains处理。
  • forward用于处理通过路由器的数据包
  • output用于处理源于路由器并从其中一个接口出去的数据包。

他们具体的区别如下:

当处理一个chain(数据链),策略是从chain列表的顶部从上而下执行的。如果一个数据包满足策略的条件,这时会执行该操作。

我们来看看防火墙过滤原则:

现在我来看事例中的防火墙规则:

我先从input链表开始,这里是对所有访问路由的数据进行过滤和处理:

input链表的第一条开始执行,这里一共有三条规则:

0   ;;;  接受你信任的IP地址访问(src-address=填写信任IP,默认允许任何地址)

     chain=input src-address=192.168.100.2 action=accept

1   ;;;  丢弃非法连接

     chain=input connection-state=invalid action=drop

2   ;;;  丢弃任何访问数据             

     chain=input action=drop

下面是forward链表

forward链表,一共有7条规则,包括两个跳转到自定义链表ICMPvirus链表:

0  ;;;  接受已建立连接的数据                  

     chain=forward connection-state=established action=accept

 1  ;;;  接受相关数据           

     chain=forward connection-state=related action=accept

 2  ;;;  丢弃非法数据包          

     chain=forward connection-state=invalid action=drop

 3   ;;;  限制每个主机TCP连接数为80 

     chain=forward protocol=tcp connection-limit=80,32 action=drop

 4   ;;;  丢弃掉所有非单播数据

     chain=forward src-address-type=!unicast action=drop

 5   ;;;  跳转到ICMP链表

     chain=forward protocol=icmp action=jump jump-target=ICMP

 6   ;;;  跳转到病毒链表            

     chain=forward action=jump jump-target=virus

forward工作过程如下:

在自定义链表ICMP中,是定义所有ICMPInternet控制报文协议),ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCPUDP)使用。例如:pingtraceroutetrace TTL等。我们通过ICMP链表来过滤所有的ICMP协议:

ICMP链表操作过程:

0   ;;;  Ping应答限制为每秒5个包   

     chain=ICMP protocol=icmp icmp-options=0:0-255 limit=5,5 action=accept

 1   ;;;  Traceroute限制为每秒5个包   

     chain=ICMP protocol=icmp icmp-options=3:3 limit=5,5 action=accept

 2   ;;;  MTU线路探测限制为每秒5个包   

     chain=ICMP protocol=icmp icmp-options=3:4 limit=5,5 action=accept

 3   ;;;  Ping请求限制为每秒5个包   

     chain=ICMP protocol=icmp icmp-options=8:0-255 limit=5,5 action=accept

 4   ;;; Trace TTL限制为每秒5个包   

     chain=ICMP protocol=icmp icmp-options=11:0-255 limit=5,5 action=accept

 5   ;;;  丢弃掉任何ICMP数据

     chain=ICMP protocol=icmp action=drop

virus链表中过滤常见的病毒,我可以根据需要在该链表中添加新的病毒对他们做过滤:

Tracking设置

这里我们可以设置是否启用tracking连接跟踪,以及TCPUDPICMP等协议的timeout时间,和TCP-syncookie设置,RouterOS2.9.16中增加了TCP-syncookie参数。

在使用NAT时需要启用Tracking连接跟踪,如果你的RouterOS没有使用NAT(如在使用bridge模式下),可以选择关闭tracking,降低系统资源。

SYN Cookie原理
  SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种

SYN Cookie是对TCP服务器端的三次握手协议作一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器在根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理未来的TCP连接。

事例操作

双线备份自动切换配置

RouterOS 2.9中路由规则增加的两点功能:

1、在RouterOS 2.9路由规则中增加了check-gateway的功能,能检测到网关的线路状态,如果网关无法探测到,便认为网关无法连接,会自动禁止访问网关的数据通过,check-gateway功能的探测时间为10s一个周期。

2、在RouterOS 2.9中具备了对缺省网关的判断,在RouterOS 2.9的任何一个路由表中只能存在一个缺省网关,即到任何目标地址为0.0.0.0/0,没有做路由标记(routing-mark)的规则,如果存在另一个缺省网关则认为是错误,路由将不予以执行。如下图:

从上图我们可以看到,所有访问电信的IP段从10.200.15.1出去,其他的数据走网通的缺省网关出去,在我们可以这些网关的前缀都为“AS”,即确定的静态路由,而在第二排可以看到蓝色一行,他也是一个缺省网关,但因为一个路由表中只能存在一个缺省网关,所有前缀为“S”即静态但不确定的网关,被认为位非法的。如果当202.112.12.12.11网关断线,则10.200.15.1会自动启用,变为缺省路由,实现现在的切换,如下:

202.112.12.11断线后,check-gateway10s一个周期后探测到,并将10.200.15.11设置为缺省路由,如果202.112.12.11正常后,系统也将会将202.112.12.11设置为缺省路由,因为他是先于10.200.15.1添加入路由表中。

 

源地址双线应用案例

这是一个典型的通过一个路由器并使用两条ISP线路接入的环境(比如都是两条电线的ADSL或者LAN接入):

Image:dual_gw_01.jpg

当然,你可以选择负载均衡!这里有多种方法可以选择,只是根据你的环境,选择最适合你解决方案。

基于用户端IP地址的策略路由

如果你有很多的主机地址,你可以通过IP地址将他们分组。这时,指定源IP地址,发送的传输通过ISP1或者ISP2的网关出去。 让我们假设终端电脑的网络地址段为192.168.100.0/24IP分配如下:

· 192.168.100.1-127分配到A

· 192.168.100.128-253 分配到B

· 192.168.100.254路由器本地IP地址(即内网的网关)

现在,我们通过子网划分的方式,将终端电脑进行分组:

· A组为192.168.100.0/25,地址范围:192.168.100.0-127

· B组为192.168.100.128/25,地址范围:192.168.100.128-255

如果你不能理解,请你查阅TCP/IP的相关教材或通过网上查找相关的子网划分资料!我们需要添加两个ip firewall mangle的规则,标记来至A组和B组终端电脑的数据包。

定义A组:

链表为chain=prerouting,源地址:src-address=192.168.100.0/25

操作为Action=mark routing并定义新的路由标记GroupA.

Image:dual_gw_22.jpg

最好做一个注释,以便以后便于你自己或者别人查看和处理。

定义B组:

链表为chain=prerouting,源地址:src-address=192.168.100.128/25

操作为Action=mark routing并定义新的路由标记GroupB

Image:dual_gw_25.jpg

所有来至终端电脑的IP传输都通过路由标记为GroupA或者GroupB。这样我们可以标记到路由表中(routing table)。

下面,我们需要定义两个默认路给相应的路由标记和网关:

Image:dual_gw_26.jpg

到这里,如果你没有对路由器做NAT的伪装,请在/ip firewall nat里添加src- Address=192.168.100.0/24 action=masquerade,在终端电脑上测试一下跟踪路由是否正确定义两个分组的默认路由:

A组测试如下情况:

C:\>tracert -d 8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops

 

  1     2 ms     2 ms     2 ms  192.168.100.254

  2    10 ms     4 ms     3 ms  10.1.0.1

  ...

B组测试如下情况:

C:\>tracert -d 8.8.8.8

Tracing route to 8.8.8.8 over a maximum of 30 hops

 

  1     2 ms     2 ms     2 ms  192.168.100.254

  2    10 ms     4 ms     3 ms  10.5.8.1

  ...

如何做端口的策略路由

MikroTik RouterOS可以支持多种策略路由,如我们常见的源地址、目标地址,同样支持端口的策略路由,多种规则可以根据用户情况配合使用,如下图: