华为ACL详解2精编版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问控制列表-细说ACL那些事儿(ACL匹配篇)
在上一期中,小编围绕一张ACL结构图展开介绍,让大家了解了ACL的概念、作用和分类,并且知道了ACL是通过规则匹配来实现报文过滤的。但ACL到底是如何进行规则匹配的,相信大家还是一头雾水。本期,说一说关于“ACL匹配”的那些事儿。
1ACL匹配机制
首先,为大家介绍ACL匹配机制。上一期提到,ACL在匹配报文时遵循“一旦命中即停止匹配”的原则。其实,这句话就是对ACL匹配机制的一个高度的概括。当然,ACL匹配过程中,还存在很多细节。比如,ACL不存在系统会怎么处理?ACL存在但规则不存在系统会怎么处理?为了对整个ACL匹配过程展开详细的介绍,画了一张ACL匹配流程图,相信对大家理解ACL匹配机制能有所帮助。
从整个ACL匹配流程可以看出,报文与ACL规则匹配后,会产生两种匹配结果:“匹配”和“不匹配”。
●匹配(命中规则):指存在ACL,且在ACL中查找到了符合匹配条件的规则rule。不论
匹配的动作是“permit”还是“deny”,都称为“匹配”,而不是只是匹配上permit规则才算“匹配”。
●不匹配(未命中规则):指不存在ACL(无ACL),或ACL中无规则(没有rule),再或者在
ACL中遍历了所有规则都没有找到符合匹配条件的规则。切记以上三种情况,都叫做“不匹配”。
提醒大家,无论报文匹配ACL的结果是“不匹配”、“允许”还是“拒绝”,该报文最终是被允许通过还是拒绝通过,实际是由应用ACL的各个业务模块来决定的。不同的业务模块,对命中和未命中规则报文的处理方式也各不相同。例如,在Telnet模块中应用ACL,只要报文命中了permit规则,就允许通过;而在流策略中应用ACL,如果报文命中了permit
规则,但流行为动作配置的是deny,该报文会被拒绝通过。在后续连载的《访问控制列表-
细说ACL那些事儿(应用篇)》中,将结合各类ACL应用,为大家细说各个业务模块的区别。2ACL规则匹配顺序
从上面的ACL匹配报文流程图中,可以看到,只要报文未命中规则且仍剩余规则,系统会一直从剩余规则中选择下一条与报文进行匹配。
系统是根据什么样的顺序来选择规则进行报文匹配的呢?
回答这个问题之前,先来看个例子。假设我们先后执行了以下两条命令进行配置:
rule deny ip destination 1.1.0.0 0.0.255.255 //表示拒绝目的IP地址为1.1.0.0网段的报文通过rule permit ip destination 1.1.1.0 0.0.0.255 //表示允许目的IP地址为1.1.1.0网段的报文通过,该网段地址范围小于1.1.0.0网段范围
这条permit规则与deny规则是相互矛盾的。对于目的IP=1.1.1.1的报文,如果系统先将deny 规则与其匹配,则该报文会被禁止通过。相反,如果系统先将permit规则与其匹配,则该
报文会得到允许通过。
因此,对于规则之间存在重复或矛盾的情形,报文的匹配结果与ACL规则匹配顺序是息息相关的。下面,小编就为大家介绍ACL定义的两种规则匹配顺序:配置顺序(config)和自动排序(auto)。
配置顺序(默认),即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。后插入的规则,如果你指定的规则编号更小,那么这条规则可能会被先匹配上。
提醒,ACL规则的生效前提,是要在业务模块中应用ACL。当ACL被业务模块引用时,你可以随时修改ACL规则,但规则修改后是否立即生效与具体的业务模块相关。关于ACL的应用,在后续连载的应用篇中,还将为大家详细介绍。
自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到底进行排序,系统按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,那么该规则的编号就越小,系统越先匹配。例如,有一条规则的目的IP地址匹配项是一台主机地址2.2.2.2/32,而另一条规则的目的IP地址匹配项是一个网段2.2.2.0/24,前一条规则指定的地址范围更小,所以其精确度更高,系统会优先将报文与前一条规则进行匹配。
小编提醒,在自动排序的ACL中配置规则,不允许自行指定规则编号。系统能自动识别出该规则在这条ACL中对应的优先级,并为其分配一个适当的规则编号。
例如,在auto模式的acl 3001中,存在以下两条规则。
如果在acl 3001中插入rule deny ip destination 1.1.1.1 0(目的IP地址是主机地址,优先级高于上图中的两条规则),系统将按照规则的优先级关系,重新为各规则分配编号。插入新规则后,新的排序如下。
可以看到,rule deny ip destination 1.1.1.1 0的优先级最高,排列最靠前。
3ACL规则匹配项
最后,我们来说说ACL规则最核心的部分——规则匹配项。
在上一期中,小编在介绍ACL分类时,就已经提到各类ACL的规则定义描述。比如,基本ACL可以使用报文的源IP地址作为匹配选项;高级ACL则更高一筹,不仅可以使用源IP地址,还能使用目的IP地址、协议类型、端口号等等。
今天小编为大家讲解几个最常用的匹配选项——协议类型、目的地址和生效时间段。
PS:源地址的使用方法与目的地址同理,不再赘述。
协议类型
格式为:protocol-number | icmp | tcp | udp | gre | igmp | ip | ipinip | ospf
高级ACL支持过滤的报文类型很多,常用的协议类型包括:ICMP(协议号1)、TCP(协议号6)、UDP(协议号17)、GRE(协议号47)、IGMP(协议号2)、IP(指任何IP层协议)、IPinIP(协议号4)、OSPF(协议号89)。protocol-number取值可以是1~255。
什么情况下可以使用协议类型作为匹配项?
例如,交换机某个接口下的用户存在大量的攻击者,你希望能够禁止这个接口下的所有用户接入网络。这时,通过指定协议类型为IP来屏蔽这些用户的IP流量,就可以达到目的。配置如下:
rule deny ip //表示拒绝IP报文通过
再如,交换机上打开透明防火墙功能后,在缺省情况下,透明防火墙会在域间丢弃所有入域间的报文,包括业务报文和协议报文。如果你希望像OSPF这样的动态路由协议报文能正常通过防火墙,保证路由互通,这时,通过指定协议类型为OSPF即可解决问题。配置如下: