华为ACL理论知识详解(一)
首页 > HuaWei > ACL   作者:浙江思唯网络  2016年1月29日 12:07 星期五  字号:   评论:0 条
时间:2016-1-29 12:07   评论:0 条 

一、ACL简介

访问控制列表ACLAccess Control List)是由一系列规则组成的集合,ACL通过这些规则对报文进行分类,从而使设备可以对不同类报文进行不同的处理。

网络中的设备相互通信时,需要保障网络传输的安全可靠和性能稳定。例如:

1、防止对网络的攻击,例如IPInternet Protocol)报文、TCPTransmission Control Protocol)报文、ICMPInternet Control Message Protocol)报文的攻击。

2、对网络访问行为进行控制,例如企业网中内、外网的通信,用户访问特定网络资源的控制,特定时间段内允许对网络的访问。

3、限制网络流量和提高网络性能,例如限定网络上行、下行流量的带宽,对用户申请的带宽进行收费,保证高带宽网络资源的充分利用。

ACL的出现,有效地解决了上述问题,切实保障了网络传输的稳定性和可靠性。

 

二、ACL原理

ACL负责管理用户配置的所有规则,并提供报文匹配规则的算法。

1ACL的规则管理

每个ACL作为一个规则组,可以包含多个规则。

规则通过规则IDrule-id)来标识,规则ID可以由用户进行配置,也可以由系统自动根据步长生成。

一个ACL中所有规则均按照规则ID从小到大排序。

规则ID之间会留下一定的间隔。如果不指定规则ID时,具体间隔大小由“ACL的步长”来设定。

例如步长设定为5ACL规则ID分配是按照51015……来分配的。如果步长值是2,自动生成的规则ID2开始。用户可以根据规则ID方便地把新规则插入到规则组的某一位置。

  

2ACL的规则匹配

报文到达设备时,设备从报文中提取信息,并将该信息与ACL中的规则进行匹配,只要有一条规则和报文匹配,就停止查找,称为命中规则。查找完所有规则,如果没有符合条件的规则,称为未命中规则。

ACL的规则分为“permit”(允许)规则和“deny”(拒绝)规则。

综上所述,ACL可以将报文分成三类:

1、命中“permit”规则的报文

2、命中“deny”规则的报文

3、未命中规则的报文

对于这三类报文的处理方式,各个特性不同,具体请见后面详解。

 

3ACL的实现方式

目前设备支持的ACL,有以下两种实现方式。

1、软件ACL

针对与本机交互的报文(必须上送CPU处理的报文),由软件实现来匹配报文的ACL,比如FTPTFTPTelnetSNMPHTTP、路由协议、组播协议中引用的ACL

2、硬件ACL

针对所有报文(一般是针对转发的数据报文),通过下发硬件ACL资源来匹配报文的ACL,比如流策略、基于ACL的简化流策略、自反ACL、用户组以及为接口收到的报文添加外层Tag功能中引用的ACL

软件acl和硬件acl的主要区别在于:

1、处理不同的报文类型。

2、软件acl前者由软件实现;硬件acl由硬件实现。通过软件acl匹配报文时,会消耗CPU资源,通过硬件acl匹配报文时则会占用硬件资源。硬件acl匹配报文的速度更快。

 

4ACL的分类

ACL的类型根据不同的划分规则可以有不同的分类。例如:

按照创建ACL时的命名方式分为数字型ACL命名型ACL

创建ACL时指定一个编号,称为数字型ACL

编号为ACL功能的标示。

例如20002999为基本ACL30003999为高级ACL

创建ACL时指定一个名称,称为命名型ACL

ACL的功能分类,请参见下表1

ACL的分类

分类

适用的IP版本

功能介绍

说明

基本ACL

IPv4

可使用IPv4报文的IP地址、分片标记和时间段信息来定义规则。

基本IPv4 ACL简称基本ACL。编号范围为20002999

高级ACL

IPv4

既可使用IPv4报文的IP地址,也可使用目的地址、IP优先级、ToSIP协议类型、ICMP类型、TCP源端口/目的端口、UDPUser Datagram Protocol)源端口/目的端口号等来定义规则。

高级IPv4 ACL简称高级ACL。编号范围为30003999

二层ACL

IPv4&IPv6

可根据报文的以太网帧头信息来定义规则,如根据MACMedia Access Control)地址、目的MAC地址、以太帧协议类型等。

编号范围为40004999

用户自定义ACL

IPv4&IPv6

可根据偏移位置和偏移量从报文中提取出一段内容进行匹配。

编号范围为50005999

用户ACL

IPv4

既可使用IPv4报文的源IP地址或源UCLUser Control List)组,也可使用目的地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。

编号范围为60006999

基本ACL6

IPv6

可使用IPv6报文的源IP地址、分片标记和时间段信息来定义规则。

基本IPv6 ACL简称基本ACL6。编号范围为20002999

高级ACL6

IPv6

可以使用IPv6报文的源地址、目的地址、IP承载的协议类型、针对协议的特性(例如TCP的源端口、目的端口、ICMPv6协议的类型、ICMPv6 Code)等内容定义规则。

高级IPv6 ACL简称高级ACL6。编号范围为30003999

基本ACL和基本ACL6、高级ACL和高级ACL6对应的编号可以相同,二者互不影响。


5ACL的命名规则

用户在创建ACL时,可以为ACL指定一个名称,每个ACL最多只能有一个名称。

命名型的ACL使用户可以通过名称唯一地确定一个ACL,并对其进行相应的操作。

在创建ACL时,用户可以选择是否配置名称。ACL创建后,不允许用户修改或者删除ACL名称,也不允许为未命名的ACL添加名称。

在指定命名型ACL时,也可以同时配置对应编号。如果没有配置对应编号,系统在记录此命名型ACL时会自动为其分配一个数字型ACL的编号。

ACL的名称对于ACL全局唯一,但允许基本ACL与基本ACL6,高级ACL与高级ACL6使用相同的名称。

 

6ACL的步长

6.1、ACL步长的含义

步长的含义:

设备自动为ACL规则分配编号的时候,每个相邻规则编号之间的差值。例如,如果将步长设定为5,规则编号分配是按照51015…这样的规律分配的。

当步长改变后,ACL中的规则编号会自动从步长值开始重新排列。例如,原来规则编号为5101520,当通过命令把步长改为2后,则规则编号变成2468

当使用命令将步长恢复为缺省值后,设备将立刻按照缺省步长调整ACL规则的编号。例如:ACL 3001,步长为2,下面有4个规则,编号为2468。如果此时使用命令将步长恢复为缺省值5,则ACL规则编号变成5101520

 

6.2、acl步长的作用

通过设置步长,使规则之间留有一定的空间,用户可以在规则之间插入新的规则,以控制规则的匹配顺序。例如配置好了4个规则,规则编号为:5101520。此时如果用户希望能在第一条规则之后插入一条规则,则可以使用命令在510之间插入一条编号为7的规则。

另外,在定义一条ACL规则的时候,用户可以不指定规则编号,这时,系统会从步长值开始,按照步长,自动为规则分配一个大于现有最大编号的最小编号。假设现有规则的最大编号是25,步长是5,那么系统分配给新定义的规则的编号将是30

ACL6不支持步长设定,缺省步长为1,但可以配置rule-id

 

7ACL的匹配顺序

一个ACL可以由多条“deny | permit”语句组成,每一条语句描述一条规则,这些规则可能存在重复或矛盾的地方(一条规则可以包含另一条规则,但两条规则不可能完全相同)。

华为设备支持两种匹配顺序,即配置顺序(config自动排序(auto。当将一个数据包和访问控制列表的规则进行匹配的时候,由规则的匹配顺序决定规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。

1、配置顺序(默认顺序)

配置顺序按ACL规则编号(rule-id)从小到大的顺序进行匹配。

2、自动排序

自动排序auto)使用“深度优先”的原则进行匹配。

“深度优先”即根据规则的精确度排序,匹配条件(如协议类型、源和目的IP地址范围等)限制越严格越精确。例如可以比较地址的通配符,通配符越小,则指定的主机的范围就越小,限制就越严格。

若“深度优先”的顺序相同,则匹配该规则时按rule-id从小到大排列。

通配符掩码与反向掩码类似,以点分十进制表示,并用二进制的“0”表示“匹配”,“1”表示“不关心”,这恰好与子网掩码的表示方法相反,另外通配符1或者0可以不连续,掩码与反掩码必须连续。

比如,IP地址192.168.1.169、通配符0.0.0.172表示的网址为192.168.1.x0x0xx01,其中x可以是0,也可以是1

ACL规则按照“深度优先”顺序匹配的原则如下表1所示。

深度优先匹配原则

ACL类型

匹配原则

基本ACL&ACL6

  1. 先看规则中是否带VPN实例,带VPN实例的规则优先。
  2. 再比较源IP地址范围,源IP地址范围小(通配符掩码中“0”位的数量多)的规则优先。
  3. 如果源IP地址范围相同,则rule-id小的优先。

高级ACL&ACL6

  1. 先看规则中是否带VPN实例,带VPN实例的规则优先。
  2. 再比较协议范围,指定了IP协议承载的协议类型的规则优先。
  3. 如果协议范围相同,则比较源IP地址范围,源IP地址范围小(通配符掩码中“0”位的数量多)的规则优先。
  4. 如果协议范围、源IP地址范围相同,则比较目的IP地址范围,目的IP地址范围小(通配符掩码中“0”位的数量多)的规则优先。
  5. 如果协议范围、源IP地址范围、目的IP地址范围相同,则比较四层端口号(TCP/UDP端口号)范围,四层端口号范围小的规则优先。
  6. 如果上述范围都相同,则rule-id小的优先。

二层ACL

  1. 先比较二层协议类型通配符,通配符大(掩码中“1”位的数量多)的规则优先。
  2. 如果二层协议类型通配符相同,则比较源MAC地址范围,源MAC地址范围小(通配符掩码中“1”位的数量多)的规则优先。
  3. 如果源MAC地址范围相同,则比较目的MAC地址范围,目的MAC地址范围小(通配符掩码中“1”位的数量多)的规则优先。
  4. 如果源MAC地址范围、目的MAC地址范围相同,则rule-id小的优先。

用户自定义ACL

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

用户ACL

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

 

 您阅读这篇文章共花了: 
二维码加载中...
技术交流:欢迎在本文下方留言或加入QQ群:859273036 互相学习。     
本文地址:http://www.023wg.com/ACL/153.html
版权声明:若无注明,本文皆为“Swiers思唯网络博客”原创,转载请保留文章出处。

返回顶部    首页   
版权所有:Swiers思唯网络博客    浙江思唯网络