【实操】路由选择工具ACL

一、背景介绍

 

ACL全称access control list,作为一种路由选择工具更多的是应用于路由过滤,根据ACL编号可以分为:

  1. 基础访问控制列表

  2. 高级访问列表

  3. 指定2层接口组

     

    [R1]acl number ?
    INTEGER<2000-2999>  Basic access-list(add to current using rules)
    INTEGER<3000-3999>  Advanced access-list(add to current using rules)
    INTEGER<4000-4999>  Specify a L2 acl group

    其中基础ACL只能指定源地址,高级ACL可以指定源、目的的IP地址,端口号与协议等五元组,不同于前缀列表,ACL可以过滤路由及数据包,而前缀列表仅能过滤路由条目。

     

    二、实验拓扑

     
    如上图所示,当启动ospf后(步骤略),此时在R2上能看到已成功建立全毗邻

     

    但在R3上还能学习到通往1.1.1.0/24网段的路由 
     
    创建一个标准的ACL

     

    [R2]acl number 2000[R2-acl-basic-2000]rule 0 deny source 1.1.1.0 0.0.0.255 [R2-acl-basic-2000]rule 5 permit

    将ACL用到R2路由器ospf进程的入方向,为什么不能是R1的出方向,下文中会回答

     

    [R2-ospf-1]filter-policy 2000 ?    
    export  Filtering outgoing routing updates    
    import  Filtering incoming routing updates    

    此时会发现一个奇怪的现象:R2上已经过滤掉了1.1.1.0/24网段 
     
    但在R3上还能学习到通往1.1.1.0/24网段的路由 
     
    尽管R3上有路由,但是此时R3却无法ping同R1的1.1.1.0/24网段,原因就是R3的路由表上通往1.1.1.0/24网段的下一跳指向R2的23.0.0.1/24接口,但此时R2由于ACL的关系,过滤掉了1.1.1.0/24网段的路由,所以无法ping通,尽管R2上没有1.1.1.0/24网段的路由条目,但是lsdb中却有R1的1类lsa(1.1.1.1)

     

    [R2]display ospf lsdb

    OSPF Process 1 with Router ID 2.2.2.2
        Link State Database

                Area: 0.0.0.0Type      LinkState ID    AdvRouter          Age  Len   Sequence   MetricRouter    2.2.2.2         2.2.2.2            706  48    80000009       1Router    1.1.1.1         1.1.1.1            757  60    8000000A       1Router    3.3.3.3         3.3.3.3            716  36    80000004       1Network   23.0.0.1        2.2.2.2            706  32    80000003       0Network   12.0.0.1        1.1.1.1            760  32    80000003       0

    其中就包含了1.1.1.0/24网段的信息 
     
    所以关于ACL过滤路由的本质就是:

    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    [R2]display ospf peer
     OSPF Process 1 with Router ID 2.2.2.2     Neighbors 
    Area 0.0.0.0 interface 12.0.0.2(GigabitEthernet0/0/0)'s neighborsRouter ID: 1.1.1.1          Address: 12.0.0.1        State: Full  Mode:Nbr is  Slave  Priority: 1DR: 12.0.0.2  BDR: 12.0.0.1  MTU: 0    Dead timer due in 40  sec Retrans timer interval: 5 Neighbor is up for 00:00:47     Authentication Sequence: [ 0 ] 
         Neighbors 
    Area 0.0.0.0 interface 23.0.0.1(GigabitEthernet0/0/1)'s neighborsRouter ID: 3.3.3.3          Address: 23.0.0.2        State: Full  Mode:Nbr is  Master  Priority: 1DR: 23.0.0.2  BDR: 23.0.0.1  MTU: 0    Dead timer due in 36  sec Retrans timer interval: 5 Neighbor is up for 00:00:03     Authentication Sequence: [ 0 ]
    1. ACL不会过滤lsa信息,且同一个area内所有路由器的lsdb一致,这就解释了为什么R3上有1.1.1.0/24网段的路由

    2. ACL过滤是发生在本地路由根据lsa计算的结果上,再一次印证了链路状态型协议是本地计算路由这一特性

    3. 至于为什么要配置在入方向(import),原因就是链路状态型协议对外发送的lsa,他并不受ACL约束,所以配置在出方向(export)并不会产生实际作用

    4. 但是对于rip,BGP这种宣告路由条目的距离矢量型协议,他们对外宣告的路由会受到ACL的影响

三、掩码、反掩码、通配符

本实验在配置时,宣告ospf接口用的是反掩码,宣告ACL时使用的是通配符,IP地址使用的是掩码,他们之间区别如下: 
不少资料中提到过掩码、反掩码、通配符的区别,甚至百度也有专门介绍三种不同的文章,但此处需要纠正一点的是:通配符全称通配符掩码,就是坊间所说的反掩码,根本没有3种类型之说,掩码与通配符掩码的区别为:

  1. 在掩码中,1表示精确匹配,0表示忽略,在配置IP地址以及路由的时候,会使用掩码

  2. 在通配符掩码(反掩码)中,0表示精确匹配,1表示忽略,在ospf的配置中,通过network命令进行网段宣告时,在acl匹配路由时会使用通配符掩码

四、ospf接口宣告方式

ospf接口宣告有2种特殊宣告方式:

  1. 宣告时采用192.168.1.1 0.0.0.0,这种方式表示精确匹配到192.168.1.1这个接口,并将它在相应的area中激活ospf

  2. 宣告时采用0.0.0.0 255.255.255.255,这种方式表示该路由器上所有接口都在相应的area中激活ospf

通常情况下ospf的宣告方式为192.168.1.0 0.0.0.255,这种方式表明地址为192.168.1.0~255的接口都能在相应area中激活ospf,另需说明的是:宣告ospf接口时,不理会接口IP的掩码,只是被匹配IP地址。

猜你喜欢

转载自blog.csdn.net/XMWS_IT/article/details/110630184