01-ACL配置
本章节下载: 01-ACL配置 (434.42 KB)
目 录
ACL(Access Control List,访问控制列表)是一或多条规则的集合,用于识别报文流。这里的规则是指描述报文匹配条件的判断语句,匹配条件可以是报文的源地址、目的地址、端口号等。网络设备依照这些规则识别出特定的报文,并根据预先设定的策略对其进行处理。
ACL可以应用在诸多领域,其中最基本的就是应用ACL进行报文过滤,具体配置过程请参见“1.4.8 应用ACL进行报文过滤”。此外,ACL还可应用于诸如路由、安全、QoS等业务中,有关ACL在这些业务中的具体应用方式,请参见相关的配置指导。
ACL本身只能识别报文,而无法对识别出的报文进行处理,对这些报文的具体处理方式由应用ACL的业务模块来决定。
用户在创建ACL时必须为其指定编号或名称,不同的编号对应不同类型的ACL,如表1-1所示;当ACL创建完成后,用户就可以通过指定编号或名称的方式来应用和编辑该ACL。
应用于IPv4的基本ACL和高级ACL可以与应用于IPv6的基本ACL和高级ACL存在相同的编号或名称。在其它情况下,ACL的编号和名称全局唯一。
根据规则制订依据的不同,可以将ACL分为如表1-1所示的几种类型。
表1-1 ACL的分类
ACL类型 |
编号范围 |
适用的IP版本 |
规则制订依据 |
基本ACL |
2000~2999 |
IPv4 |
报文的源IPv4地址 |
IPv6 |
报文的源IPv6地址 |
||
高级ACL |
3000~3999 |
IPv4 |
报文的源IPv4地址、目的IPv4地址、报文优先级、IPv4承载的协议类型及特性等三、四层信息 |
IPv6 |
报文的源IPv6地址、目的IPv6地址、报文优先级、IPv6承载的协议类型及特性等三、四层信息 |
||
二层ACL |
4000~4999 |
IPv4和IPv6 |
报文的源MAC地址、目的MAC地址、802.1p优先级、链路层协议类型等二层信息 |
用户自定义ACL |
5000~5999 |
IPv4和IPv6 |
以报文头为基准,指定从报文的第几个字节开始与掩码进行“与”操作,并将提取出的字符串与用户定义的字符串进行比较,从而找出相匹配的报文 |
当一个ACL中包含多条规则时,报文会按照一定的顺序与这些规则进行匹配,一旦匹配上某条规则便结束匹配过程。ACL的规则匹配顺序有以下两种:
· 配置顺序:按照规则编号由小到大进行匹配。
· 自动排序:按照“深度优先”原则由深到浅进行匹配,各类型ACL的“深度优先”排序法则如表1-2所示。
用户自定义ACL的规则只能按照配置顺序进行匹配,其它类型的ACL则可选择按照配置顺序或自动顺序进行匹配。
表1-2 各类型ACL的“深度优先”排序法则
ACL类型 |
“深度优先”排序法则 |
IPv4基本ACL |
(1) 先判断规则的匹配条件中是否包含VPN实例,包含者优先 (2) 如果VPN实例的包含情况相同,再比较源IPv4地址范围,较小者优先 (3) 如果源IPv4地址范围也相同,再比较配置的先后次序,先配置者优先 |
IPv4高级ACL |
(1) 先判断规则的匹配条件中是否包含VPN实例,包含者优先 (2) 如果VPN实例的包含情况相同,再比较协议范围,指定有IPv4承载的协议类型者优先 (3) 如果协议范围也相同,再比较源IPv4地址范围,较小者优先 (4) 如果源IPv4地址范围也相同,再比较目的IPv4地址范围,较小者优先 (5) 如果目的IPv4地址范围也相同,再比较四层端口(即TCP/UDP端口)号的覆盖范围,较小者优先 (6) 如果四层端口号的覆盖范围无法比较,再比较配置的先后次序,先配置者优先 |
IPv6基本ACL |
(1) 先判断规则的匹配条件中是否包含VPN实例,包含者优先 (2) 如果VPN实例的包含情况相同,再比较源IPv6地址范围,较小者优先 (3) 如果源IPv6地址范围也相同,再比较配置的先后次序,先配置者优先 |
IPv6高级ACL |
(1) 先判断规则的匹配条件中是否包含VPN实例,包含者优先 (2) 如果VPN实例的包含情况相同,再比较协议范围,指定有IPv6承载的协议类型者优先 (3) 如果协议范围相同,再比较源IPv6地址范围,较小者优先 (4) 如果源IPv6地址范围也相同,再比较目的IPv6地址范围,较小者优先 (5) 如果目的IPv6地址范围也相同,再比较四层端口(即TCP/UDP端口)号的覆盖范围,较小者优先 (6) 如果四层端口号的覆盖范围无法比较,再比较配置的先后次序,先配置者优先 |
二层ACL |
(1) 先比较源MAC地址范围,较小者优先 (2) 如果源MAC地址范围相同,再比较目的MAC地址范围,较小者优先 (3) 如果目的MAC地址范围也相同,再比较配置的先后次序,先配置者优先 |
· 比较IPv4地址范围的大小,就是比较IPv4地址通配符掩码中“0”位的多少:“0”位越多,范围越小。通配符掩码(又称反向掩码)以点分十进制表示,并以二进制的“0”表示“匹配”,“1”表示“不关心”,这与子网掩码恰好相反,譬如子网掩码255.255.255.0对应的通配符掩码就是0.0.0.255。此外,通配符掩码中的“0”或“1”可以是不连续的,这样可以更加灵活地进行匹配,譬如0.255.0.255就是一个合法的通配符掩码。
· 比较IPv6地址范围的大小,就是比较IPv6地址前缀的长短:前缀越长,范围越小。
· 比较MAC地址范围的大小,就是比较MAC地址掩码中“1”位的多少:“1”位越多,范围越小。
在一个ACL中用户可以创建多条规则,为了方便标识这些规则的用途,用户可以为单条规则添加描述信息,也可以在各条规则之间插入注释信息来对前一段或后一段规则进行统一描述。
· 规则描述信息
规则描述信息主要用于对单条规则进行单独标识。当需要对各条规则进行不同的标识或对某条规则进行特别标识时,适用此方式。
· 规则注释信息
规则注释信息主要用于对一段规则进行统一标识。当需要对一段规则进行相同的标识时,如果采用对每条规则都添加相同描述信息的方式,需要进行大量配置,效率会非常低下。在这种情况下,可以在这段规则的前、后插入注释信息的方式来提高标识效率,即:在这段规则的首条规则之前以及末条规则之后分别插入一条注释信息,通过首、尾这两条注释信息就可以标识整段规则的用途。
ACL中的每条规则都有自己的编号,这个编号在该ACL中是唯一的。在创建规则时,可以手工为其指定一个编号;如未手工指定编号,则由系统为其自动分配一个编号。由于规则的编号可能影响规则匹配的顺序,因此当由系统自动分配编号时,为了方便后续在已有规则之前插入新的规则,系统通常会在相邻编号之间留下一定的空间,这个空间的大小(即相邻编号之间的差值)就称为ACL的步长。譬如,当步长为5时,系统会将编号0、5、10、15……依次分配给新创建的规则。
系统为规则自动分配编号的方式如下:系统从0开始,按照步长自动分配一个大于现有最大编号的最小编号的编号。譬如原有编号为0、5、9、10和12的五条规则,步长为5,此时如果创建一条规则且不指定编号,那么系统将自动为其分配编号15。
如果步长发生了改变,ACL内原有全部规则的编号都将自动从0开始按新步长重新排列。譬如,某ACL内原有编号为0、5、9、10和15的五条规则,当修改步长为2之后,这些规则的编号将依次变为0、2、4、6和8。
需要注意的是,ACL规则的匹配顺序为自动排序时,修改步长后新的编号是按照规则的匹配顺序(即“深度优先”原则)重新排序的,并非按照规则的原有编号顺序排序。譬如,步长为5时,规则的匹配顺序为0、10、5……修改步长为2后,各规则对应的新编号为0、2、4……
传统报文过滤只对分片报文的首个分片进行匹配过滤,对后续分片一律放行,因此网络攻击者通常会构造后续分片进行流量攻击。为提高网络安全性,ACL规则缺省会匹配所有非分片报文和分片报文的全部分片,但这样又带来效率低下的问题。为了兼顾网络安全和匹配效率,可将过滤规则配置为仅对后续分片有效。
通过编号创建的ACL,可以通过如下命令进入其视图:
· acl [ ipv6 ] number acl-number;
· acl { [ ipv6 ] { advanced | basic } | mac | user-defined } acl-number。
通过acl [ ipv6 ] number acl-number name acl-name命令指定名称创建的ACL,可以使用如下命令进入其视图:
· acl [ ipv6 ] name acl-name,本命令仅支持进入已创建的基本或高级ACL视图;
· acl [ ipv6 ] number acl-number [ name acl-name ];
· acl { [ ipv6 ] { advanced | basic } | mac | user-defined } name acl-name。
通过acl { [ ipv6 ] { advanced | basic } | mac | user-defined } name acl-name命令指定名称创建的ACL,可以使用如下命令进入其视图:
· acl [ ipv6 ] name acl-name,本命令仅支持进入已创建的基本或高级ACL视图;
· acl { [ ipv6 ] { advanced | basic } | mac | user-defined } name acl-name。
表1-3 ACL配置任务简介
配置任务 |
说明 |
详细配置 |
配置基本ACL |
请根据需要匹配的报文特征选择ACL类型 |
|
配置高级ACL |
||
配置二层ACL |
||
配置用户自定义ACL |
||
复制ACL |
可选 |
|
配置QoS和ACL资源的共享模式 |
可选 |
|
配置QoS和ACL资源的硬件模式 |
可选 |
|
应用ACL进行报文过滤 |
可选 |
基本ACL可以应用在设备管理、组播业务、QoS业务和路由策略等场景中,典型应用场景如下:
· 当设备作为FTP、TFTP服务器时,为提高其安全性,可以通过配置基本ACL实现只允许满足过滤条件的客户端访问服务器。关于使用基本ACL限制客户端访问设备的详细内容,请参见“基础配置指导”中的“FTP和TFTP”。
· 在组播场景中,通过配置基本ACL,设备可以作为组播数据过滤器实现只接收或转发满足过滤条件的组播报文。关于组播数据过滤器的详细介绍,请参见“IP组播配置指导”中的“PIM”和“IPv6 PIM”。
· 当需要控制设备接收、发布的路由信息时,可以通过配置基本ACL作为路由策略的过滤器,来实现只接收或发布满足过滤条件的路由。关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 当需要对不同类型的流量进行分类操作时,可以通过配置基本ACL实现对满足过滤条件的流量进行流量监管、流量整形、流分类。关于流量监管、流量整形、流分类的详细介绍,请参见“ACL和QoS配置指导”中的“QoS”。
IPv4基本ACL根据报文的源IP地址来制订规则,对IPv4报文进行匹配。
表1-4 配置IPv4基本ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IPv4基本ACL,并进入IPv4基本ACL视图 |
acl basic { acl-number | name acl-name } [ match-order { auto | config } ] acl number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情况下,不存在ACL IPv4基本ACL的编号范围为2000~2999 使用ACL编号创建IPv4基本ACL时,设备提供以下两种方法: · 通过acl number acl-number命令创建 · 通过acl basic acl-number命令创建 如果以名称创建IPv4基本ACL,可以使用acl name acl-name命令或acl basic name acl-name命令进入其视图 acl name acl-name命令仅支持进入已创建的IPv4基本或IPv4高级ACL视图 如果以编号创建IPv4基本ACL,可以使用acl number acl-number命令或acl basic acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
(可选)配置规则编号的步长 |
step step-value |
缺省情况下,规则编号的步长为5 |
创建规则 |
rule [ rule-id ] { deny | permit } [ counting | fragment | [ flow-logging | logging ] | source { source-address source-wildcard | any } | time-range time-range-name | vpn-instance vpn-instance-name ] * |
缺省情况下,IPv4基本ACL内不存在规则 flow-logging与logging参数需要使用该ACL的模块支持日志记录功能,例如报文过滤 出方向上不支持匹配VPN实例 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
IPv6基本ACL根据报文的源IPv6地址来制订规则,对IPv6报文进行匹配。
表1-5 配置IPv6基本ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IPv6基本ACL,并进入IPv6基本ACL视图 |
acl ipv6 basic { acl-number | name acl-name } [ match-order { auto | config } ] acl ipv6 number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情况下,不存在ACL IPv6基本ACL的编号范围为2000~2999 使用ACL编号创建IPv6基本ACL时,设备提供以下两种方法: · 通过acl ipv6 number acl-number命令创建 · 通过acl ipv6 basic acl-number命令创建 如果以名称创建IPv6基本ACL,可以使用acl ipv6 name acl-name命令或acl ipv6 basic name acl-name命令进入其视图 acl ipv6 name acl-name命令仅支持进入已创建的IPv6基本或IPv6高级ACL视图 如果以编号创建IPv6基本ACL,可以使用acl ipv6 number acl-number命令或acl ipv6 basic acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
(可选)配置规则编号的步长 |
step step-value |
缺省情况下,规则编号的步长为5 |
创建规则 |
rule [ rule-id ] { deny | permit } [ counting | [ flow-logging | logging ] | routing | source { source-address source-prefix | source-address/source-prefix | any } | time-range time-range-name | vpn-instance vpn-instance-name ] * |
缺省情况下,IPv6基本ACL内不存在规则 flow-logging与logging参数需要使用该ACL的模块支持日志记录功能,例如报文过滤 匹配了routing参数的ACL规则不支持应用在QoS策略和包过滤的出方向上 出方向上不支持匹配VPN实例 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
高级ACL可以应用在设备管理、组播业务、QoS业务和路由策略等场景中,典型应用场景如下:
· 当设备作为FTP、TFTP服务器时,为提高其安全性,可以通过配置高级ACL实现只允许满足过滤条件的客户端访问服务器。关于使用高级ACL限制客户端访问设备的详细内容,请参见“基础配置指导”中的“FTP和TFTP”。
· 在组播场景中,通过配置高级ACL,设备可以作为组播数据过滤器实现只接收或转发满足过滤条件的组播报文。关于组播数据过滤器的详细介绍,请参见“IP组播配置指导”中的“PIM”和“IPv6 PIM”。
· 当需要控制设备接收、发布的路由信息时,可以通过配置高级ACL作为路由策略的过滤器,来实现只接收或发布满足过滤条件的路由。关于路由策略的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
· 当需要对不同类型的流量进行分类操作时,可以通过配置高级ACL实现对满足过滤条件的流量进行流量监管、流量整形、流分类。关于流量监管、流量整形、流分类的详细介绍,请参见“ACL和QoS配置指导”中的“QoS”。
IPv4高级ACL可根据报文的源IP地址、目的IP地址、报文优先级、IP承载的协议类型及特性(如TCP/UDP的源端口和目的端口、TCP报文标识、ICMP协议的消息类型和消息码等)等信息来制定规则,对IPv4报文进行匹配。用户可利用IPv4高级ACL制订比IPv4基本ACL更准确、丰富、灵活的规则。
表1-6 配置IPv4高级ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IPv4高级ACL,并进入IPv4高级ACL视图 |
acl advanced { acl-number | name acl-name } [ match-order { auto | config } ] acl number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情况下,不存在ACL IPv4高级ACL的编号范围为3000~3999 使用ACL编号创建IPV4高级ACL时,设备提供以下两种方法: · 通过acl number acl-number命令创建 · 通过acl advanced acl-number命令创建 如果以名称创建IPv4高级ACL,可以使用acl name acl-name命令或acl advanced name acl-name命令进入其视图 acl name acl-name命令仅支持进入已创建的IPv4基本或IPv4高级ACL视图 如果以编号创建IPv4高级ACL,可以使用acl number acl-number命令或acl advanced acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
(可选)配置规则编号的步长 |
step step-value |
缺省情况下,规则编号的步长为5 |
创建规则(请至少选择其中一项进行配置) |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { microsegment microsegment-id [ mask-length mask-length ] | object-group address-group-name | dest-address dest-wildcard | any } | destination-port operator port1 [ port2 ] | { { precedence precedence | tos tos } * | { precedence precedence | ecn ecn } * | { dscp dscp | ecn ecn } * } | fragment | icmp-type { icmp-type [ icmp-code ] | icmp-message } | [ flow-logging | logging ] | qos-local-id local-id-value | source { microsegment microsegment-id [ mask-length mask-length ] | source-address source-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-range-name | vpn-instance vpn-instance-name ] * |
flow-logging与logging参数需要使用该ACL的模块支持日志记录功能,例如报文过滤 匹配了qos-local-id参数的ACL规则不支持应用在QoS策略和包过滤的出方向上 出方向上不支持匹配VPN实例 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
IPv6高级ACL可根据报文的源IPv6地址、目的IPv6地址、报文优先级、IPv6承载的协议类型及特性(如TCP/UDP的源端口和目的端口、TCP报文标识、ICMPv6协议的消息类型和消息码等)等信息来制定规则,对IPv6报文进行匹配。用户可利用IPv6高级ACL制订比IPv6基本ACL更准确、丰富、灵活的规则。
当规则配置为匹配IPv6五元组并且用eq(等于)方式匹配L4端口号时,不支持在SE系列接口板下发。此时匹配端口号可使用range(在范围内,包括边界值)方式替换。
表1-7 配置IPv6高级ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建IPv6高级ACL,并进入IPv6高级ACL视图 |
acl ipv6 advanced { acl-number | name acl-name } [ match-order { auto | config } ] acl ipv6 number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情况下,不存在ACL IPv6高级ACL的编号范围3000~3999 使用ACL编号创建IPv6高级ACL时,设备提供以下两种方法: · 通过acl ipv6 number acl-number命令创建 · 通过acl ipv6 advanced acl-number命令创建 如果以名称创建IPv6高级ACL,可以使用acl ipv6 name acl-name命令或acl ipv6 advanced name acl-name命令进入其视图 acl ipv6 name acl-name命令仅支持进入已创建的IPv6基本或IPv6高级ACL视图 如果以编号创建IPv6高级ACL,可以使用acl ipv6 number acl-number命令或acl ipv6 advanced acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
(可选)配置规则编号的步长 |
step step-value |
缺省情况下,规则编号的步长为5 |
创建规则(请至少选择其中一项进行配置) |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { microsegment microsegment-id [ mask-length mask-length ] | dest-address dest-prefix | dest-address/dest-prefix | any } | destination-port operator port1 [ port2 ] | { dscp dscp | ecn ecn } * | flow-label flow-label-value | icmp6-type { icmp6-type icmp6-code | icmp6-message } | [ flow-logging | logging ] | qos-local-id local-id-value | routing | hop-by-hop [ type hop-type ] | source { microsegment microsegment-id [ mask-length mask-length ] | source-address source-prefix | source-address/source-prefix | any } | source-port operator port1 [ port2 ] | time-range time-range-name | vpn-instance vpn-instance-name ] * |
缺省情况下,IPv6高级ACL内不存在规则 flow-logging与logging参数需要使用该ACL的模块支持日志记录功能,例如报文过滤 匹配了qos-local-id、routing、hop-by-hop参数的ACL规则不支持应用在QoS策略和包过滤的出方向上 出方向上不支持匹配VPN实例 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
二层ACL可以应用在设备管理和QoS业务等场景中,典型应用场景如下:
· 当设备作为Telnet服务器时,为提高其安全性,可以通过配置二层ACL实现只允许满足过滤条件的客户端访问服务器。关于使用二层ACL限制客户端访问设备的详细内容,请参见“基础配置指导”中的“登录设备”。
· 当需要对不同类型的流量进行分类操作时,可以通过配置二层ACL实现对满足过滤条件的流量进行流量监管、流量整形、流分类。关于流量监管、流量整形、流分类的详细介绍,请参见“ACL和QoS配置指导”中的“QoS”。
二层ACL可根据报文的源MAC地址、目的MAC地址、802.1p优先级、链路层协议类型等二层信息来制订规则,对报文进行匹配。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建二层ACL,并进入二层ACL视图 |
acl mac { acl-number | name acl-name } [ match-order { auto | config } ] acl number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情况下,不存在ACL 二层ACL的编号范围为4000~4999 使用ACL编号创建二层ACL时,设备提供以下两种方法: · 通过acl number acl-number命令创建 · 通过acl mac acl-number命令创建 如果以名称创建二层ACL,只能使用acl mac name acl-name命令进入其视图 如果以编号创建二层ACL,可以使用acl number acl-number命令或acl mac acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
(可选)配置规则编号的步长 |
step step-value |
缺省情况下,规则编号的步长为5 |
创建规则(请至少选择其中一项进行配置) |
rule [ rule-id ] { deny | permit } [ cos dot1p | counting | dest-mac dest-address dest-mask | { lsap lsap-type lsap-type-mask | type protocol-type protocol-type-mask } | source-mac source-address source-mask | time-range time-range-name ] * |
缺省情况下,二层ACL内不存在规则 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
用户自定义ACL可以以报文头为基准,指定从报文的第几个字节开始与掩码进行“与”操作,并将提取出的字符串与用户定义的字符串进行比较,从而找出相匹配的报文。
暂不支持在同一用户自定义ACL中同时创建匹配IPv4和IPv6地址的规则。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建用户自定义ACL,并进入用户自定义ACL视图 |
acl user-defined { acl-number | name acl-name } acl number acl-number [ name acl-name ] |
缺省情况下,不存在ACL 用户自定义ACL的编号范围为5000~5999 使用ACL编号创建用户自定义ACL时,设备提供以下两种方法: · 通过acl number acl-number命令创建 · 通过acl user-defined acl-number命令创建 如果以名称创建用户自定义ACL,只能使用acl user-defined name acl-name命令进入其视图 如果以编号创建用户自定义ACL,可以使用acl user-defined acl-number 命令或acl user-defined acl-number命令进入其视图 两个视图独立,只能通过各自的命令访问各自的视图 |
(可选)配置ACL的描述信息 |
description text |
缺省情况下,ACL没有描述信息 |
创建规则(请至少选择其中一项进行配置) |
命令形式一: rule [ rule-id ] { deny | permit } [ { { l2 | l4 } rule-string rule-mask offset }&<1-8> ] [ counting | time-range time-range-name ] * 命令形式二: rule [ rule-id ] { deny | permit } [ ipv6-protocol ] protocol [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | destination { dest-address dest-wildcard | any | microsegment microsegment-id [ mask-length mask-length ] } | destination-port { operator port1 [ port2 ] } | { { precedence precedence | tos tos } * | { precedence precedence | ecn ecn } * | { dscp dscp | ecn ecn } * } | source { source-address source-wildcard | any | microsegment microsegment-id [ mask-length mask-length ] } | source-port { operator port1 [ port2 ] } | udf-format | vpn-instance vpn-instance-name ] * [ { { l2 | l4 } rule-string rule-mask offset }&<1-8> ] [ counting | time-range time-range-name ] * 命令形式三: rule [ rule-id ] { deny | permit } dual-stack { tcp | udp } [ { { ack ack-value | fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | destination { any | microsegment microsegment-id [ mask-length mask-length ] } | destination-port { operator port1 [ port2 ] } | source { any | microsegment microsegment-id [ mask-length mask-length ] } | source-port { operator port1 [ port2 ] } | vpn-instance vpn-instance-name ] * [ counting | time-range time-range-name ] * |
缺省情况下,用户自定义ACL内不存在规则 仅SH系列接口板支持配置L4报文头偏移并且L4报文头偏移不支持匹配IP报头后接TCP、UDP、GRE或IPv6扩展头部的L4报文 |
(可选)为规则配置描述信息 |
rule rule-id comment text |
缺省情况下,规则没有描述信息 |
(可选)为规则配置注释信息 |
rule [ rule-id ] remark text |
缺省情况下,未配置规则的注释信息 |
用户可通过复制一个已存在的ACL(即源ACL),来生成一个新的同类型ACL(即目的ACL)。除了ACL的编号和名称不同外,目的ACL与源ACL完全相同。
目的ACL要与源ACL的类型相同,且目的ACL必须不存在,否则将导致复制失败。
表1-10 复制ACL
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
复制并生成一个新的ACL |
acl [ ipv6 | mac | user-defined ] copy { source-acl-number | name source-acl-name } to { dest-acl-number | name dest-acl-name } |
- |
共享模式(即在应用QoS策略时指定share-mode关键字)指的是在属于同一接口组的多个接口上应用同一个QoS策略时,所有应用将共享一份QoS和ACL资源。而非共享模式时,每个位置的应用都会独占一份QoS和ACL资源。所以共享模式能极大的节省QoS和ACL资源。
通过display qos-acl resource命令可以查看接口与接口组的对应关系,每个“Interfaces:”后面罗列的接口属于同一接口组。
QoS和ACL资源的共享模式。仅支持取值为preemtion:此模式下,如果希望在接口上应用的各个类型的QoS策略都按照共享模式生效,则应用时必需指定share-mode关键字。
在未配置本命令的情况下,接口相同方向上仅支持以共享模式应用一个QoS策略。
有关QoS策略及其共享模式的详细介绍,请参见“ACL和QoS命令参考”中的“QoS”。
对于preemtion模式:仅对执行qos-acl resource share-mode命令后新应用的QoS策略生效,如果希望对执行命令前已经应用的QoS策略也生效,请选择如下方式之一操作:
· 执行save命令保存当前配置,然后重启设备。
· 执行本命令前,取消已应用的QoS策略,并在执行本命令后重新应用。
表1-11 配置QoS和ACL资源的共享模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ACL的共享模式 |
qos-acl resource share-mode inbound share-mode |
缺省情况下,ACL资源未配置任何共享模式 |
由于设备底层芯片差异,导致QoS和ACL资源匹配的报文结果有差异,硬件模式能够增强QoS和ACL资源的匹配能力。
inbound-portrange-enhanced模式仅对执行qos-acl resource hardware-mode命令后新应用的ACL规则生效,如果希望对执行命令前已经应用的ACL规则也生效,请选择如下方式之一操作:
· 执行save命令保存当前配置,然后重启设备。
· 执行本命令前,取消已应用的ACL规则,并在执行本命令后重新应用。
配置inbound-portrange-enhanced模式后,对于以范围方式匹配四层端口号的ACL规则,下发后设备会使用掩码对其进行拆分,以减少对QoS和ACL资源位宽的占用。
仅以下单板支持配置本功能:
· FD系列接口板
· SH系列接口板
表1-12 配置QoS和ACL资源的硬件模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置QoS和ACL资源的硬件模式 |
qos-acl resource hardware-mode hardware-mode-value |
缺省情况下,QoS和ACL资源未配置任何硬件模式 |
ACL最基本的应用就是进行报文过滤。例如,将ACL规则应用到指定接口或全局的入或出方向上,从而对该接口收到或发出的报文进行过滤。
一个接口在一个方向上最多可应用4个ACL进行报文过滤,包括一个IPv4 ACL(IPv4基本ACL或IPv4高级ACL)、一个IPv6 ACL(IPv6基本ACL或IPv6高级ACL)、一个二层ACL以及一个用户自定义ACL。
二层聚合接口、三层聚合接口和三层聚合子接口仅在入方向支持应用ACL进行报文过滤。
表1-13 在接口上应用ACL进行报文过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接口视图 |
interface interface-type interface-number |
- |
在接口上应用ACL进行报文过滤 |
packet-filter [ ipv6 | mac | user-defined ] { acl-number | name acl-name } { inbound | outbound } [ hardware-count ] |
缺省情况下,接口不对报文进行过滤 |
表1-14 在全局应用ACL进行报文过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
在全局应用ACL进行报文过滤 |
packet-filter [ ipv6 | mac | user-defined ] { acl-number | name acl-name } global { inbound | outbound } [ hardware-count ] |
缺省情况下,全局不对报文进行过滤 |
· 全局应用ACL进行报文过滤失败时,设备上所有单板应用的ACL报文过滤都会失效。
· 全局在一个方向上最多可应用4个ACL进行报文过滤,包括一个IPv4 ACL(IPv4基本ACL或IPv4高级ACL)、一个IPv6 ACL(IPv6基本ACL或IPv6高级ACL)、一个二层ACL以及一个用户自定义ACL。
一个VLAN接口列表在一个方向上最多可应用4个ACL进行报文过滤,包括一个IPv4 ACL(IPv4基本ACL或IPv4高级ACL)、一个IPv6 ACL(IPv6基本ACL或IPv6高级ACL)、一个二层ACL以及一个用户自定义ACL。
对于同一VLAN接口的同一个方向,可以在VLAN接口视图下配置packet-filter命令实现报文过滤功能,也可以在系统视图下配置packet-filter vlan-interface命令实现报文过滤功能,但二者不可同时配置。
VLAN接口列表上应用ACL进行报文过滤仅对三层转发的报文生效。
当动态修改VLAN接口列表上报文过滤引用的ACL规则时,有可能引起丢包或漏包,请谨慎操作。
在同一方向上应用相同ACL配置VLAN接口列表的报文过滤功能时,多次执行本命令会向VLAN接口列表中添加新的VLAN接口:
· 如果初始配置时携带了hardware-count参数,则向VLAN接口列表中添加VLAN接口时,必须携带该参数;
· 如果初始配置时未携带hardware-count参数,则向VLAN接口列表中添加VLAN接口时,不能携带该参数。
表1-15 在VLAN接口列表上应用ACL进行报文过滤
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
在VLAN接口列表上应用ACL进行报文过滤 |
packet-filter [ ipv6 | mac | user-defined ] { acl-number | name acl-name } vlan-interface vlan-interface-list { inbound | outbound } [ hardware-count ] |
缺省情况下,未配置VLAN接口的报文过滤 |
在VLAN接口下应用ACL进行报文过滤时,可以通过本功能指定报文过滤的生效范围:
· 仅对三层转发的报文生效。
· 对所有报文生效,即通过VLAN接口进行三层转发的报文和通过VLAN接口对应的物理接口进行二层转发的报文均生效。
表1-16 配置报文过滤在VLAN接口的生效范围
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VLAN接口并进入VLAN接口视图 |
interface vlan-interface vlan-interface-id |
如果该VLAN接口已经存在,则直接进入该VLAN接口视图 缺省情况下,未创建VLAN接口 |
配置报文过滤的生效范围 |
packet-filter filter { route | all } |
|
在配置了报文过滤日志的生成与发送周期之后,设备将周期性地生成报文过滤日志信息并发送到信息中心或生成告警信息并发送到SNMP模块,包括该周期内被匹配的报文数量以及所使用的ACL规则。同时,还会对匹配规则的数据流的第一个数据包进行记录并送到信息中心或SNMP模块。有关信息中心的详细介绍请参见“网络管理和监控配置指导”中的“信息中心”。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
表1-17 配置报文过滤日志信息或告警信息的生成与发送周期
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置报文过滤日志信息或告警信息的生成与发送周期 |
acl { logging | trap } interval interval |
缺省情况下,报文过滤日志信息或告警信息的生成与发送周期为0分钟,即不记录报文过滤的日志 |
系统缺省的报文过滤动作为Permit,即允许未匹配上ACL规则的报文通过。通过本配置可更改报文过滤的缺省动作为Deny,即禁止未匹配上ACL规则的报文通过。
表1-18 配置报文过滤的缺省动作为deny
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置报文过滤的缺省动作为Deny |
packet-filter default deny |
缺省情况下,报文过滤的缺省动作为Permit,即允许未匹配上ACL规则的报文通过 |
在完成上述配置后,在任意视图下执行display命令可以显示ACL配置后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除ACL的统计信息。
表1-19 ACL显示和维护
配置 |
命令 |
显示ACL的配置和运行情况 |
display acl [ ipv6 | mac | user-defined ] { acl-number | all | name acl-name } |
显示ACL在报文过滤中的应用情况(独立运行模式) |
display packet-filter { global | interface [ interface-type interface-number ] | vlan-interface } [ inbound | outbound ] [ slot slot-number ] |
显示ACL在报文过滤中的应用情况(IRF模式) |
display packet-filter { global | interface [ interface-type interface-number ] | vlan-interface } [ inbound | outbound ] [ chassis chassis-number slot slot-number ] |
显示ACL在报文过滤中应用的统计信息以及报文过滤缺省动作的统计信息 |
display packet-filter statistics { global | interface interface-type interface-number | vlan-interface } { inbound | outbound } [ [ ipv6 | mac | user-defined ] { acl-number | name acl-name } ] [ brief ] |
显示ACL在报文过滤中应用的累加统计信息 |
display packet-filter statistics sum { inbound | outbound } [ ipv6 | mac | user-defined ] { acl-number | name acl-name } [ brief ] |
显示ACL在报文过滤中的详细应用情况(独立运行模式) |
display packet-filter verbose { global | interface interface-type interface-number | vlan-interface } { inbound | outbound } [ [ ipv6 | mac | user-defined ] { acl-number | name acl-name } ] [ slot slot-number ] |
显示ACL在报文过滤中的详细应用情况(IRF模式) |
display packet-filter verbose { global | interface interface-type interface-number | vlan-interface } { inbound | outbound } [ [ ipv6 | mac | user-defined ] { acl-number | name acl-name } ] [ chassis chassis-number slot slot-number ] |
显示QoS和ACL资源的使用情况(独立运行模式) |
display qos-acl resource [ advanced-mode ] [ slot slot-number ] |
显示QoS和ACL资源的使用情况(IRF模式) |
display qos-acl resource [ advanced-mode ] [ chassis chassis-number slot slot-number ] |
清除ACL的统计信息 |
reset acl [ ipv6 | mac | user-defined ] counter { acl-number | all | name acl-name } |
清除ACL在报文过滤中应用的统计信息、累加统计信息以及报文过滤缺省动作的统计信息 |
reset packet-filter statistics { global | interface [ interface-type interface-number ] | vlan-interface } { inbound | outbound } [ [ ipv6 | mac | user-defined ] { acl-number | name acl-name } ] |
· 某公司内的各部门之间通过Device实现互连,该公司的工作时间为每周工作日的8点到18点。
· 通过配置,允许总裁办在任意时间、财务部在工作时间访问财务数据库服务器,禁止其它部门在任何时间、财务部在非工作时间访问该服务器。
图1-1 ACL典型配置组网图
# 创建名为work的时间段,其时间范围为每周工作日的8点到18点。
<Device> system-view
[Device] time-range work 08:00 to 18:00 working-day
# 创建IPv4高级ACL 3000,并制订如下规则:允许总裁办在任意时间、财务部在工作时间访问财务数据库服务器,禁止其它部门在任何时间、财务部在非工作时间访问该服务器。
[Device] acl advanced 3000
[Device-acl-ipv4-adv-3000] rule permit ip source 192.168.1.0 0.0.0.255 destination 192.168.0.100 0
[Device-acl-ipv4-adv-3000] rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.0.100 0 time-range work
[Device-acl-ipv4-adv-3000] rule deny ip source any destination 192.168.0.100 0
[Device-acl-ipv4-adv-3000] quit
# 应用IPv4高级ACL 3000对接口GigabitEthernet1/0/1出方向上的报文进行过滤。
[Device] interface gigabitethernet 1/0/1
[Device-GigabitEthernet1/0/1] packet-filter 3000 outbound
[Device-GigabitEthernet1/0/1] quit
配置完成后,在各部门的PC(假设均为Windows XP操作系统)上可以使用ping命令检验配置效果,在Device上可以使用display acl命令查看ACL的配置和运行情况。例如在工作时间:
# 在财务部的PC上检查到财务数据库服务器是否可达。
C:\> ping 192.168.0.100
Pinging 192.168.0.100 with 32 bytes of data:
Reply from 192.168.0.100: bytes=32 time=1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Reply from 192.168.0.100: bytes=32 time<1ms TTL=255
Ping statistics for 192.168.0.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
由此可见,财务部的PC能够在工作时间访问财务数据库服务器。
# 在市场部的PC上检查财务数据库服务器是否可达。
C:\> ping 192.168.0.100
Pinging 192.168.0.100 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.0.100:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
由此可见,市场部的PC不能在工作时间访问财务数据库服务器。
# 查看IPv4高级ACL 3000的配置和运行情况。
[Device] display acl 3000
Advanced IPv4 ACL 3000, 3 rules,
ACL's step is 5
rule 0 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.0.100 0
rule 5 permit ip source 192.168.2.0 0.0.0.255 destination 192.168.0.100 0 time-range work (Active)
rule 10 deny ip destination 192.168.0.100 0
由此可见,由于目前是工作时间,因此规则5是生效的;且由于之前使用了ping命令的缘故,规则5和规则10分别被匹配了4次。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!