ACL

定义

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

目的

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

  • 防止对网络的攻击,例如IP(Internet Protocol)报文、TCP(Transmission Control Protocol)报文、ICMP(Internet Control Message Protocol)报文的攻击。

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

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

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

ACL的分类

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

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

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

      说明:编号为ACL功能的标示。例如2000~2999为基本ACL,3000~3999为高级ACL。

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

  • 按照ACL的功能分类:

分类适用的IP版本功能介绍说明
基本ACL IPv4 可使用IPv4报文的源IP地址、分片标记和时间段信息来定义规则。 基本IPv4 ACL简称基本ACL。编号范围为2000~2999
高级ACL IPv4 既可使用IPv4报文的源IP地址,也可使用目的地址IP优先级IP协议类型ICMP类型TCP源端口/目的端口UDP(User Datagram Protocol)源端口/目的端口号等来定义规则。 高级IPv4 ACL简称高级ACL。编号范围为3000~3999
二层ACL IPv4&IPv6 可根据报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、以太帧协议类型等。 编号范围为4000~4999。
用户自定义ACL IPv4&IPv6 可根据偏移位置和偏移量从报文中提取出一段内容进行匹配。 编号范围为5000~5999。
基本ACL6 IPv6 可使用IPv6报文的源IP地址、分片标记和时间段信息来定义规则。 基本IPv6 ACL简称基本ACL6。编号范围为2000~2999。
高级ACL6 IPv6 可以使用IPv6报文的源地址、目的地址、IP承载的协议类型、针对协议的特性(例如TCP的源端口、目的端口、ICMPv6协议的类型、ICMPv6 Code)等内容定义规则。 高级IPv6 ACL简称高级ACL6。编号范围为3000~3999。

说明:

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

ACL的工作原理

ACL的命名

用户在创建ACL时,可以为ACL指定一个名称,每个ACL最多只能有一个名称。命名型的ACL使用户可以通过名称唯一地确定一个ACL,并对其进行相应的操作。

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

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

说明:ACL的名称对于ACL全局唯一,但允许基本ACL与基本ACL6,高级ACL与高级ACL6使用相同的名称。名称/编号可缺省一。

(可选)ACL生效时间段

时间段用于描述一个特殊的时间范围。用户可能有这样的需求,即一些ACL规则需要在某个或某些特定时间内生效,而在其他时间段则不生效。例如某单位严禁员工上班时间浏览非工作网站,下班后才允许浏览,则可以对ACL规则约定生效时间段。这时,用户就可以先配置一个或多个时间段,然后通过配置规则引用该时间段,从而实现基于时间段的ACL过滤。

如果规则引用的时间段未配置,规则不能立即生效,直到用户配置了引用的时间段,并且系统时间在指定时间段范围内,ACL规则才能生效。

  1. 执行命令system-view,进入系统视图。

  2. 执行命令time-range time-name { start-time to end-time { days } &<1-7> | from time1 date1 [ to time2 date2 ] },创建一个时间段。

说明:使用同一time-name可以配置多条不同的时间段,以达到这样的效果:各周期时间段之间以及各绝对时间段之间分别取并集之后,再取二者的交集作为最终生效的时间范围。例如,时间段“test”配置了三个生效时段:

  • 从2010年1月1日00:00起到2010年12月31日23:59生效,这是一个绝对时间段。注:开始时间和结束时间不可以早于当前时间。

    time-range test1 from 00:00 2019/12/13 to 23:59 2019/12/31

     

  • 在周一到周五每天8:00到18:00生效,这是一个周期时间段。

     time-range test1 09:00 to 12:00 working-day

  • 在周六、周日下午14:00到18:00生效,这是一个周期时间段。

    time-range test1 14:00 to 18:00 off-day 

     

则时间段“test”最终描述的时间范围为:2010年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

  • 查看配置结果:
    display time-range + name

ACL规则

(1)、配置基本ACL的规则,执行命令rule [ rule-id ] { deny | permit } [ fragment-type fragment | source { source-ip-address { source-wildcard | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *。

(2)、配置高级ACL的规则,请根据不同的协议类型,分别执行如下的几条命令。

  • protocolUDP协议时,配置高级ACL规则。

    rule [ rule-id ] { deny | permit } protocol [ dscp dscp | destination { destination-ip-address { destination-wildcard | des-netmask } | any } | destination-port { eq port | gt port | lt port | range port-start port-end } | fragment-type fragment | source { source-ip-address { source-wildcard | src-netmask } | any } | source-port { eq port | gt port | lt port | range port-start port-end } | time-range time-name | vpn-instance vpn-instance-name | ttl-expired ] *

  • protocolTCP协议时,配置高级ACL规则。

    rule [ rule-id ] { deny | permit } protocol [ dscp dscp | destination { destination-ip-address { destination-wildcard | des-netmask } | any } | destination-port { eq port | gt port | lt port | range port-start port-end } | fragment-type fragment | source { source-ip-address { source-wildcard | src-netmask } | any } | source-port { eq port | gt port | lt port | range port-start port-end } | tcp-flag tcp-flag | time-range time-name | vpn-instance vpn-instance-name | ttl-expired ]

  • protocolICMP协议时,配置高级ACL规则。

    rule [ rule-id ] { deny | permit } protocol [ dscp dscp | destination { destination-ip-address { destination-wildcard | des-netmask } | any } | fragment-type fragment | icmp-type { icmp-name | icmp-type icmp-code } | source { source-ip-address { source-wildcard | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name | ttl-expired ] *

  • protocol为TCP、UDP和ICMP之外的其他协议时,配置高级ACL规则。

    rule [ rule-id ] { deny | permit } protocol [ dscp dscp | destination { destination-ip-address { destination-wildcard | des-netmask } | any } | fragment-type fragment | source { source-ip-address { source-wildcard | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name | ttl-expired ] *

说明:

配置基本ACL规则时:

  • 如果用户指定了所有源地址(即选择了上面步骤3中的any参数),则设备不会检查报文的源地址。

  • 当用户指定参数time-range引入ACL规则生效时间段时,如果time-name不存在,则该规则配置不生效。

操作步骤

  1. 执行命令system-view,进入系统视图。

  2. 执行命令acl { [ number ] acl-number | name acl-name [ [ number ] acl-number | basic ] },创建基本ACL,并进入基本ACL视图。

    基本ACL编号acl-number的基本acl范围是2000~2999,高级ACL范围是3000~3999

    缺省情况下,未创建ACL。

    acl name yyd 2001

     

  3. (可选)创建ACL生效时间段。

     time-range test1 from 00:00 2019/12/13 to 23:59 2019/12/31

     time-range test1 09:00 to 12:00 working-day

     time-range test1 14:00 to 18:00 off-day 

  4.  配置ACL规则,在rule中可以引用时间段

    rule permit source any time-range test1

  5. (可选)执行命令rule rule-id description description,配置基本ACL规则的描述信息。缺省情况下,各规则没有描述信息。

    rule 5 descriptiong test

  6. 设备仅允许对已存在的规则配置描述信息,不允许先配置规则的描述信息再配置具体的规则内容。

  7. 应用于接口:进入接口视图应用ACL   traffic-filter {inbound | outbound} acl "acl-number" /traffic-filter {inbound | outbound} acl name "acl-name"

      traffic-filter outbound acl 2001

检查配置结果

  • 执行命令display acl { acl-number | name acl-name | all },查看ACL的配置信息。

  • 执行命令display time-range { all | time-name },查看时间段信息。

    display time-range all


    display acl 2001

posted @ 2019-12-12 13:02  燕钰达  阅读(1252)  评论(0编辑  收藏  举报