ACL的匹配顺序

注:转自华为官方文档,不作它用

如上面的流程图所示,一条ACL由多条rule规则组成时,这些规则可能存在重复或矛盾的地方。例如,在一条ACL中先后配置以下两条规则:

rule deny ip destination 10.1.0.0 0.0.255.255   //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过
rule permit ip destination 10.1.1.0 0.0.0.255   //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围

对于目的IP=10.1.1.1的报文,如果系统先将deny规则与其匹配,则该报文会被拒绝通过。相反,如果系统先将permit规则与其匹配,则该报文会得到允许通过。

因此,对于规则之间存在重复或矛盾的情形,报文的匹配结果与ACL的匹配顺序是息息相关的。

设备支持两种ACL匹配顺序:配置顺序(config模式)和自动排序(auto模式)。缺省的ACL匹配顺序是config模式。

配置顺序

配置顺序,即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

  • 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。

  • 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配。

自动排序

自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。各类ACL的“深度优先”顺序匹配原则如表1所示。

表1 “深度优先”匹配原则

ACL类型

匹配顺序(从高到低)

基本ACL&ACL6

  1. VPN实例。
  2. 源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  3. 规则编号,规则编号小的优先。

高级ACL&ACL6

  1. VPN实例
  2. 协议范围,指定了IP协议承载的协议类型的规则优先。
  3. 源IP地址范围,源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  4. 目的IP地址范围,目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先。
  5. 四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
  6. 规则编号,规则编号小的优先。

二层ACL

  1. 二层协议类型通配符掩码,通配符掩码大(协议类型通配符掩码中“1”位的数量多)的规则优先。
  2. 源MAC地址范围,源MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
  3. 目的MAC地址范围,目的MAC地址范围小(MAC地址通配符掩码中“1”位的数量多)的规则优先。
  4. 规则编号,规则编号小的优先。

用户自定义ACL

用户自定义ACL规则的匹配顺序只支持配置顺序,即规则编号从小到大的顺序进行匹配。

用户ACL

  1. 协议范围,指定了IP协议承载的协议类型的规则优先。
  2. 源IP地址范围。如果规则的源IP地址均为IP网段,则源IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先,否则,源IP地址为IP网段的规则优先于源IP地址为UCL组的规则。
  3. 目的IP地址范围。如果规则的目的IP地址均为IP网段,则目的IP地址范围小(IP地址通配符掩码中“0”位的数量多)的规则优先,否则,目的IP地址为IP网段的规则优先于目的IP地址为UCL组的规则。
  4. 四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
  5. 规则编号,规则编号小的优先。

关于表1中提到的ACL匹配项的详细介绍,请参见交换机支持的ACL及常用匹配项

在自动排序的ACL中配置规则时,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。

例如,在auto模式的高级ACL 3001中,先后配置以下两条规则:

rule deny ip destination 10.1.0.0 0.0.255.255   //表示拒绝目的IP地址为10.1.0.0/16网段地址的报文通过
rule permit ip destination 10.1.1.0 0.0.0.255   //表示允许目的IP地址为10.1.1.0/24网段地址的报文通过,该网段地址范围小于10.1.0.0/16网段范围

两条规则均没有带VPN实例,且协议范围、源IP地址范围相同,所以根据表1中高级ACL的深度优先匹配原则,接下来需要进一步比较规则的目的IP地址范围。由于permit规则指定的目的地址范围小于deny规则,所以permit规则的精确度更高,系统为其分配的规则编号更小。配置完上述两条规则后,ACL 3001的规则排序如下:

#                                                                               
acl number 3001 match-order auto                                                
 rule 5 permit ip destination 10.1.1.0 0.0.0.255                                
 rule 10 deny ip destination 10.1.0.0 0.0.255.255                                
#  

此时,如果再插入一条新的规则rule deny ip destination 10.1.1.1 0(目的IP地址范围是主机地址,优先级高于以上两条规则),则系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,ACL 3001新的规则排序如下:

#                                                                               
acl number 3001 match-order auto                                                
 rule 5 deny ip destination 10.1.1.1 0                                           
 rule 10 permit ip destination 10.1.1.0 0.0.0.255                                
 rule 15 deny ip destination 10.1.0.0 0.0.255.255                                
#  

相比config模式的ACL,auto模式ACL的规则匹配顺序更为复杂,但是auto模式ACL有其独特的应用场景。例如,在网络部署初始阶段,为了保证网络安全性,管理员定义了较大的ACL匹配范围,用于丢弃不可信网段范围的所有IP报文。随着时间的推移,实际应用中需要允许这个大范围中某些特征的报文通过。此时,如果管理员采用的是auto模式,则只需要定义新的ACL规则,无需再考虑如何对这些规则进行排序避免报文被误丢弃。

发布了75 篇原创文章 · 获赞 30 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/NeverGUM/article/details/102600425
ACL