以下内容摘自笔者2009年度巨作,获得多项大奖,并且已成功重印的图书《Cisco/H3C交换机配置与管理完全手册》.
19.2.2基本ACL配置
基本ACL只根据源IP地址信息制定匹配规则,对报文进行相应的分析处理。其序号取值范围为2000~2999。
如果要配置带有时间段参数的规则,则需要定义相应的时间段。参见19.2.1节。
1.基本ACL的配置方法
配置基本ACL的步骤如表19-1所示。
表19-1配置基本ACL的步骤
命令 | 用途说明 | |
Step 1 | system-view | 进入系统视图 |
Step 2 | 适用于S5600及以前系列:acl numberacl-number[nameacl-name][match-order{auto|config} ] 适用于S7500及以后系列:acl { numberacl-number |nameacl-name[ advanced | basic | link | user ] } [ match-order { config | auto } ] | 创建基本ACL并进入基本ACL视图(二者选其一)。缺省情况下,匹配顺序为config 如果用户在创建ACL时指定了名称,则之后可以通过aclnameacl-name命令进入指定名称的ACL视图 |
Stepo 3 | rule[rule-id] {deny|permit} [fragment|logging|source{sour-addr sour-wildcard|any} |time-rangetime-name|vpn-instancevpn-instance-name] | 定义规则。可以重复本步骤创建多条规则 需要注意的是,当基本ACL被QoS策略引用对报文进行流分类时,不支持配置logging和vpn-instance参数。而且各个系列所支持的可选项和参数并不完全一样。如中低档的系列不支持vpn-instance可选项和参数 |
Step 4 | stepstep-value | (可选)定义步长。缺省情况下,步长为5 |
Step 5 | descriptiontext | (可选)定义ACL的描述信息。缺省情况下,ACL没有描述信息 |
Step 6 | rulerule-idcommenttext | (可选)定义规则的描述信息。缺省情况下,规则没有描述信息 |
表中的两个acl命令用来定义一条数字或名字标识的ACL,并进入相应的ACL视图。可用“undo acl”命令用来删除一条数字或名字标识的ACL的所有规则,或者删除全部ACL。
缺省情况下,按用户的配置顺序匹配ACL。进入相应的ACL视图之后,可以用rule命令增加此命名ACL规则(用quit命令退出ACL视图)。这两个命令的可选项和参数解释如下:
nnumberacl-number:ACL序号,取值范围为:
Ø2000~2999:表示基本ACL。
Ø3000~3999:表示高级ACL(ACL 3998与3999是系统为集群管理预留的编号,用户无法配置)。
Ø4000~4999:表示二层ACL。
Ø5000~5999:表示用户自定义ACL。
nnameacl-name:ACL名字,最多32个字符,必须以英文字母(即[a-z,A-Z])开始,而且中间不能有空格和引号;不区分大小写,不允许使用关键字all。
nadvanced:表示高级ACL。
nbasic:表示基本ACL。
nlink:表示二层ACL。
nuser:表示用户自定义ACL。
nconfig:表示按用户的配置顺序匹配ACL规则。
nauto:表示按深度优先顺序匹配ACL规则。
nall:表示要删除所有的ACL(包括数字标识的和名字标识的)。
缺省情况下,ACL的匹配顺序为config。
用户也可以通过本命令修改一个已经存在的ACL的匹配顺序,但必须在该ACL中没有规则的时候修改,对已经有规则的ACL是无法修改其匹配顺序的。
【注意】用户只能在创建ACL时指定名称,ACL创建后不允许对名称进行修改或者删除。如果在创建时没有命名,则创建后也不能为其添加名称。
如果ACL序号所指定的ACL不存在,则创建ACL并进入ACL视图。若命令中同时指定了名称,则指定的ACL名称不能与已有ACL名称重复,但允许与IPv6 ACL使用相同的名称。
如果ACL序号所指定的ACL已经存在,则进入该ACL视图。若命令中同时指定了名称,则该名称必须与序号所确定的ACL名称保持一致。
下面是一个使用acl命令创建一个序号为2000的ACL,未命名的示例。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]
下面是一个使用acl命令创建一个序号为2002、名称为flow的ACL的示例。
<Sysname>system-view
[Sysname]acl number2002nameflow
[Sysname-acl-basic-2002-flow]
下面是一个使用acl命令使用ACL序号进入一个未命名的ACL视图的示例。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]
表中的rule命令用来定义一个基本ACL规则。可用“undorulerule-id[fragment|logging|source|time-range|vpn-instance]”命令删除一个基本ACL规则或者规则的某些属性信息。在删除一条规则时,需要指定该规则的编号。如果用户不知道规则的编号,可以使用display acl命令来查看。如果undorule命令后不指定参数,将删除整个ACL规则,否则,将只删除ACL规则相应的属性信息。这两个命令的可选项和参数解释如下:
nrule-id:基本ACL规则编号,取值范围为0~65534。
ndeny:表示丢弃符合条件的报文。
npermit:表示允许符合条件的报文通过。
nfragment:定义规则仅对分片报文有效。需要注意的是,在SA(例如LSQ1FP48SA)和EA(例如LSQ1GP12EA)单板上应用的fragment参数匹配非尾片分片报文,在SC(例如LSQ1GP24SC)单板上应用的fragment参数匹配非首片分片报文。关于单板类型的详细介绍请参见安装手册。
nlogging:对符合条件的报文可记录日志信息。
nsource{sour-addr sour-wildcard|any}:指定规则的源地址信息。sour-addr表示报文的源IP地址,sour-wildcard表示反掩码(当反掩码为0时代表主机地址),例如,如果用户想指定子网掩码255.255.0.0,则需要输入0.0.255.255。any表示任意源IP地址。
ntime-rangetime-name:指定规则生效的时间段。time-name表示时间段的名称,为1~32个字符的字符串,不区分大小写,必须以英文字母a~z或A~Z开头,为避免混淆,时间段的名字不可以使用英文单词all。
nvpn-instancevpn-instance-name:指定VPN实例信息。vpn-instance-name表示VPN实例的名称,为1~31个字符的字符串,区分大小写。如果规则没有指定本参数,表示该规则仅对非VPN报文生效。
【注意】当ACL的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
在定义一条ACL规则的时候,用户可以不指定规则编号,这时,系统会从0开始,按照一定的编号步长,自动为规则分配一个大于现有最大编号的最小编号。假设现有规则的最大编号是28,编号步长是5,那么系统分配给新定义的规则的编号将是30。
新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
当ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
当基本ACL被QoS策略引用对报文进行流分类时,不支持配置logging和vpn-instance参数。
下面是一个使用rule命令定义一条基本ACL规则,禁止源地址为1.1.1.1的报文通过的示例。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]rule deny source1.1.1.1 0
表19-1中的step命令用来为一个ACL规则组中的规则序号指定一个步长。step-value:参数用来指定ACL规则编号的步长值,取值范围为1~20。缺省情况下,步长为5。可用“undo step”命令把步长恢复为缺省值。
下面是一个使用step命令把基本ACL 2000的步长改为2的示例(该命令可同时用于高级ACL和二层ACL的步长设置)。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]step2
表19-1中的description命令用来定义ACL的描述信息,描述该ACL的具体用途。text:ACL的描述信息,为1~127个字符的字符串,区分大小写。缺省情况下,ACL没有描述信息。可用“undo description”命令用来删除ACL的描述信息。
下面是一个使用description命令定义基本ACL 2000的描述信息的示例(该命令可同时用于描述高级ACL和二层ACL)。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]descriptionThis acl is used in eth 2/0/1
表中的“rule comment”命令用来定义ACL规则的描述信息,描述该规则的用途、属性等提示信息。可用“undo rulerule-idcomment”命令删除ACL规则的描述信息。这两个命令的可选项和参数解释如下:
nrule-id:ACL规则编号,取值范围为0~65534。
ntext:ACL规则的描述信息,为1~127个字符的字符串,区分大小写。
缺省情况下,规则没有描述信息。
【注意】在使用rule comment命令为规则定义描述信息时,该规则必须存在。如果指定规则没有描述信息,则为其添加描述信息;如果指定规则已经存在描述信息,则修改其描述信息。
下面是一个使用“rule comment”命令为基本ACL 2000定义一条规则,并为规则定义一个描述信息的示例(该命令可同时用于高级ACL和二层ACL规则定义描述信息)。
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]rule0deny source1.1.1.1 0
[Sysname-acl-basic-2000]rule0commentThis rule is used in eth 2/0/1
2基本ACL配置示例
本示例是要配置一个基本ACL 2000,禁止源IP地址为1.1.1.1的报文通过。具体配置命令和显示信息如下:
<Sysname>system-view
[Sysname]acl number2000
[Sysname-acl-basic-2000]rule deny source1.1.1.1 0
[Sysname-acl-basic-2000]display acl2000
Basic ACL 2000, named -none-, 1 rule,
ACL's step is 5
rule 0 deny source1.1.1.1 0