ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成一条ACL的结构组成,如图5-2所示。 图5-2 ACL的结构组成
ACL编号:用于标识ACL,表明该ACL是数字型ACL。 根据ACL规则功能的不同,ACL被划分为基本ACL、高级ACL、二层ACL和用户ACL这几种类型,每类ACL编号的取值范围不同。关于每类ACL编号的详细介绍,请参见ACL的分类。 除了可以通过ACL编号标识ACL,设备还支持通过名称来标识ACL,就像用域名代替IP地址一样,更加方便记忆。这种ACL,称为命名型ACL。 命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。如果不指定编号,则由系统自动分配。例如,下面就是一个既有名字“deny-telnet-login”又有编号“3998”的ACL。 # acl name deny-telnet-login 3998 rule 0 deny tcp source 10.152.0.0 0.0.63.255 destination 10.64.0.97 0 destination-port eq telnet rule 5 deny tcp source 10.242.128.0 0.0.127.255 destination 10.64.0.97 0 destination-port eq telnet # 规则:即描述报文匹配条件的判断语句。 规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。 ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。所以,图5-2中的rule 5排在首位,而规则编号最大的rule 4294967294排在末位。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。 动作:包括permit/deny两种动作,表示允许/拒绝。 匹配项:ACL定义了极其丰富的匹配项。除了图5-2中的源地址和生效时间段,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。关于每种匹配项的详细介绍,请参见ACL的常用匹配项。
如果设备启动使用的配置文件中配置了超规格的ACL规则,当设备启动加载该配置文件时,能生成ACL配置,但有部分配置不生效。
ACL的匹配机制设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制,如图5-3所示。 图5-3 ACL的匹配机制
首先系统会查找设备上是否配置了ACL。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则。 不论匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。 不匹配(未命中规则):指不存在ACL,或ACL中无规则,再或者在ACL中遍历了所有规则都没有找到符合匹配条件的规则。 以上三种情况,都叫做“不匹配”。
无论报文匹配ACL的结果是“不匹配”、“允许”还是“拒绝”,该报文最终是被允许通过还是拒绝通过,实际是由应用ACL的各个业务模块来决定。不同的业务模块,对命中和未命中规则报文的处理方式也各不相同。例如,在Telnet模块中应用ACL,只要报文命中了permit规则,就允许通过;而在流策略中应用ACL,如果报文命中了permit规则,但流行为动作配置的是deny,该报文仍会被拒绝通过。
|