1、访问控制列表的匹配顺序 一个访问控制列表可以由多条“permit | deny”语句组成,每一条语句描述的规则是不相同,这些规则可能存在重复或矛盾的地方,在将一个数据包和访问控制列表的规则进行匹配的时候,到底采用哪些规则呢?就需要确定规则的匹配顺序。 有两种匹配顺序: 配置顺序 自动排序 “配置顺序“ ,是指按照用户配置 ACL 的规则的先后进行匹配。 自动排序使用“ 深度优先”的原则。“深度优先”规则是把指定数据包范围最小的语句排在最前面。这一点可以通过比较地址的通配符来实现, 通配符越小, 则指定的主机的范围就越小。 比如 129.102.1.1 0.0.0.0 指定了一台主机:129.1
2、02.1.1,而 129.102.1.1 0.0.255.255 则指定了一个网段:129.102.1.1129.102.255.255,显然前者在访问控制规则中排在前面。具体标准为:对于基本访问控制规则的语句,直接比较源地址通配符,通配符相同的则按配置顺序;对于基于接口的访问控制规则,配置了“any”的规则排在后面,其它按配置顺序;对于高级访问控制规则,首先比较源地址通配符,相同的再比较目的地址通配符,仍相同的则比较端口号的范围,范围小的排在前面,如果端口号范围也相同则按配置顺序。 使用 display acl 命令就可以看出是哪条规则首先生效。显示时,列在前面的规则首先生效。注:1 访问控
3、制列表能被匹配的前提是 Firewall Enable。2 要注意 Firewall 默认的规则是 Permit 还是 Deny 如果默认为 permit,则没有被匹配的数据流采取的动作为允许。 如果默认为 deny,则没有被匹配的数据流采取的动作为禁止。例如:Acl number 3000rule 0 permit ip source 192.168.1.3 0(rule 1 deny ip any)-在最后隐藏了这样一条命令,也就是说来此非 192.168.1.3 的数据流都被拒绝。 3 防火墙开关与否对 Nat 的 Acl 匹配没有影响。具体解解释:在一条 ACL 中可以制定多条规则,这
4、些规则可能产生交集,即某些报文可能同时符合一条 ACL 中的多条规则。例如在 ACL 3001 种配置有如下规则:rule permit ip source 1.0.0.0 0.255.255.255 destination 5.5.0.0 0.0.255.255rule deny ip source 1.0.0.0 0.255.255.255 destination 5.5.5.5 0rule permit tcp source 1.1.1.1 0rule deny udp source 1.1.0.0 0.0.255.255将这个 ACL 应用到接口上,就会产生这样一个问题。即对于一个源地
5、址为1.1.1.1,目的地址为 5.5.5.5 的 IP 报文,它符合 ACL 3001 中的所有规则,那么对这个报文应该采取哪条规则定义的动作来操作呢?为了解决这一问题,我们定义了 ACL 中各规则的匹配顺序称为匹配规则,各规则依据匹配规则重新排序,报文按其顺序依次匹配。目前主要定义有如下两种匹配规则:1 按照配置顺序的匹配规则:这种方式比较易于理解,即按设计者录入规则的先后顺序对报文进行匹配。对于上例,匹配顺序如下:AR29-acl-adv-3001display this#acl number 3001rule 0 permit ip source 1.0.0.0 0.255.255.2
6、55 destination 5.5.0.0 0.0.255.255rule 1 deny ip source 1.0.0.0 0.255.255.255 destination 5.5.5.5 0rule 2 permit tcp source 1.1.1.1 0rule 3 deny udp source 1.1.1.1 0.0.255.255#return因而,对于源为 1.1.1.1,目的为 5.5.5.5 的报文就被匹配了第一条规则,而允许通过了。华为产品默认的是这种匹配顺序。指定这种匹配规则的命令是 acl num 3001 match-order config。2 按照深度的匹配
7、规则所谓深度就是一条规则所限制范围的大小,限制范围越小深度就越深。这里要特别指出的是,我们认为所有含有四层信息的规则都比只含三层信息的规则“深” 。下面详细介绍一下,在深度匹配中最为重要的反掩码的原理。所谓反掩码顾名思义就是将原来掩码中的“1”改写为“0” , “0”改写为“1” 。例如:255(11111111).255(11111111).128(10000000).0(00000000)改写为 0(00000000).0(00000000).127(01111111).255(11111111)。于是在原掩码中“1”对应的网络位变为反掩码中“0”所对应得位。但反掩码的一个特点是它允许 0
8、 位不连续,即能出现 0.255.0.127 的情况。之所以使用反掩码也正是由于它的这个特点,因为在掩码中是严格要求 0 或 1 必须连续分布的。反掩码的这一特点大大扩展了ACL 应用的灵活性,使得原本需要多条规则才能涵盖的范围用一条规则就能完全覆盖。结合深度的定义,我们可以知道在各条规则都定义了四层信息或都只有三层信息的前提下,深度就是等同于反掩码中 0 的个数,0 的个数越多,深度也就越深,相应的主机位的位数也就越少,主机范围也就越小。所以对于规则 rule 2 permit tcp source 1.1.1.1 0 其反掩码为 0(也就是全 0) ,其所对应得主机就只有一台,我们就说它的
9、深度最深。所谓按深度匹配就是指在一个 ACL 中各规则先按其源地址的深度进行排序,在源地址深度相同的情况下,再按目的地址的深度进行排序,若还相同就按配置的先后顺序排序。还以上面的情况为例,将规则改为按深度匹配:acl num 3002 match-order auto(Cisco 公司默认的是这种规则) 。按顺序依次输入下列各条子规则,输入时不指定子规则号:rule permit ip source 1.0.0.0 0.255.255.255 destination 5.5.0.0 0.0.255.255rule deny ip source 1.0.0.0 0.255.255.255 des
10、tination 5.5.5.5 0rule permit tcp source 1.1.1.1 0rule deny udp source 1.1.0.0 0.0.255.255输完以后,使用 display 命令查看(使用该命令能显示最终的匹配顺序) ,有如下结果:AR29-acl-adv-3002display this#acl number 3002 match-order autorule 0 permit tcp source 1.1.1.1 0rule 1 deny udp source 1.1.0.0 0.0.255.255rule 2 deny ip source 1.0.0
11、.0 0.255.255.255 destination 5.5.5.5 0rule 3 permit ip source 1.0.0.0 0.255.255.255 destination 5.5.0.0 0.0.255.255#return即使在输入时指定子规则序号,对结果也不影响:AR29-acl-adv-3002display this#acl number 3002 match-order autorule 2 permit tcp source 1.1.1.1 0rule 3 deny udp source 1.1.0.0 0.0.255.255rule 1 deny ip source 1.0.0.0 0.255.255.255 destination 5.5.5.5 0rule 0 permit ip source 1.0.0.0 0.255.255.255 destination 5.5.0.0 0.0.255.255#return报文会按显示出的各条规则的先后顺序去匹配。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。