一、 相同点:都可以用于过滤(ACL既可过滤数据包,也可过滤路由;前缀列表只能过滤路由)

二、不同点:

1. ACL在过滤时,除了网络前缀外,有一个通配符掩码,这个通配符掩码类似于一个反向的子网掩码,但不等于子网掩码,这通配符掩码中,为0的位表示要进行检查,即被过滤的内容要和ACL的网络前缀对应的位相同;为1的位表示不需要检查,无关紧要,则表示这个位不需要和ACL中的网络前缀相同。 通过这个功能,在一条ACL的一个条目中,可以匹配多个网段/路由。

使用ACL过滤时,不能匹配网络前缀的子网掩码。它并不是一个反向的掩码。

例: 路由器有1.1.0.0/24 1.1.1.0/24 1.1.2.0/24和1.1.3.0/24这么这条路由,需要使用一个ACL的一条语句来匹配1.1.1.0和1.1.2.0,则可以使用 1.1.0.0 0.0.1.0来表示

我们来分析一下,这两条路由只有第3段是不相同的,把它们展开成2进制,得出

0(10进制)= 0000 0000(二进制)

1(10进制)= 0000 0001(二进制)

通配符掩码使用0000 0001表示

那么,这两条路由只有第三段的最后一位,即第24位是不同的,其余的段都相同。就可以写成:

acl number 2000

rule 10 permit source 1.1.0.0 0.0.1.0

其次:ACL可以分为基本的和高级的ACL还有二层ACL等各类,除了可以匹配网络前缀外,还可以匹配端口号,协议之类。

2. 使用前缀列表的时候,它的使用格式是:

[R2]ip ip-prefix test index 10 permit 172.16.0.0 16 greater-equal 24 less-equal 32

172.16.0表示的是网络前缀;

16表示mask-lenth,这个参数有两个作用,单独使用,不带后面的greater或less的时候,它就表示前多少位要与网络前缀匹配并且表示掩码的长度是多少;如果后面带了greater或less,则mask-lenth的意义是表示被匹配的内容的前多少位要与网络前缀相同,后面的greater表示被匹配的内容的子网掩码长应该大于(等于),小于(等于)多少位。

示例:

ip ip-prefix test index 10 permit 172.16.0.0 16

# 表示只有172.16.0.0/16这条路由被匹配

ip ip-prefix test index 10 permit 172.16.0.0 16 greater-equal 24 less-equal 32

#表示匹配以172.16开头的路由,子网掩码为24-32位的都被匹配。比如172.16.0.0/24 172.16.1.0/26 172.16.100.0/30都可以被匹配到。