一、ACL的配置与管理
本节要具体介绍基本 ACL、高级 ACL、二层 ACL、用户自定义 ACL 和用户 ACL的配置与管理方法(此处基本/高级 ACL,仅介绍IP4 网络环境,不介绍IPv6 网络环境)。
二、ACL的常用配置原则
通过前面章节的学习我们已经知道,针对不同的业务模块,匹配的ACL规则的不同情形,结果则可能完全不同,故我们在配置ACL规则时需要遵循一定的规则,具体如下。
- 如果配置的ACL规则存在包含关系,应注意严格条件的规则编号需要排序靠前,宽松条件的规则编号需要排序靠后,避免报文因先命中宽松条件的规则而停止往下据徐匹配,从而使其无法命中严格条件的规则。(大家也可以理解为要把命中范围比较大的规则放在靠后的位置,需要精准匹配的规则放在靠前的位置)
- 根据各业务模块ACL默认动作的不同,ACL的配置原则也不同。例如,在默认动作为permit的业务模块中,如果只希望deny部分IP地址的报文,只需配置具体IP地址的deny规则,结尾无需添加任意IP地址的permit规则。而默认动作为deny的业务模式恰与其相反,即如果只希望permit部分IP地址的报文,只需配置具体IP地址的permit规则,详细的ACL常见配置原则可见下表1-1
表1-1
业务模块的ACL默认动作 | permit所有报文 | deny所有报文 | permit少部分报文deny大部分报文 | deny少部分报文permit大部分报文 |
permit | 无需应用ACL | 配置rule deny | 需先配置rule permit xxx,再配置rule deny xxxx或rule deny 说明:以上原则适用于报文过滤的情形。当ACL 应用于流策略中进行流量监管或者流量统计时,如果仅希望对指定的报文进行限速或统计,则只需配置rule permit xxx | 只需配置 rule deny xxx,无需再配置 rule permit xxxx或rule permit。 说明:如果配置rule permit 并在流策略中应用 ACL,且该流策略的流行为behavior 配置为 deny,则设备会拒绝所有报文通过,导致全部业务中断 |
deny |
|
| 只需配置 rule permit xxx,无需再配置 rule deny xxxx或rule deny | 需先配置 rule deny xxx,再配置 rule permit xxxx或rule permit |
三、ACL配置任务
华为设备中所有类型 ACL的配置任务都差不多,主要包括以下3项配置任务。
1、配置ACL的生效时间段(可选)
时间段用于描述一个 ACL 发生作用的特殊时间范围。用户可能有这样的需求,即一些ACL规则需要在某个或某些特定时间内生效,而在其他时间段不生效。例如某单位严禁员工上班时间浏览非工作网站,而下班后则允许通过指定设备浏览娱乐网站,就可以对 ACL规则约定生效时间段。
这时用户就可以先配置一个或多个时间段,然后通过配置规则引用该时间段,从而实现基于时间段的 ACL 过滤。但如果规则中引用的时间段未配置,则整个规则不能立即生效,直到用户配置了引用的时间段,并且系统时间在指定时间段范围内,ACL规则才能生效。
时间段的配置包括以下两种方式。
① 相对时间段(周期时间段):采用每个星期固定时间段的形式,例如从星期一到星期五的 8:00~18:00。
②绝对时间段:采用从某年某月某日某时某分起至某年某月某日某时某分结束的形式,例如从2018年4月28日10:00起至2018年5月28日10:00结束。
2、创建和配置ACL
本章前面已介绍到,华为设备中的 AC 可以是数字型的,也可以是命名型的。如果是数据型的,其编号一定要在对应类型的 ACL 编号范围之内,一定不能用错。
ACL 通过具体的规则(rule)所指定的过滤条件来匹配报文中的信息,实现对报文的分类。因此,创建ACL以后。需要根据不同类型 ACL,可以匹配的参数配置满足对网需求的各条 ACL 规则。
在 ACL中添加新的规则时,不会影响已经存在的规则(但可能会改变原有规则的匹配顺序)。对已经存在的规则进行编辑时,如果新配置的规则内容与原规则内容存在冲突,则冲突的部分由新配置的规则内容代替(通过这种方式也可修改原来的规则)。但建议在编辑一个已存在的规则前,先删除旧的规则,再创建新的规则,否则配置结果可能与预期的效果不同。此外,配置规则时如果不同的规则之间存在矛盾或包含的关系,则要充分考虑前面介绍的规则匹配顺序,以防错误配置。
3、应用ACL
配置完 ACL后,必须在具体的业务模块中应用 ACL,才能使 ACL 正常下发和生效但不同类型的 ACL 支持应用的范围不完全相同。
四、配置并应用基本ACL
基本ACL是最简单的一种ACL,可用于进行报文匹配的参数比较少,主要是报文的源IP地址,即基本ACL主要用来基于源IP地址进行报文过滤
1、配置基本ACL
基本ACL针对上面介绍的3项配置任务具体的配置步骤可见下表4-1
表4-1
配置任务 | 步骤 | 命令 | 说明 |
(可选)配置ACL生效时间段 | 1 | time-range time-name {start-time to end-time days|from time 1 date1[to time 2 date 2]} 例如:[HUAWEI]time-range test 14:00 to 18:00 off-day | 创建一个指定ACL生效的时间段。命令中的参数说明如下。 ① time-name:定义时间段的名称,作为一个引用时间段的标识。为1~32 个字符的字符串,区分大小写,但必须以英文字母a~z或A~Z开头,不允许使用英文单词all,但同一名称时间段下面可以配置多个不同的时间段。 ②start-time to end-time:二选一参数,指定周期时间段的时间范围,参数start-time 和 end-time 分别表示起始时间和结束时间,格式均为hh:mm(小时:分钟)。hh的取值范围为 0~23,mm 的取值范围为0~59。 ③ days:与上面的“start-time to end-time”参数一起构成一个二选一参数,指定周期时间段在每周的周几生效。有如下输入格式。
④ from timel datel:二选一参数,指定绝对时间段的开始日期,表示从某一天某一时间开始。它的表示形式为 hh:mm YYYY/MMDD(小时:分钟年/月1日)或hh:mm MMDD/YYYY(小时:分钟月1日/年)。⑤ to time2 date2:可选参数,指定绝对时间段的结束日期,表示到某一天某一时间结束。它的表示形式也为hh:mm YYYY/MM/DD 或 hh:mm MM/DD/ YYYY.缺省情况下,设备没有配置时间段,可用undo timerange time-name [ start-time to end-time { days } &<1-7>from timel datel[to time2 date2 ]]命令删除一个指定的时间段,或者指定名称下的所有时间段(当不选择所有可选参数时)。但在删除生效时间段前,需要先删除 |
配置基本ACL | 2 | acl[number]acl-number[match-order{auto|config}] 例如:[HUAWEI]acl number 2100 | (二选一)创建数字型的基本 ACL,并进入基本 ACL 视图。命令中的参数和选项说明如下。 ①number:可选项,指定创建数字型 ACL,缺省也是数字型的,所以也可以不选择此可选项。 ② acl-number:用来指定基本 ACL 的编号,取值范围为 2000~2999。 缺省情况下,不存在任何 ACL, 可用 undo acl{[numberacl-number|all}命令删除指定的,或者所有基本 ACL。删除 ACL 时,如果删除的 ACL 被其他业务引用,可能造成该业务的中断,所以在删除ACL时请先确认是否有业务正在引用该 ACL |
acl name acl-name{ basic |acl-number }match-orderi auto lconfig }]例如:[HUAWEI]acl name test1 2001 | (二选一)创建命名型的基本 ACL,并进入基本 ACL 视图。命令中的参数和选项说明如下。 ② basic:二选一选项,指定 ACL 的类型为基本 ACL此时设备为其分配的 ACL编号是该类型 ACL 可用编号中的最大值。设备不会为命名型 ACL 重复分配编号。 ③ acl-number:二选一选项,指定基本 ACL 的编号,取值范围为 2000~2999。 | ||
3 | description text 例如:[HUAWEI-acl-basic-2100]description This acl is used in Qos policy | (可选)定义 ACL 的描述信息,主要目的是便于理解,比如可以用来描述该 ACL 规则列表的具体用途。参数tex 表示 ACL 的描述信息,为 1~127 个字符的字符串也区分大小写。缺省情况下,ACL 没有描述信息,可用 undo description命令删除 ACL 的描述信息 | |
4 | step step 例如:[HUAWEI-aclbasic-2100] step 8 | (可选)为一个 ACL 规则组中的规则编号配置步长,取值范围是 1~20 的整数。缺省情况下,步长值为5,可用 undo step 命令来恢复为缺省值 | |
5 | rule [ rule-id]{ deny|permit }[ source {source-address source-wildcard | any}fragment|logging |time-range time-name |vpn-instance vpn-instance-name ] 例如:[HUAWEI-acl-basic-2100] rule permit source 192.168.32.1 0 | 配置基本 ACL 的规则,参数和选项说明如下(各过滤参数全是可选的,所有过滤参数都不选时,直接按规则动作允许或拒绝所有报文通过)。 ⑦ time-range-name:可多选项,指定该规则生效的时间段,就是第2步创建的 ACL 生效时间段。 ⑧ vpn-instance vpn-instance-name:可多选参数,指定ACL 规则匹配报文的 VPN 实例名称。如果不指定本参数,表示公网和私网报文都匹配。仅S5720BI、S5720HI、S5720S-S1、S5720I-SI、S5720S1、S5730S-E1、S5730SIS6720EI、S6720HI、S6720S-EI、S6720S-SI 和 S6720SI,以及 S7700/7900/9700/12700 系列交换机中软件 ACL应用时才支持。 | |
6 | rule rule-id description description 例如:[HUAWEI-acl-basic-2001]rule 5 description permit 192.168.32.1 | (可选)配置基本 ACL规则的描述信息。命令中的参数说明如下。 ①rule-id:指定要描述的 ACL 规则的编号,取值范围为 0~4294967294 的整数。②)description:指定某规则号的规则描述信息。用户可以通过这个描述信息更详细地记录规则,便于识别规则的用途,为1~127 个字符。缺省情况下,各规则没有描述信息,undorulerule-iddescription 命令删除指定规则的描述信息 |
2、应用基本ACL
基本ACL所包括的应用方式可见下表4-2,因为是基于IP报文过滤的ACL,所以其应用范围比较广。
表4-2
业务分类 | 应用场景 | 各业务模块的ACL应用方式 |
对转发的报文进行过滤 | 基于全局、接口和VLAN,对转发的报文进行过滤,从而使设备能够进一步对过滤出的报文进行丢弃、修改优先级、重定向等处理 | 简化流策略、流策略 |
对上送CPU处理的报文进行过滤 | 对上送CPU的报文进行必要的限制,可以避免CPU处理过多的协议报文造成占用率过高、性能下降 | 本机防攻击配置中的黑名单 |
登录控制 | 对设备的登陆权限进行控制,允许合法用户登录,拒绝非法用户登录,从而有效防止未经授权用户的非法接入,保证网络安全性 | Telnet/FTP/SFTP/HTTP和SNMP |
路由过滤 | ACL可以应用在各种动态路由协议当中,对路由协议发布、接收的路由信息以及组播进行过滤 | BGP/IS-IS/OSPF/RIP、 |
五、配置并应用高级ACL
高级ACL除了可以根据基本ACL中的的报文源IP地址进行规则匹配之外,还可以根据报文的目的IP地址、IP承载的协议类型、协议的特性(如TCP或UDP源端口、目的端口,ICMP的消息类型、消息码等)等信息进行匹配。另外,高级ACL还支持QoS中所需的优先级过滤,用于通过优先级对IP报文进行过滤。当用户需要使用源IP地址、目的IP地址、源端口号、目的端口号、优先级、时间段等信息对IPv4报文进行过滤时,可以使用高级ACL。
1、配置高级ACL
在高级ACL的配置任务中,ACL生效时间段,以及ACL的应用配置方法与上节基本ACL配置中对应配置任务的配置方法完全一样,参见即可。高级ACL的配置方法可见下表5-1。
步骤 | 命令 | 说明 |
1 | acl[number]acl-number[match-order{auto|config}] 例如:[HUAWEI]acl number 3100 | (二选一)创建数字型的高级ACL,并进入高级ACL视图。参数acl-number的取值范围为3000~3999。 |
1 | acl name acl-name{advance|acl-number}[match-order{auto|config}] 例如:[HUAWEI]acl name test1 3001 | (二选一)创建命名型的高级ACL,并进入高级ACL视图。本命令中advance选项表示创建的是高级ACL。 |
2 | description text 例如:[HUAWEI-acl-adv-2100]description This acl is used inQos policy | (可选)定义 ACL的描述信息 |
3 | step step 例如:[HUAWEI-ac-adv-2100]step 8 | (可选)为一个 ACL规则组中的规则编号配置步长 |
4 | rule[rule-id]{deny |permit}{protocol-number|icmp}[destination { destination-address destination-wildcard|any }|{{ precedence precedence|tos tos }|dscp dscp}|{fragment|first-fragment }|logging| icmp-type{icmp-name|icmp-type[icmp-code]}|source { source-address source-wildcard|any}|tme-range time-name|td-expired|vpn-instance vpn-instance-name] 例如:[HUAWEI-acl-adv-3001]rule 1 permit icmp | (多选一)当参数 protocol为ICMP(协议号为1)时的高级ACL 规则配置命令,专门过滤 ICMP 报文。参数和选项说明如下(除了协议类型外,其他各过滤参数均为可选)。 ③ precedence precedence:二选一可选参数,指定 ACL规则匹配报文时依据报文中携带的 优先级字段进行过滤,取值范围为 0~7。 ⑤ dscp dscp:可多选参数,指定 ACL 规则匹配报文时区分报文中所携带的 DSCP 优先级值,取值范围是0~63。 ⑥ first-fragment:二选一可选项,指定该规则是否仅对首片分片报文有效。当包含此参数时表示该规则仅对首片分片报文有效。 缺省情况下,未配置高级 ACL规则,可用直接在前面加undo关键字的格式命令删除指定的一条规则或一条规则中的部分内容 |
4 | rule[rule-id]{deny|permit}{protocol-number|tcp}[destination{destination-address destination-wildcard|any}|destination-port{eq port|gr port | It port | range port-startport-end}|{{precedence precedence | tos tos } | dscp dscp} | {fragment | first-fragment} | loggin | source {source-address source-wildcard | any} | source-port {eq port | gt port | It port | range port-start port-end} | tcp-flag {ack | established | fin | psh | rst | syn | urg} | time-range time-name | ttl-expired| vpn-instance vpn-instance-name] 例如:[HUAWEI-ac1-adv-3001]rule permit tcp source 10.9.8.(0.0.0.255 destination 10.38.160.0 0.0.0.255 destination-port eq128 | (多选一)当参数protocol为TCP(协议号为6)时的高级ACL 规则配置命令,专门过滤各种采用 TCP 封装的报文。本命令中大部分命令与前面介绍的过滤ICMP报文的规则命令一样,参见即可。下面仅介绍前面没有介绍的参数或选项(除了协议类型外,其他各过滤参数均为可选)。 ③tcp-flag { ack l established | fin | psh | rst | syn | urg ): 可多选选项,指定 ACL 规则匹配报文的 TCP 报文头中 SYNflag,分别匹配报文的 TCP 报头中 ack(010000)、ack(010000)或ss(000100)、fn(000001)、psh(001000)、rst(000100)、syn(000010)、urg(100000)标志位。 缺省情况下,未配置高级 ACL规则,可用直接在前面加mdo关键字的格式命令删除指定的一条规则或一条规则中的部分内容 |
4 | rule [ rule-id ] { deny | permit }{protocol-number| udp}[destination { destination- address destination-wildcard|any }|destination-port | eq port | gt port | lt port |range port-start port-end } | {{ precedence precedence ltos tos } |dscp dscp} | {ffragment l first-fragment } | logging source {source-address source-wildcard l any } | source-port{eq port gt port | lt port range port-start port-end } | time-range time-name | ttl-expired | vpn-instance vpn-instance-name 例如:[HUAWEI-acl-ady-30011rule permit udp source 10.9.8.00.0.0.255 destination 10.38.160.0 0.0.0.255 destination-port eq128 | (多选一)当参数 protocol为 UDP(协议号为 17)时的高级 ACL 规则配置命令,专门过滤各种采用 UDP 封装的报文(除了协议类型外,其他各过滤参数均为可选)。因为本命令中涉及的参数和选项均已在前面有介绍,参见即可,不同的只是这里的端口是 UDP 端口。缺省情况下,未配置高级 ACL 规则,可用直接在前面加undo 关键字的格式命令删除指定的一条规则或一条规则中的部分内容 |
4 | rule [ rule-id ] { deny l permit} {protocol-number | gre | igmp | ip | ipinip | ospf } [ destination { destination-address destination-wildcard | any } | { { precedence precedence | tos tos } | dscp dscp } | { fragment | first-fragment } | logging | {sourcesource-address source-wildcard | any } | time-range time-name | ttl-expired |vpn-instance vpn-instance-name ] 例如:[HUAWEI-acl-ady-3001]rule permit ip source 10.9.0.00.0.255.255 destination 10.38.160.0 0.0.0.255 | (多选一)当参数 protocol 为 GRE(协议号为 47)、IGMP(协议号为 2)、IP、IPINIP(协议号为 4)、OSPF(协议号为 89)时的高级 ACL 规则配置命令,专门过滤这些协议报文(除了协议类型外,其他各过滤参数均为可选)。因为本命令中涉及的参数和选项均已在前面有介绍,参见即可。 缺省情况下,未配置高级 ACL 规则,可用直接在前面加undo关键字的格式命令删除指定的一条规则或一条规则中的部分内容 |
5 | rule rule-id description description 例如:[HUAWEI-acl-adv-3001]rule 5 description permit 192.168.32.1 | (可选)配置高级 ACL 规则的描述信息 |
2、应用高级ACL
高级ACL的应用与上节介绍的基本ACL应用差不多,包括:①对转发的IP报文进行过滤;②对上送CPU处理的IP报文进行过滤;③登录控制和④路由过滤这几个部分。
在路由过滤方面,因为路由过滤一般仅需要基于路由目的IP地址进行过滤,故只需采用基本ACL即可。高级ACL的路由过滤功能通常不应用在单播路由过滤(但也可以用于过滤单播路由,其中规则中的源IP地址用于过滤路由目的IP地址,规则中的目的IP地址用于过滤目的网段子网掩码),而是应用组播通信中的组播组路由信息过滤(组播组中包括源地址和组地址两个IP地址),例如,可以将ACL和IGMP Snooping配合使用,禁止VLAN内的主机加入指定组播组。
六、配置并应用二层ACL
二层ACL是根据报文的源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息进行规则匹配、处理。二层ACL的序号取值范围为4000~4999。
1、应用二层ACL
因为二层ACL是基于二层数据帧过滤的,所以不能用于IP报文过滤。二层ACL常见的应用方式仅包括:①对转发的二层数据帧进行过滤;②对上送CPU处理的二层数据帧进行过滤两种。
七、配置并应用用户自定义ACL
用户自定义ACL是根据报头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以报头为基准,指定从报文的第几个字节开始与字符串掩码进行逻辑"与"操作,并将提取出的字符串(属于报文"数据"部分内容)与用户自定义的字符串进行比较,对IPv4和IPv6报文进行过滤。
1、配置用户自定义ACL
前面几节介绍的基本ACL、高级ACL和二层ACL都是仅基于报文字段值进行匹配的,由此可见用户自定义ACL提供了更准确、丰富、灵活的规则定义方法,因为它还可以针对报文的数据内容进行过滤。例如,当希望同时根据源IP地址、ARP报文类型对ARP报文内容进行过滤时,则可以配置用户自定义ACL。但是用户自定义ACL的配置是最难的,因为规则中所指定的过滤内容涉及到相对各种报头的偏移计算,故要求我们对各种协议报文格式有比较全面的了解。
在用户自定义ACL方面,目前仅支持在简化流策略/流策略中应用,使设备能够基于全局、VLAN或接口下发ACL,实现对转发报文的过滤。
八、配置并应用用户ACL
用户ACL根据IPv4报文的源IP地址或源UCL组、目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号、生效时间段等来定义规则,对IPv4进行过滤。如果需要根据UCL组对报文进行过滤,可以配置用户ACL。
1、配置用户ACL
用户ACL与上节介绍的用户自定义ACL是不一样的,因为用户自定义ACL主要是针对报文数据部分的内容进行过滤,而用户ACL仍是依据报头信息进行过滤,总体与高级ACL类似。在正式配置前需完成以下配置。
- 通过authentication unified-mode命令将NAC配置模式切换成同一模式,并重启设备使该模式功能生效。
- 通过ucl-group group-index[name group-name]命令创建用于标记用户类别的UCL组。
- 如果配置基于时间的ACL,则需创建生效时间段,并将其与ACL规则关联起来。
2、应用用户ACL
目前用户ACL仅支持在NAC特性的UCL组中应用,通过配置UCL组,并配置用户ACL规则关联UC:组,使一组用户复用ACL规则,再配置基于用户ACL对报文进行过滤使ACLP生效,最后在AAA的业务方案中应用UCL组,可以实现对用户的网络访问权限进行分组控制。
将用户ACL与UCL组绑定,可以使设备基于全局,对接口入方向的报文进行过滤,实现对用户的网络访问权限进行分组控制。
例如:当用户数量过多且设备ACL资源紧张时,管理员利用UCL组和用户ACL,可以将用户分成多个组别,使一组用户复用ACL规则,从而节约了设备的ACL资源,并且减少了管理员为每个用户单独部署网络访问权限控制策略的工作量。
九、配置并应用基本ACL6
ACL6总体与IPv4网络中的基本ACL配置与应用所包括的配置任务是一样的
- (可选)配置ACL6的生效时间段,与前几节介绍的生效时间段配置方法完全一样。
- 配置基本ACL6
- 应用基本ACL6
1、配置基本ACL6
基本ACL6根据源IPv6地址、分片信息和生效时间段等信息来定义规则,对IPv6报文进行过滤。如果只需要根据源IPv6地址对报文进行过滤,可以配置基本ACL6。
基本ACL6的配置方法与IPv4网络中的基本ACL的配置方法基本一样,只是在一些命令中多了IPv6关键字。
2、应用基本ACL6
配置完ACL6后,必须在具体的业务模块中应用ACL6,才能使ACL6正常下发和生效。基本的ACL6应用方式,是在简化流策略/流策略中应用ACL6,使设备能够基于全局、VLAN或接口下发ACL6,实现对转发报文的过滤。此外,ACL6还可以应用在Telnet、FTP、路由等模块,总体上都与IPv4网络中基本ACL的应用方式一一对应。
十、配置并应用高级ACL6
高级ACL6与IPv4网络中的高级ACL是对应的,它的配置和应用涉及的配置任务也一样,包括以下几个方面。
- (可选)配置ACL6的生效时间段。
- 配置高级ACL6
- 应用高级ACL6
1、配置高级ACL6
高级ACL6根据源IPv6地址、目的IPv6地址、IPv6协议类型、TCP源/目的端口、UDP源/目的端口号、分片信息和生效时间段等信息来定义规则,对IPv6报文进行过滤。高级ACL6比基本ACL6提供了更准确、丰富、灵活的规则定义方法。例如,当希望同时根据原IPv6地址和目的IPv6地址对报文进行过滤时,则需要配置高级ACL6。
高级ACL6与IPv4网络中的高级ACL一样,比较复杂,要区分不同协议报文类型,采用不同的配置命令。
2、应用高级ACL6
配置完高级ACL6后,必须在具体的业务模块中应用高级ACL6,才能使高级ACL6正常下发和生效。最基本的高级ACL6应用方式,是在简化流策略/流策略中应用高级ACL6,使设备能够基于全局、VLAN或接口下发高级ACL6,实现对转发报文的过滤。此外,ACL6还可以应用在FTP、组播等模块。
十一、实验案例
以上就是本章的全部内容了,感谢大家的浏览观看,文章若有错误或疑问可联系博主删除更改,文章中部分内容源自教材《华为交换机学习指南》感兴趣可购买相关书籍浏览。