现在的位置: 首页 > 综合 > 正文

Cisco ios 路由过滤工具

2013年10月12日 ⁄ 综合 ⁄ 共 2802字 ⁄ 字号 评论关闭

 

Cisco ios 路由过滤工具
2011-03-11 15:57

 

前 言:路由过滤不是包过滤。前者是对路由条目进行过滤,后者是对数据包进行过滤;通过前者可以实现后者,但是实现后者不一定非要前者,并且后者往往不能使用 前者这种方法来实现。好比路由是路,ACL是检查站。如果连路都没有,检查站也就没必要设了;但有时路是必须有的,这时就要用检查站来阻拦特定的人通过。

我们能够想到的路由过滤工具不外乎两种:访问控制列表和前缀列表。这两种工具对路由的控制方法是不同的,各有优劣。以下简单描述。为方便起见,所有控制语句都使用permit。

   1. 标准访问控制列表。这种ACL对路由前缀控制比较有效。例如:permit host 10.10.10.0可以匹配10.10.10.0/24、10.10.10.0/25、10.10.10.0/26、10.10.10.0/27、 10.10.10.0/28、10.10.10.0/29、10.10.10.0/30、10.10.10.0/31、10.10.10.0/32一共9 条路由。由此我们还能发现标准ACL不能控制掩码长度。再举一个例子:permit 10.10.0.0 0.0.255.255,可以匹配范围在10.10.0.0-10.10.255.255内的所有路由条目,掩码长度范围16-32。

      这里我们要注意掩码产生的微妙差异。例如:permit host 10.10.10.0与permit 10.10.10.0 0.0.0.255,二者匹配的范围是不同的。

      这个例子可以帮助我们更好地了解ACL对前缀的控制能力:permit 10.10.10.0 0.0.0.4,匹配的前缀范围是10.10.10.0和10.10.10.4,掩码长度范围24-32(注意,前缀只有2个,但能匹配的路由条目是18 个)。这里我们看到ACL能够匹配不连续的前缀范围。

   2. 扩展访问控制列表。这种ACL对除了能很好地控制路由前缀外,还能控制掩码长度。例如:permit ip 10.10.0.0 0.0.255.255 host 255.255.255.0,匹配路由范围10.10.0.0-10.10.255.255内所有掩码长度为24位的路由条目。用扩展ACL定义过滤路由 条目,与普通的访问控制列表的理解方式是不同的。它的源地址规定的是前缀范围,目的地址规定的是掩码长度范围。在这里,掩码长度由host 255.255.255.0定义,它被设置成24位,只有24位掩码的路由条目才能匹配。再如:permit ip 10.10.0.0 0.0.255.255 255.255.255.128 0.0.0.127,匹配路由范围10.10.0.0-10.10.255.255内所有掩码长度为25-32位的路由条目(注)。

Think of ACL as selection tools and not security tools.

   3. 前缀列表。前缀列表可以控制前缀及掩码长度范围。例如:ip prefix-list permit 10.10.0.0/24 ge 25 le 26,匹配范围10.10.0.0-10.10.255.255内所有掩码长度为25或26的路由条目。这里,我们看到前缀列表对路由条目的掩码长度的控 制很强,可以灵活地设置;然而前缀列表对前缀范围的控制就不是那么灵活了,它只能定义连续的范围(前缀列表的具体用法可参考举例说明前缀列表的用法一 文)。

   4. 过滤相同路由条目的不同对应方法举例。
      permit  10.10.10.0 0.0.0.255 = permit ip 10.10.10.0 0.0.0.255 255.255.255.0 0.0.0.255 = ip prefix-list permit 10.10.10.0/24 le 32

综合看来,ACL与前缀列表在路由过滤方面能力各有优劣。ACL对前缀的控制能力强于前缀列表,前缀列表对掩码长度的控制能力强于ACL。那么我们什么场 合下使用哪种工具呢?根据两种过滤工具的特点,我们可以扬长避短,根据实际情况选用最恰当的工具。实用场景有很多,这里介绍其中两种场景:

   1. 当前缀为单条时,采用ACL。例如:过滤以10.10.10.0为前缀的所有路由条目,采用permit host 10.10.10.0,就可以过滤包括10.10.10.0/24、10.10.10.0/25一直到10.10.10.0/32的所有路由。而采用前缀 列表,如果我们用ip prefix-list permit 10.10.10.0/24 le 32,似乎也行,但我们没法不把诸如10.10.10.128/25、10.10.10.64/26之类的路由也包括进去。这是不精确的。因此与之对应的 前缀列表就只能是:
      ip prefix-list 10 permit 10.10.10.0/24
      ip prefix-list 15 permit 10.10.10.0/25,
      ...
      ip prefix-list 50 permit 10.10.10.0/32。这显然不如ACL简单明了。

   2. 当网络掩码范围不固定时,采用前缀列表。例如:过滤前缀在10.10.10.0-10.10.10.255范围内长度为25到32的所有路由条目。采用 ip prefix-list permit 10.10.10.0/24 ge 25就可以。而采用ACL,就必须用扩展的ACL写成permit ip 10.10.10.0 0.0.0.255 255.255.255.128 0.0.0.127;再举一例,如果有前缀列表ip prefix-list permit 10.10.10.0/24 ge 26 le 27,那么用ACL写就是permit ip 10.10.10.0 0.0.0.255 255.255.255.192 0.0.0.32。这些虽然都能写出来,但要花不少计算的脑筋。

注:扩展ACL过滤路由掩码长度的计算方法。

以上面的255.255.255.128 0.0.0.127为例。我们把它换算成二进制如下:

网络:11111111.11111111.11111111.10000000

掩码:00000000.00000000.00000000.011111111

对于掩码来说,0表示care,1表示don't care。那么网络范围就是 11111111.11111111.11111111.10000000-11111111.11111111.11111111.11111111(换 算成十进制就是255.255.255.128-255.255.255.255)。注意,这里“网络”的意思是指路由条目的掩码长度,“掩码”的作用是 用来界定掩码的长度范围。网络的范围就是掩码长度的范围(两个掩码的概念不能弄混)。由于掩码长度是从左到右连续的“1”的数量,那么用“位”的方法来描 述上述网络范围就是25位到32位。

 

抱歉!评论已关闭.