16-ACL操作
本章节下载 (173.77 KB)
目 录
ACL(Access Control List,访问控制列表)主要用来实现流识别功能。网络设备为了过滤数据包,需要配置一系列的匹配规则,以识别需要过滤的报文。在识别出特定的报文之后,才能根据预先设定的策略允许或禁止相应的数据包通过。
ACL通过一系列的匹配条件对数据包进行分类,这些条件可以是数据包的源地址、目的地址、端口号等。
由ACL定义的数据包匹配规则,可以被其它需要对流量进行区分的功能引用,如QoS中流分类规则的定义。
根据应用目的,可将ACL分为下面几种:
l
基本ACL:只根据三层源IP地址制定规则。
l
高级ACL:根据数据包的源IP地址信息、目的IP地址信息、IP承载的协议类型、协议特性等三、四层信息制定规则。
l
二层ACL:根据源MAC地址、目的MAC地址、VLAN优先级、二层协议类型等二层信息制定规则。
l
用户自定义ACL:以数据包的头部为基准,指定从第几个字节开始进行“与”操作,将从报文提取出来的字符串和用户定义的字符串进行比较,找到匹配的报文。
交换机中ACL可以直接下发到交换机的硬件中用于数据转发过程中报文的过滤和流分类。此时一条ACL中多个规则的匹配顺序是由交换机的硬件决定的,用户即使在定义ACL时配置了匹配顺序,该匹配顺序也不起作用。
ACL直接下发到硬件的情况包括:交换机实现QoS功能时引用ACL、通过ACL过滤转发数据等。
交换机也使用ACL来对由软件处理的报文进行过滤和流分类。此时ACL规则的匹配顺序有两种:config(指定匹配该规则时按用户的配置顺序)和auto(指定匹配该规则时系统自动排序,即按“深度优先”的顺序)。这种情况下用户可以在定义ACL的时候指定一条ACL中多个规则的匹配顺序。用户一旦指定某一条ACL的匹配顺序,就不能再更改该顺序。只有把该列表中所有的规则全部删除后,才能重新指定其匹配顺序。
ACL被软件引用的情况包括:对登录用户进行控制时引用ACL等。
ACL可能会包含多个规则,而每个规则都指定不同的报文范围。这样,在匹配报文时就会出现匹配顺序的问题。
ACL支持两种匹配顺序:
l
配置顺序:根据配置顺序匹配ACL规则。
l
自动排序:根据“深度优先”规则匹配ACL规则。
“深度优先”规则说明如下:
l
基本ACL的深度优先以源IP地址掩码长度排序,掩码越长的规则位置越靠前。排序时比较源IP地址掩码长度,若源IP地址掩码长度相等,则先配置的规则匹配位置靠前。例如,源IP地址掩码为255.255.255.0的规则比源IP地址掩码为255.255.0.0的规则匹配位置靠前。
l
高级ACL的深度优先以源IP地址掩码和目的IP地址掩码长度排序,掩码越长的规则位置越靠前。排序时先比较源IP地址掩码长度,若源IP地址掩码长度相等,则比较目的IP地址掩码长度;若目的IP地址掩码长度也相等,则先配置的规则匹配位置靠前。例如,源IP地址掩码长度相等时,目的IP地址掩码为255.255.255.0的规则比目的IP地址掩码为255.255.0.0的规则匹配位置靠前。
基于时间段的ACL使用户可以区分时间段对报文进行ACL控制。
ACL中的每条规则都可选择一个时间段。如果规则引用的时间段未配置,则系统给出提示信息,并允许这样的规则创建成功。但是规则不能立即生效,直到用户配置了引用的时间段,并且系统时间在指定时间段范围内才能生效。如果用户手工删除ACL规则引用的时间段,则在ACL规则定时器刷新后,该规则将失效。
E126以太网交换机支持的ACL如下:
l
基本ACL
l
高级ACL
E126以太网交换机上定义的ACL只能用于被上层模块引用的情况,不支持下发到硬件中。
对时间段的配置有如下内容:配置周期时间段和绝对时间段。配置周期时间段采用的是每周的周几的形式,配置绝对时间段采用从起始时间到结束时间的形式。
& 说明:
H3C E126以太网交换机支持的绝对时间段范围从1970/1/1 00:00起至2100/12/31 24:00结束。
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置一个时间段 |
time-range time-name { start-time to end-time days-of-the-week [ from start-time start-date ] [ to
end-time end-date ] | from start-time start-date [ to
end-time end-date ] | to end-time end-date } |
必选 |
显示时间段 |
display time-range { all | time-name } |
可选 display命令可以在任意视图下执行 |
需要注意的是:
l
如果一个时间段只定义了周期时间段,则只有系统时钟在该周期时间段内,该时间段才进入激活状态。如果一个时间段下定义了多个周期时间段,则这些周期时间段之间是“或”的关系。
l
如果一个时间段只定义了绝对时间段,则只有系统时钟在该绝对时间段内,该时间段才进入激活状态。如果一个时间段下定义了多个绝对时间段,则这些绝对时间段之间是“或”的关系。
l
如果一个时间段同时定义了绝对时间段和周期时间段,则只有同时满足绝对时间段和周期时间段的定义时,该时间段才进入激活状态。例如,一个时间段定义了绝对时间段:从2004年1月1日0点0分到2004年12月31日23点59分,同时定义了周期时间段:每周三的12:00到14:00。该时间段只有在2004年内每周三的12:00到14:00才进入激活状态。
l
配置绝对时间段时,如果不配置开始日期,时间段就是从系统支持的最早时间起到配置的结束日期为止。如果不配置结束日期,时间段就是从配置的开始日期起到2100/12/31 23:59为止。
# 配置时间段,取值为周一到周五每天8:00到18:00。
<H3C> system-view
[H3C] time-range test1 8:00 to 18:00 working-day
[H3C] display time-range test1
Current time is 00:32:52 Apr/2/2000 Sunday
Time-range : test1 ( Inactive )
08:00 to 18:00 working-day
# 配置绝对时间段,取值为2000年1月28日15:00起至2004年1月28日15:00结束。
<H3C> system-view
[H3C] time-range test2 from 15:00 1/28/2000 to 15:00 1/28/2004
[H3C] display time-range test2
Current time is 13:30:32 4/16/2005 Saturday
Time-range : test2 ( Inactive )
From 15:00 Jan/28/2000 to 15:00 Jan/28/2004
基本ACL只根据三层源IP制定规则,对数据包进行相应的分析处理。
基本ACL的序号取值范围为2000~2999。
如果要配置带有时间段参数的规则,则需要定义相应的时间段。定义时间段的配置请参见1.2 时间段配置。
确定了规则中源IP地址信息的取值。
表1-2 定义基本ACL规则
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建或进入基本ACL视图 |
acl number acl-number [ match-order { config |
auto } ] |
缺省情况下匹配顺序为config |
定义ACL规则 |
rule [ rule-id ] { permit | deny } [ fragment | source { sour-addr sour-wildcard | any } | time-range time-name ]* |
必选 |
定义ACL的描述信息 |
description text |
可选 |
对于在定义ACL规则时指定编号的情况:
l
当匹配顺序为config时,如果指定编号对应的规则已经存在,系统将编辑该规则,没有编辑的部分仍旧保持原来的状态;当匹配顺序为auto时,用户不能编辑任何一个已经存在的规则,否则系统会提示错误信息。
l
如果指定编号对应的规则不存在,用户将创建并定义一个新的规则。
l
编辑后或新创建的规则不能和已经存在的规则内容完全相同,否则会导致编辑或创建不成功,系统会提示该规则已经存在。
在定义ACL规则时如果不指定编号,用户将创建并定义一个新规则,设备将自动为这个规则分配一个编号。
# 配置ACL 2000,禁止源地址为1.1.1.1的用户通过Telnet方式登录到交换机上。关于配置对登录用户的控制请参见“登录交换机”模块的相关内容。
<H3C> system-view
[H3C] acl number 2000
[H3C-acl-basic-2000] rule deny source 1.1.1.1 0
[H3C-acl-basic-2000] display acl 2000
Basic ACL 2000, 1 rule
Acl's step is 1
rule 0 deny source 1.1.1.1 0 (0 times matched)
高级ACL可以使用数据包的源地址信息、目的地址信息、IP承载的协议类型、针对协议的特性,例如TCP或UDP的源端口、目的端口,ICMP协议的类型、code等内容定义规则。
高级ACL序号取值范围3000~3999(ACL 3998与3999是系统为集群管理预留的编号,用户无法配置)。
高级ACL支持对三种报文优先级的分析处理:ToS(Type Of Service,服务类型)优先级、IP优先级和DSCP(Differentiated Services Codepoint Priority,差分服务编码点优先级)。
用户可以利用高级ACL定义比基本ACL更准确、更丰富、更灵活的规则。
如果要配置带有时间段参数的规则,则需要定义相应的时间段。定义时间段的配置请参见1.2 时间段配置。
确定了规则中源IP地址信息、目的IP信息、IP承载的协议类型、针对协议的特性等参数的取值。
表1-3 定义高级ACL规则
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建或进入高级ACL视图 |
acl number acl-number [ match-order { config |
auto } ] |
缺省情况下匹配顺序为config |
定义ACL规则 |
rule [ rule-id ] { permit | deny } rule-string |
必选 |
定义ACL规则的注释字符串 |
rule rule-id comment text |
可选 |
定义ACL的描述信息 |
description text |
可选 |
rule-string:ACL规则信息,可以由如下参数组合而成,具体参数说明如表1-4所示。ACL规则信息中必须首先配置protocol参数,然后才能配置其他参数。
表1-4 ACL规则信息
参数 |
类别 |
作用 |
说明 |
protocol |
协议类型 |
IP承载的协议类型 |
用数字表示时取值范围为1~255 用名字表示时,可以选取GRE、ICMP、IGMP、IP、IPinIP、OSPF、TCP、UDP |
source { sour-addr sour-wildcard | any } |
源地址信息 |
指定ACL规则的源地址信息 |
sour-addr sour-wildcard用来确定数据包的源地址,点分十进制表示;sour-wildcard可以为0,表示主机地址 any代表任意源地址 |
destination { dest-addr dest-wildcard
| any } |
目的地址信息 |
指定ACL规则的目的地址信息 |
dest-addr dest-wildcard用来确定数据包的目的地址,点分十进制表示;dest-wildcard可以为0,表示主机地址 any代表任意目的地址 |
precedence precedence |
报文优先级 |
IP优先级 |
取值范围0~7 |
tos tos |
报文优先级 |
ToS优先级 |
取值范围0~15 |
dscp dscp |
报文优先级 |
DSCP优先级 |
取值范围0~63 |
fragment |
分片信息 |
定义ACL规则仅对非首片分片报文有效 |
- |
time-range time-name |
时间段信息 |
指定ACL规则生效的时间段 |
- |
& 说明:
sour-wildcard与dest-wildcard为目标子网掩码的反码,点分十进制表示。例如,如果用户想指定子网掩码255.255.0.0,则需要输入0.0.255.255。可以为0,表示主机地址。
如果选择dscp关键字,除了直接输入数值0~63外,用户也可输入如表1-5所示的关键字。
表1-5 DSCP值说明
关键字 |
DSCP值(十进制) |
DSCP值(二进制) |
ef |
46 |
101110 |
af11 |
10 |
001010 |
af12 |
12 |
001100 |
af13 |
14 |
001110 |
af21 |
18 |
010010 |
af22 |
20 |
010100 |
af23 |
22 |
010110 |
af31 |
26 |
011010 |
af32 |
28 |
011100 |
af33 |
30 |
011110 |
af41 |
34 |
100010 |
af42 |
36 |
100100 |
af43 |
38 |
100110 |
cs1 |
8 |
001000 |
cs2 |
16 |
010000 |
cs3 |
24 |
011000 |
cs4 |
32 |
100000 |
cs5 |
40 |
101000 |
cs6 |
48 |
110000 |
cs7 |
56 |
111000 |
be (default) |
0 |
000000 |
如果选择precedence关键字,除了直接输入数值0~7外,用户也可输入如表1-6所示的关键字。
关键字 |
IP Precedence(十进制) |
IP Precedence(二进制) |
routine |
0 |
000 |
priority |
1 |
001 |
immediate |
2 |
010 |
flash |
3 |
011 |
flash-override |
4 |
100 |
critical |
5 |
101 |
internet |
6 |
110 |
network |
7 |
111 |
如果选择tos关键字,除了直接输入数值0~15外,用户也可输入如表1-7所示的关键字。
表1-7 ToS值说明
关键字 |
ToS(十进制) |
ToS(二进制) |
normal |
0 |
0000 |
min-monetary-cost |
1 |
0001 |
max-reliability |
2 |
0010 |
max-throughput |
4 |
0100 |
min-delay |
8 |
1000 |
当协议类型选择为TCP或者UDP时,用户还可以定义如表1-8所示信息。
表1-8 TCP/UDP特有的ACL规则信息
参数 |
类别 |
作用 |
说明 |
source-port operator port1 [ port2 ] |
源端口 |
定义UDP/TCP报文的源端口信息 |
operator为操作符,取值可以为lt(小于)、gt(大于)、eq(等于)、neq(不等于)或者range(在指定范围内);只有操作符range需要两个端口号做操作数,其他的只需要一个端口号做操作数 port1、port2:TCP或UDP的端口号,用名字或数字表示,数字的取值范围为0~65535 |
destination-port operator port1 [ port2 ] |
目的端口 |
定义UDP/TCP报文的目的端口信息 |
|
established |
TCP连接建立标识 |
表示此条规则仅对TCP建立连接的第一个SYN报文有效 |
TCP协议特有的参数 |
当TCP或UDP的端口号用名字表示时,用户还可以定义如下信息。
表1-9 TCP或UDP端口取值信息
协议类型 |
取值信息 |
TCP |
CHARgen(19)、bgp(179)、cmd(514)、daytime(13)、discard(9)、domain(53)、echo(7)、exec(512)、finger(79)、ftp(21)、ftp-data(20)、gopher(70)、hostname(101)、irc(194)、klogin(543)、kshell(544)、login(513)、lpd(515)、nntp(119)、pop2(109)、pop3(110)、smtp(25)、sunrpc(111)、tacacs(49)、talk(517)、telnet(23)、time(37)、uucp(540)、whois(43)、www(80) |
UDP |
biff(512)、bootpc(68)、bootps(67)、discard(9)、dns(53)、dnsix(90)、echo(7)、mobilip-ag(434)、mobilip-mn(435)、nameserver(42)、netbios-dgm(138)、netbios-ns(139)、netbios-ssn(139)、ntp(123)、rip(520)、snmp(161)、snmptrap(162)、sunrpc(111)、syslog(514)、tacacs-ds(65)、talk(517)、tftp(69)、time(37)、who(513)、xdmcp(177) |
当协议类型选择为ICMP时,用户还可以定义如表1-10所示信息。
表1-10 ICMP特有的ACL规则信息
参数 |
类别 |
作用 |
说明 |
icmp-type icmp-type icmp-code |
ICMP报文的类型和消息码信息 |
指定规则中ICMP报文的类型和消息码信息 |
icmp-type:ICMP消息类型,取值为0~255 icmp-code:ICMP的消息码,取值为0~255 |
当协议类型选择为ICMP时,用户也可以直接在icmp-type参数后输入ICMP的消息名称。在几种常见的ICMP消息如表1-11所示。
名称 |
ICMP TYPE |
ICMP CODE |
echo |
Type=8 |
Code=0 |
echo-reply |
Type=0 |
Code=0 |
fragmentneed-DFset |
Type=3 |
Code=4 |
host-redirect |
Type=5 |
Code=1 |
host-tos-redirect |
Type=5 |
Code=3 |
host-unreachable |
Type=3 |
Code=1 |
information-reply |
Type=16 |
Code=0 |
information-request |
Type=15 |
Code=0 |
net-redirect |
Type=5 |
Code=0 |
net-tos-redirect |
Type=5 |
Code=2 |
net-unreachable |
Type=3 |
Code=0 |
parameter-problem |
Type=12 |
Code=0 |
port-unreachable |
Type=3 |
Code=3 |
protocol-unreachable |
Type=3 |
Code=2 |
reassembly-timeout |
Type=11 |
Code=1 |
source-quench |
Type=4 |
Code=0 |
source-route-failed |
Type=3 |
Code=5 |
timestamp-reply |
Type=14 |
Code=0 |
timestamp-request |
Type=13 |
Code=0 |
ttl-exceeded |
Type=11 |
Code=0 |
对于在定义ACL规则时指定编号的情况:
l
当匹配顺序为config时,如果指定编号对应的规则已经存在,系统将编辑该规则,没有编辑的部分仍旧保持原来的状态;当匹配顺序为auto时,用户不能编辑任何一个已经存在的规则,否则系统会提示错误信息。
l
如果指定编号对应的规则不存在,用户将创建并定义一个新的规则。
l
编辑后或新创建的规则不能和已经存在的规则内容完全相同,否则会导致编辑或创建不成功,系统会提示该规则已经存在。
在定义ACL规则时如果不指定编号,用户将创建并定义一个新规则,设备将自动为这个规则分配一个编号。
# 配置ACL 3000,禁止登录到本设备上的用户通过Telnet方式登录目的地址为202.38.160.0网段的Telnet服务器。关于配置对登录用户的控制请参见“登录交换机”模块的相关内容。
<H3C> system-view
[H3C] acl number 3000
[H3C-acl-adv-3000] rule deny tcp destination 202.38.160.0 0.0.0.255 destination-port eq 23
[H3C-acl-adv-3000] display acl 3000
Advanced ACL 3000, 1 rule
Acl's step is 1
rule 0 deny tcp destination 202.38.160.0 0.0.0.255 destination-port eq telnet (0 times matched)
在完成上述配置后,在任意视图下执行display命令可以显示ACL配置后的运行情况,通过查看显示信息验证配置的效果。
操作 |
命令 |
说明 |
显示配置的ACL规则 |
display acl { all | acl-number } |
display命令可以在任意视图下执行 |
显示时间段 |
display time-range { all | time-name } |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!