01-07 ACL配置
Page 6 of 18
表格目录
表7-1 ACL分类
表7-2 高级访问控制列表的操作符意义 表7-3 端口号助记符 表7-4 ICMP报文类型助记符
01-07 ACL配置 Page 7 of 18
关于本章
本章描述内容如下表所示。标题
7.1 访问控制列表概述 7.2 配置访问控制列表 7.3 维护访问控制列表 7.4 ACL基本配置举例
7
ACL配置
内容
了解ACL的基本概念和相关参数。
配置基本访问控制列表、高级访问控制列表。 举例:ACL基本配置举例
清除访问控制列表和ACL统计计数器。 举例说明ACL的基本配置。
01-07 ACL配置 Page 8 of 18
7.1 访问控制列表简介
本节介绍了ACL(Access Control List)的概念、分类和相关参数等。具体包括内容如 下:
· · · · · · · · ·
访问控制列表概述 访问控制列表的分类 访问控制列表的匹配顺序
访问控制列表的步长设定 基本访问控制列表 高级访问控制列表 ACL对分片报文的支持 ACL生效时间段 ACL统计
7.1.1 访问控制列表概述
路由器为了过滤数据包,需要配置一系列的规则,以决定什么样的数据包能够通过,这 些规则就是通过访问控制列表ACL定义的。访问控制列表是由permit | deny语句组成的一 系列有顺序的规则,这些规则根据数据包的源地址、目的地址、端口号等来描述。ACL 通过这些规则对数据包进行分类,这些规则应用到路由器接口上,路由器根据这些规则 判断哪些数据包可以接收,哪些数据包需要拒绝。
ACL本身只是一组规则,无法实现过滤数据包的功能;它只能标定某一类数据包,而对这类数据包 的处理方法,需要由引入ACL的具体功能来决定。在产品实现中,ACL需要与某些功能(如策略路 由、防火墙、流分类等功能)配合使用,来实现过滤数据包等功能。
7.1.2 访问控制列表的分类
按照ACL用途,ACL可以分为以下几种类型,具体如表7-1所示。 表7-1 ACL分类 ACL类型
基本的ACL(Basic ACL)
数字范围 2000~2999 3000~3999
高级的ACL(Advanced ACL)
7.1.3 访问控制列表的匹配顺序
一个访问控制列表可以由多条“deny | permit”语句组成,每一条语句描述的规则是不相 同,这些规则可能存在重复或矛盾的地方,在将一个数据包和访问控制列表的规则进行 匹配的时候,到底采用哪些规则呢?就需要确定规则的匹配顺序。 有两种匹配顺序:
· ·
配置顺序(config) 自动排序(auto)
配置顺序
配置顺序(config),是指按照用户配置ACL的规则的先后进行匹配。缺省情况下匹配顺 序为按用户的配置排序。
01-07 ACL配置 Page 9 of 18
自动排序
自动排序(auto)使用“深度优先”的原则进行匹配。
“深度优先”规则是把指定数据包范围最小的语句排在最前面。这一点可以通过比较地 址的通配符来实现,通配符越小,则指定的主机的范围就越小。
比如129.102.1.1 0.0.0.0指定了一台主机:129.102.1.1,而129.102.1.1 0.0.0.255则指定了一 个网段:129.102.1.1~129.102.1.255,显然前者指定主机范围小,在访问控制规则中排在 前面。具体标准如下。
· 对于基本访问控制规则的语句,直接比较源地址通配符,通配符相同的则按配置顺
序;
· 对于高级访问控制规则,首先比较源地址通配符,相同的再比较目的地址通配符,
仍相同的则比较端口号的范围,范围小的排在前面,如果端口号范围也相同则按配
置顺序。
规则ID
每条规则都有一个“规则ID”,在配置规则的时候,是不需要人为指定规则ID的,系统 会自动为每一条规则生成一个“规则ID”。
规则ID之间会留下一定的空间,具体空间大小由“ACL的步长”来设定。例如步长设定 为5,ACL规则ID分配是按照5、10、15……这样来分配的。
在“配置顺序”的情况下:
· 如果配置规则的时候没有指定“规则ID”,则系统会根据“ACL步长”,按照用户 配置规则的先后顺序,自动为规则分配规则编号。例如:用户配置了3条没有指定 “规则ID”的规则,如果ACL步长为5,则系统按照这3条规则的配置顺序为它们分 别分配规则编号:5,10,15。
系统自动生成的规则ID从步长值起始。比如:步长值是5,自动生成的规则ID从5开始;步长值是
2,自动生成的规则ID从2开始。这样做是为了便于用户在第一条规则前面插入新规则。
· 如果配置规则的时候指定了“规则ID”,则会按照“规则ID”的位置决定该规则的 插入位置。例如系统现在的规则编号是:5、10、15。如果指定“规则ID”为3,创 建一条ACL规则,则规则的规则顺序就为:3、5、10、15,相当于在规则5之前插入 了一条子规则。
因此,在“配置顺序”的情况下,系统会按照用户配置规则的先后顺序进行匹配。但本 质上,系统是按照规则编号的顺序,由小到大进行匹配,后插入的规则有可能先执行。
在“自动排序”的情况下,无法为规则指定“规则ID”。系统会按照“深度优先”原则 自动为规则分配规则编号。指定数据包范围较小的规则将获得较小的规则编号。系统将 按照规则编号的顺序,由小到大进行匹配。
在“自动排序”情况下,系统会根据ACL步长自动分配规则编号,但用户无法插入规则。
使用display acl命令就可以看出是哪条规则首先生效。显示时,列在前面的规则首先生 效。
7.1.4 访问控制列表的步长设定
设置规则组的步长
通过命令step,可以为一个ACL规则组指定“步长”,步长的含义是:自动为ACL规则分 配编号的时,规则编号之间的差值。例如,如果步长设定为5,规则编号分配是按照5、 10、15…这样的规则分配的。缺省情况下,ACL规则组的步长为5。
当步长改变的时候,ACL规则组下面的规则编号会自动重新排列。例如,本来规则编号
为:5、10、15、20,如果通过命令step 2,把步长设定改为2,则规则编号变成:2、4、
01-07 ACL配置
6、8。
Page 10 of 18
如果本来规则编号不均匀分布,执行step命令后,规则会变为均匀分布。例如,如果当前 步长为5,规则编号为:1、3、10、12,通过命令step 2,把步长设定为2,则规则编号自 动变成:2、4、6、8。
如果当前步长为2,规则编号为:1、3、10、12,通过命令step 2规则编号不发生变化,仍然是: 1、3、10、12。如果需要将该规则编号变为:2、4、6、8,可以先执行undo step命令将规则编号 变成:5、10、15、20,再执行step 2命令,将规则编号变成:2、4、6、8。
恢复步长的缺省值
通过undo step命令,可以把步长恢复为缺省设定,同时对规则编号进行重新排列。undo step命令可以立刻按照缺省步长调整ACL子规则的编号。例如:ACL规则组1,下面有4条 规则:编号为1、3、5、7,步长为2。如果此时使用undo step命令,则ACL规则编号变 成:5、10、15、20,步长为5。
使用步长的作用
使用步长设定的作用是:方便在规则之间插入新的规则。例如配置好了4个规则,规则编 号为:5、10、15、20。此时希望能在第一条规则(即编号为5的规则)之前插入一条规 则,则可以使用rule 1命令在规则5之前插入一条编号为1的规则。
7.1.5 基本访问控制列表
基本访问控制列表只能使用源地址信息,做为定义访问控制列表的规则的元素。通过 “配置基本访问控制列表”中介绍的ACL的命令,可以创建一个基本的访问控制列表, 同时进入基本访问控制列表视图,在基本访问控制列表视图下,可以创建基本访问控制 列表的规则。
对已经存在的ACL规则,如果采用指定ACL规则编号的方式进行编辑,没有配置的部分 是不受影响的。例如: 先配置了一个ACL规则:
[Router-acl-basic-2001] rule 1 deny source 1.1.1.1 0
然后再对这个ACL规则进行编辑:
[Router-acl-basic-2001] rule 1 deny
这个时候,ACL的规则变成:
[Router-acl-basic-2001] rule 1 deny source 1.1.1.1 0
7.1.6 高级访问控制列表
高级访问控制列表可以使用数据包的源地址信息、目的地址信息、IP承载的协议类型、 针对协议的特性,例如TCP的源端口、目的端口,ICMP协议的类型、code等内容定义规 则。可以利用高级访问控制列表定义比基本访问控制列表更准确、更丰富、更灵活的规 则。
通过“配置高级访问控制列表”中介绍的ACL的命令,可以创建一个高级的访问控制列 表,同时进入高级访问控制列表视图,在高级访问控制列表视图下,可以创建高级访问 控制列表的规则。
对已经存在的ACL规则,如果采用指定ACL规则编号的方式进行编辑,没有配置的部分 是不受影响的。例如: 先配置了一个ACL规则:
[Router-acl-adv-3001] rule 1 deny ip source 1.1.1.1 0
然后再对这个ACL规则进行编辑: