07-ACL配置
本章节下载: 07-ACL配置 (179.47 KB)
目 录
网络设备为了过滤数据包,需要配置一系列的匹配规则,以识别需要过滤的对象。在识别出特定的对象之后,才能根据预先设定的策略允许或禁止相应的数据包通过。ACL(Access Control List,访问控制列表)就是用来实现这些功能。
ACL 根据一系列的匹配条件对数据包进行分类,这些条件可以是数据包的源地址、目的地址、端口号等。OLT根据ACL 中指定的条件来检测数据包,从而决定是转发还是丢弃该数据包。
由ACL 定义的数据包匹配规则,还可以被其它需要对流进行区分的场合引用,如QoS 中流分类规则的定义。
一条访问控制规则可以由多条“permit | deny”语句组成,而每一条语句指定的数据包的范围大小有别,在匹配一个数据包和访问控制规则的时候就存在匹配顺序的问题。可以用下面的命令设置访问控制规则的匹配顺序:
acl access-list-number match-order { config | auto }
参数说明:
access-list-number:访问控制规则序号,1 到399之间的数字。
config:指定匹配该规则时按用户的配置顺序。
auto:指定匹配该规则时系统自动排序。(按“深度优先”的顺序)缺省情况下匹配顺序为按用户的配置排序,即“config”。用户一旦指定某一条访问控制规则的匹配顺序,就不能再更改该顺序,除非把该规则的内容全部删除,再重新指定其匹配顺序。
auto 所用的“深度优先”的原则是指:把指定数据包范围最小的语句排在最后面。这一点可以通过比较地址的通配符来实现,通配符越小,则指定的主机的范围就越小。比如192.168.3.1 0 指定了一台主机:192.168.3.1,而192.168.3.1 0.0.255.255 则指定了一个网段:192.168.3.1 ~192.168.255.255,显然前者在访问控制规则中排在后面。具体标准为:对于标准访问控制规则的语句,直接比较源地址通配符,通配符相同的则按配置顺序;对于二层访问控制规则,配置了“any”的规则排在前面,其它按配置顺序;对于扩展访问控制规则,首先比较源地址通配符,相同的再比较目的地址通配符,仍相同的则比较端口号的范围,范围小的排在后面,如果端口号范围也相同则按配置顺序。对于用户自定义访问控制规则,则比较掩码长度,掩码长的放在后面,掩码相同则按配置顺序。
访问控制列表分为以下几类:
访问控制列表是应用到OLT的指令控制列表,这些指令用来告诉OLT哪些数据包可以接收,哪些数据包需要拒绝。它是由一系列的判断语句组成,激活一个控制列表后,OLT就会根据这条访问控制列表所给出的判断条件对进入OLT的每一个数据包进行检查,符合条件的数据包将根据访问控制列表作出允许和丢弃的处理。QOS引用ACL中允许的规则配置。
在系统中,访问控制列表分为以下几类:
· 基于数字标识的标准访问控制列表
· 基于名字标识的标准访问控制列表
· 基于数字标识的扩展访问控制列表
· 基于名字标识的扩展访问控制列表
· 基于数字标识的二层访问控制列表
· 基于名字标识的二层访问控制列表
· 基于数字标识的用户自定义型访问控制列表
· 基于名字标识的用户自定义型访问控制列表
OLT上对各种访问控制列表和QOS动作的数目限制如下表所示:
表1-1 访问控制列表的数量限制
ACL配置类别 |
配置范围 |
数量限制 |
基于数字标识的标准访问控制列表 |
1~99 |
99 |
基于数字标识的扩展访问控制列表 |
100~199 |
100 |
基于数字标识的二层访问控制列表 |
200~299 |
100 |
基于数字标识的自定义访问控制列表 |
300~399 |
100 |
基于名字标识的标准访问控制列表 |
- |
1000 |
基于名字标识的扩展访问控制列表 |
- |
1000 |
基于名字标识的标准访问控制列表 |
- |
1000 |
基于名字标识的扩展访问控制列表 |
- |
1000 |
基于名字标识的二层访问控制列表 |
- |
1000 |
基于名字标识的自定义访问控制列表 |
- |
1000 |
一条ACL可以配置的子规则数 |
0~127 |
128 |
一台OLT最多可以配置的子规则数 |
- |
3000 |
时间段 |
- |
128 |
一个时间段可以配置的绝对时间段 |
- |
12 |
一个时间段可以配置的周期时间段 |
- |
32 |
激活ACL子项数 |
- |
253 |
访问控制列表配置包括以下任务:
· 配置时间段
· 定义访问控制列表
· 激活访问控制列表
以上三个步骤最好依次进行,先配置时间段,然后定义访问控制列表,在其中会引用定义好的时间段,最后激活访问控制列表,使其生效。
· 进入time-range 时间视图
可以使用下面的命令进入time-range 时间视图,在此模式下可以进行时间段的配置工作。
请在系统视图下进行下列配置。
操作命令:
time-range time-range-name
配置时间段可以有两种形式:配置绝对时间范围和配置周期时间范围。配置绝对时间范围采用的时间是年、月、日、时、分的形式,配置周期时间范围采用的时间是每周的周几、几点、几分的形式。
可以使用下面的命令来创建绝对时间范围。
请在time-range 时间视图下进行下列配置。
· 配置绝对时间范围
absolute [ start time date ] [ end time date ]
· 删除绝对时间范围
undo absolute [ start time date ] [ end time date ]
如果不配置起始时间,表示对起始时间没有限制,只关心结束时间;如果不配置结束时间,则结束时间为系统可以表示的最大时间。结束时间必须大于起始时间。
绝对时间范围确定一个大的生效时间,也为周期时间范围限定其发生作用的时间范围。绝对时间段可以配置12 个。
可以使用下面的命令来创建周期时间范围。
请在time-range 时间视图下进行下列配置。
操作命令:
periodic day-of-the-week hh:mm:ss to [ day-of-the-week ] hh:mm:ss
undo periodic day-of-the-week hh:mm:ss to [ day-of-the-week ] hh:mm:ss
周期时间范围的生效周期为一周。周期时间段最多可以配置32 个。
表1-2 时间段配置
操作 |
命令 |
说明 |
进入time-range 时间视图 |
time-range time-range-name |
系统视图 |
配置绝对时间范围 |
absolute [ start time date ] [ end time date ] |
time-range 时间视图 |
删除绝对时间范围 |
undo absolute [ start time date ] [ end time date ] |
time-range 时间视图 |
创建周期时间范围 |
periodic day-of-the-week hh:mm:ss to [ day-of-the-week ] hh:mm:ss |
time-range 时间视图 |
删除周期时间范围 |
undo periodic day-of-the-week hh:mm:ss to [ day-of-the-week ] hh:mm:ss |
time-range 时间视图 |
OLT支持多种访问控制列表,下面分别介绍如何定义这些访问控制列表。
OLT最多可以定义99 条以数字标识的标准访问控制列表(其数字标号取值范围为1~99),最多可以定义1000 条以名字标识的标准访问控制列表,一共可以定义3000 条子规则。同时OLT最多可以为一条访问控制列表定义128 条子规则(此规定同时适用于以数字标识的访问控制列表和以名字标识的访问控制列表)。标准访问控制列表只根据数据包IP 头所携带的源IP 信息对数据包进行分类,然后对匹配的数据包进行相应的分析处理。数据包的IP 头的构成可以参见RFC791。
(1) 定义基于数字标识的标准访问控制列表
基于数字标识的标准访问控制列表就是用数字标识的标准访问控制列表。可以使用下面的命令来定义基于数字标识的标准访问控制列表。
请在系统视图下进行下列配置。
· 操作命令:
acl access-list-number { deny | permit } { source-addr source-wildcard | any } [ fragments ] [ time-range time-range-name ]
· 定义访问控制列表的匹配顺序
acl access-list-number match-order { config | auto }
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用acl 命令给同一个访问控制列表定义多条规则。
如果定义中不使用命令time-range,则此访问控制列表激活后将在任何时刻都生效。
具体参数的含义请参见本章对应的命令参考。
(2) 定义基于名字标识的标准访问控制列表
基于名字标识的标准访问控制列表就是用名字标识的标准访问控制列表。
定义基于名字标识的标准访问控制列表需要进入专门的视图:在系统视图下使用acl standard命令,该命令将同时指定访问列表的匹配顺序;可以使用命令quit退出该视图。
可以使用下面的命令来定义基于名字标识的标准访问控制列表。请在相应视图下进行下列配置。
操作命令:
· 进入基于名字标识的标准访问控制列表视图(系统视图)
acl standard name [ match-order { config | auto } ]
· 定义标准访问控制列表规则(基于名字标识的标准访问控制列表视图)
{ permit | deny } { source-addr source-wildcard | any } [ fragments ] [ time-range time-range-name ]
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表(系统视图)
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用{ permit | deny }命令给同一个访问控制列表定义多条规则。
而且用户一旦指定某一条访问控制列表规则的匹配顺序,就不能再更改该顺序。
缺省情况下访问控制列表中的匹配顺序为按用户配置顺序(config)。
参数详细介绍请参见本章对应的命令参考。
OLT最多可以定义100 条以数字标识的扩展访问控制列表(其数字标号取值范围为100~199),最多可以定义1000 条以名字标识的扩展访问控制列表,一共可以定义3000 条子规则。同时OLT最多可以为一条访问控制列表定义128 条子规则(此规定同时适用于以数字标识的访问控制列表和以名字标识的访问控制列表)。它根据数据包IP 头所携带的源IP、目的IP、使用的TCP 或UDP 端口号等数据包的属性信息制定分类规则,对数据包进行相应的处理。数据包的IP 头的构成可以参见RFC791。
(1) 定义基于数字标识的扩展访问控制列表
基于数字标识的扩展访问控制列表就是用数字标识的扩展访问控制列表。可以使用下面的命令来定义基于数字标识的扩展访问控制列表。
请在系统视图下进行下列配置。
· 定义基于数字标识的扩展访问控制列表
acl access-list-number2 { permit | deny } [ protocol ] [ established ] { source-addr source-wildcard | any } [ port [ portmask ] ] { dest-addr dest-wildcard | any } [ port [ portmask ] ] [ icmp-type [ icmp-code ] ] [ fragments ] [ time-range time-range-name ]
· 定义访问控制列表的匹配顺序
acl access-list-number match-order { config | auto }
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用acl 命令给同一个访问控制列表定义多条规则。
扩展访问控制列表的数字标识取值范围为100~199。
需要注意的是,上面命令中的port参数指的是各种高层应用使用的TCP 或者UDP 的端口号,对于部分常见的端口号,可以用相应的助记符来代替其实际数字,如使用“bgp”来代替BGP 协议使用的TCP 端口号179。关于命令的详细描述请参见对应的命令参考。
(2) 定义基于名字标识的扩展访问控制列表
基于名字标识的扩展访问控制列表就是用名字标识的扩展访问控制列表。
定义基于名字标识的扩展访问控制列表需要进入专门的视图:在系统视图下使用acl extended 命令,该命令将同时指定访问列表的匹配顺序。可以使用命令quit退出该视图。可以使用下面的命令来定义基于名字标识的扩展访问控制列表。
请在相应视图下进行下列配置。
· 进入基于名字标识的扩展访问控制列表视图(系统视图)
acl extended name [ match-order { config | auto } ]
· 定义扩展访问控制列表(基于名字标识的扩展访问控制列表视图)
{ permit | deny } [ protocol ] { source-addr source-wildcard | any } [ port [ portmask ] ] { dest-addr dest-wildcard | any } [ port [ portmask ] ] [ icmp-type [ icmp-code ] ] [ fragments ] [ time-range time-range-name ]
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表(系统视图)
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用{ permit | deny }命令给同一个访问控制列表定义多条规则。
而且用户一旦指定某一条访问控制列表规则的匹配顺序,就不能再更改该顺序。
需要注意的是,上面命令中的port参数指的是各种高层应用使用的TCP 或者UDP 的端口号,对于部分常见的端口号,可以用相应的助记符来代替其实际数字,如使用“bgp”来代替BGP 协议使用的TCP 端口号179。缺省情况下访问控制列表中的匹配顺序为按用户配置顺序(config)。命令的详细描述请参见本章对应的命令参考。
OLT最多可以定义100 条以数字标识的二层访问控制列表(其数字标号取值范围为200~299),最多可以定义1000 条以名字标识的二层访问控制列表,一共可以定义3000 条子规则。同时OLT最多可以为一条访问控制列表定义128 条子规则(此规定同时适用于以数字标识的访问控制列表和以名字标识的访问控制列表)。二层访问控制列表根据数据包二层帧头携带的源VLAN ID、二层协议类型、报文二层接收端口等二层信息制定规则,对数据进行相应处理。
(1) 定义基于数字标识的二层访问控制列表
基于数字标识的二层访问控制列表就是使用数字标识的二层访问控制列表。可以使用下面的命令来定义基于数字标识的二层访问控制列表。
请在系统视图下进行下列配置。
· 定义基于数字标识的二层访问控制列表
acl access-list-number3 { permit | deny } [ protocol ] ingress { { [ source-start-vlan-id source-end-vlan-id ] [ interface interface-num ] } | any } [ time-range time-range-name ]
· 定义访问控制列表的匹配顺序
acl access-list-number match-order { config | auto }
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用acl 命令给同一个访问控制列表定义多条规则。
二层访问控制列表的数字标识取值范围为200~299。
上述命令中的interface 参数指定的是二层接口,如OLT的以太网端口。命令的详细描述请参见本章对应的命令参考。
(2) 定义基于名字标识的二层访问控制列表
基于名字标识的二层访问控制列表就是使用名字标识的二层访问控制列表。
定义基于名字标识的二层访问控制列表需要进入专门的视图:在系统视图下使用acl link命令,该命令将同时指定访问列表的匹配顺序。可以使用命令quit退出该视图。
可以使用下面的命令来定义基于名字标识的二层访问控制列表。
请在相应视图下进行下列配置。
· 进入基于名字标识的二层访问控制列表视图(系统视图)
acl link name [ match-order { config | auto } ]
· 定义二层访问控制列表(基于名字标识的二层访问控制列表视图)
{ permit | deny } [ protocol ] ingress { { [ source-start-vlan-id source-end-vlan-id ] [ interface interface-num] } | any } [ time-range time-range-name ]
· 删除访问控制列表的所有子项或其中一个子项,或者删除全部访问控制列表(系统视图)
undo acl { all | { access-list-number | name access-list-name } [ subitem ] }
在定义过程中,可以多次使用{ permit | deny }命令给同一个访问控制列表定义多条规则。
而且用户一旦指定某一条访问控制列表规则的匹配顺序,就不能再更改该顺序。
缺省情况下访问控制列表中的匹配顺序为按用户配置顺序(config)。
命令的详细描述请参见本章对应的命令参考。
表1-3 配置访问控制列表
操作 |
命令 |
说明 |
进入基于数字标识的标准访问控制列表视图 |
acl access-list-number { deny | permit } { source-addr source-wildcard | any } [ fragments ] [ time-range time-range-name ]
|
系统视图 |
定义访问控制列表的匹配顺序
|
acl access-list-number match-order { config | auto }
|
基于数字的标准访问控制列表视图 |
进入基于名字标识的标准访问控制列表 |
acl standard name [ match-order { config | auto } ]
|
系统视图 |
定义标准访问控制列表规则 |
{ permit | deny } { source-addr source-wildcard | any } [ fragments ] [ time-range time-range-name ]
|
基于名字的标准访问控制列表视图 |
将访问控制列表定义好后必须激活之后才能使之生效,可以使用下面的命令来激活定义好的访问控制列表。
请在系统视图下进行下列配置。
· 激活访问控制列表
access-group [ ip-group { access-list-number | access-list-name } [ subitem subitem ] ] [ link-group { access-list-number | access-list-name } [ subitem subitem ] ]
· 取消激活访问控制列表
undo access-group { all | [ ip-group { access-list-number | access-list-name } [ subitem subitem ] ] [ link-group { access-list-number | access-list-name } [ subitem subitem ] ] }
本命令支持同时激活二层访问控制列表和三层访问控制列表,但是要求组合项的动作一致,如果动作冲突(一个是permit 另一个是deny)则不能激活。OLT采用平行组合的方式激活二层访问控制列表和三层访问控制列表,即,二层ACL 组的子项1 与三层ACL 组的子项1 组合,二层ACL 组的子项2 与三层ACL 组的子项2 组合,依此类推;如果两组ACL 的子项数不相等,则多出的子项单独激活。
表1-4 激活访问控制列表
操作 |
命令 |
说明 |
激活访问控制列表 |
access-group [ ip-group { access-list-number | access-list-name } [ subitem subitem ] ] [ link-group { access-list-number | access-list-name } [ subitem subitem ] ] |
系统视图 |
取消激活访问控制列表 |
undo access-group { all | [ ip-group { access-list-number | access-list-name } [ subitem subitem ] ] [ link-group { access-list-number | access-list-name } [ subitem subitem ] ] } |
系统视图 |
请在所有视图下进行下列操作。
· 显示时间段状况
display time-range [ all | statistic | name time-range-name ]
· 显示访问控制列表的详细配置信息
display acl config { all | access-list-number | name access-list-name }
· 显示访问控制列表的统计信息
display acl config statistic
· 显示访问控制列表的下发应用信息
display acl runtime { all | access-list-number | name access-list-name }
· 显示访问控制列表的下发应用的统计信息
display acl runtime statistic
具体的参数说明请参见命令参考手册。
表1-5 访问控制列表的监控和维护
操作 |
命令 |
说明 |
显示时间段状况 |
display time-range [ all | statistic | name time-range-name ] |
任意视图 |
显示访问控制列表的详细配置信息 |
display acl config { all | access-list-number | name access-list-name } |
任意视图 |
显示访问控制列表的统计信息 |
display acl config statistic |
任意视图 |
显示访问控制列表的下发应用信息 |
display acl runtime { all | access-list-number | name access-list-name } |
任意视图 |
显示访问控制列表的下发应用的统计信息 |
display acl runtime statistic |
任意视图 |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!