分类: 系统运维
2011-10-20 08:51:43
高级ACL可以使用报文的源IP地址信息、目的IP地址信息、IP承载的协议类型、协议的特性(例如TCP或UDP的源端口、目的端口,ICMP协议的消息类型、消息码等)等信息来制定匹配规则。
高级ACL支持对三种报文优先级的分析处理:
n ToS(Type of Service,服务类型)优先级
n IP优先级
n DSCP(Differentiated Services Codepoint,差分服务编码点)优先级
用户可以利用高级ACL定义比基本ACL更准确、更丰富、更灵活的匹配规则。高级ACL的序号取值范围为3000~3999。
1.高级ACL的配置方法如果要配置带有时间段参数的规则,则需要定义相应的时间段。
配置高级ACL的基本步骤与配置基本ACL的步骤和所使用的命令基本上是一样的,主要区别rule命令中可用的可选项和参数,当然,可用ACL号也是不同的。具体步骤如表19-2所示。
19-2 配置高级ACL的步骤
|
命令 |
说明 |
Step 1 |
system-view |
进入系统视图 |
Step 2 |
适用于S5600及以前系列:acl number acl-number [ name acl-name ] [ match-order { auto | config } ] 适用于S7500及以后系列:acl { number acl-number | name acl-name [ advanced | basic | link | user ] } [ match-order { config | auto } ] |
创建高级ACL并进入高级ACL视图(二者选其一选)。缺省情况下,匹配顺序为config。 如果用户在创建ACL时指定了名称,则之后可以通过acl name acl-name命令进入指定名称的ACL视图 |
Step 3 |
rule [ rule-id ] { deny | permit } protocol [ destination { dest-addr dest-wildcard | any } | destination-port operator port1 [ port2 ] | dscp dscp | established | fragment | icmp-type { icmp-type icmp-code | icmp-message } | logging | precedence precedence | reflective | source { sour-addr sour-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-name | tos tos | vpn-instance vpn-instance-name ]* |
定义规则。可以重复本步骤创建多条规则。需要注意的是,当高级ACL被QoS策略引用对报文进行流分类时: n 当QoS策略应用于入方向(inbound)时,不支持配置logging、reflective和vpn-instance参数;不支持配置操作符operator取值为neq n 当QoS策略应用于出方向(outbound)时,不支持配置logging、reflective和vpn-instance参数;不支持配置操作符operator取值为gt、lt、neq和range n 不同系列交换机所支持可选项和参数可能有些区别 |
Step 4 |
step step-value |
(可选)定义步长。缺省情况下,步长为5 |
Step 5 |
description text |
(可选)定义ACL的描述信息。缺省情况下,ACL没有描述信息 |
Step 6 |
rule rule-id comment text |
(可选)定义规则的描述信息。缺省情况下,规则没有描述信息 |
因为表中的主要命令与上节相同,所以在此仅介绍主要不同的rule命令。
在高级ACL中,表中的“rule [ rule-id ] { deny | permit } protocol [ destination { dest-addr dest-wildcard | any } | destination-port operator port1 [ port2 ] | dscp dscp | established | fragment | icmp-type { icmp-type icmp-code | icmp-message } | logging | precedence precedence | reflective | source { sour-addr sour-wildcard | any } | source-port operator port1 [ port2 ] | time-range time-name | tos tos | vpn-instance vpn-instance-name ]”命令用来定义一个高级ACL规则。
可用“undo rule rule-id [ destination | destination-port | dscp | established | fragment | icmp-type | logging | precedence | reflective | source | source-port | time-range | tos | vpn-instance ]”命令用来删除一个高级ACL规则或者规则的某些属性信息。在删除一条规则时,需要指定该规则的编号。如果用户不知道规则的编号,可以使用display acl命令来查看。如果undo rule命令后不指定参数,将删除整个ACL规则,否则,将只删除ACL规则相应的属性信息。
这两个命令的可选项和参数非常复杂,解释如下:
l rule-id:高级ACL规则编号,取值范围为0~65534。
l deny:表示丢弃符合条件的报文。
l permit:表示允许符合条件的报文通过。
l protocol:IP承载的协议类型。用数字表示时,取值范围为0~255;用名字表示时,可以选取gre(47)、icmp(1)、igmp(2)、ip、ipinip(4)、ospf(89)、tcp(6)、udp(17)。
protocol后可以配置的规则信息参数如表19-3所示。
表19-3 protocol后可以配置的规则信息参数
参数 |
类别 |
作用 |
说明 |
source { sour-addr sour-wildcard | any } |
源地址信息 |
指定ACL规则的源地址信息 |
sour-addr sour-wildcard用来确定报文的源IP地址,点分十进制表示,sour-wildcard表示反掩码,当反掩码为0时代表主机地址;any代表任意源IP地址 |
destination { dest-addr dest-wildcard | any } |
目的地址信息 |
指定ACL规则的目的地址信息 |
dest-addr dest-wildcard用来确定报文的目的IP地址,点分十进制表示,dest-wildcard表示反掩码,当反掩码为0时代表主机地址;any代表任意目的IP地址 |
precedence precedence |
报文优先级 |
IP优先级 |
precedence用数字表示时,取值范围为0~7;用文字表示时,分别对应routine(0)、priority(1)、immediate(2)、flash(3)、flash-override(4)、critical(5)、internet(6)、network(7) |
tos tos |
报文优先级 |
ToS优先级 |
tos用数字表示时,取值范围为0~15;用文字表示时,可以选取max-reliability(2)、max-throughput(4)、min-delay(8)、min-monetary-cost(1)、normal(0) |
dscp dscp |
报文优先级 |
DSCP优先级 |
dscp用数字表示时,取值范围为0~63;用文字表示时,可以选取af11(10)、af12(12)、af13(14)、af21(18)、af22(20)、af23(22)、af31(26)、af32(28)、af33(30)、af41(34)、af42(36)、af43(38)、cs1(8)、cs2(16)、cs3(24)、cs4(32)、cs5(40)、cs6(48)、cs7(56)、default(0)、ef(46) |
logging |
日志操作 |
对符合条件的报文可记录日志信息 |
- |
fragment |
分片信息 |
定义规则仅对分片报文有效 |
在SA(例如LSQ1FP48SA)和EA(例如LSQ1GP12EA)单板上应用的fragment参数匹配非尾片分片报文,在SC(例如LSQ1GP24SC)单板上应用的fragment参数匹配非首片分片报文 |
time-range time-name |
时间段信息 |
指定规则生效的时间段 |
time-name:指定规则生效的时间段名称,为1~32个字符的字符串,不区分大小写,必须以英文字母a~z或A~Z开头,为避免混淆,时间段的名字不可以使用英文单词all |
vpn-instance vpn-instance-name |
VPN实例 |
指定规则的VPN实例信息 |
vpn-instance-name:VPN实例的名称,为1~31个字符的字符串,区分大小写 如果规则没有指定本参数,表示该规则仅对非VPN报文生效 |
当protocol选择为tcp或者udp时,用户还可以定义如表19-4所示信息。
19-4 TCP/UDP特有的规则信息
参数 |
类别 |
作用 |
说明 |
source-port operator port1 [ port2 ] |
源端口 |
定义TCP/UDP报文的源端口信息 |
operator为操作符,取值可以为lt(小于)、gt(大于)、eq(等于)、neq(不等于)或者range(在范围内,包括边界值)。只有操作符range需要两个端口号做操作数,其他的只需要一个端口号做操作数 port1、port2:TCP或UDP的端口号,用数字表示时,取值范围为0~65535;用文字表示时,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(137)、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) 操作符为range时,port2的取值不需要一定大于port1的取值,交换机会自动识别取值范围;当port1和port2的取值相同时,交换机会将操作符range转换为eq 另外需要注意的是,当用户配置操作符为lt 1或gt 65534时,交换机会将其转换为eq 0或eq 65535 |
destination-port operator port1 [ port2 ] |
目的端口 |
定义TCP/UDP报文的目的端口信息 | |
established |
TCP连接建立标识 |
定义对TCP连接报文的处理规则 |
定义规则匹配带有ack标志的TCP连接报文 |
reflective |
自反标志 |
配置规则具有自反属性 |
动作类型只支持permit |
当protocol选择为icmp时,用户还可以定义如表19-5所示信息。
19-5 ICMP特有的规则信息
参数 |
类别 |
作用 |
说明 |
icmp-type { icmp-type icmp-code | icmp-message } |
ICMP报文的消息类型和消息码信息 |
指定规则的ICMP报文的消息类型和消息码信息 |
icmp-type:ICMP消息类型,取值范围为0~255 icmp-code:ICMP的消息码,取值范围为0~255 icmp-message:ICMP消息的名称,可以输入的ICMP消息名称,及其与消息类型和消息码的对应关系如表19-6所示 |
reflective |
自反标志 |
配置规则具有自反属性 |
动作类型只支持permit |
19-6 ICMP消息名称与消息类型和消息码的对应关系
名称 |
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的匹配顺序为config时,用户可以修改该ACL中的任何一条已经存在的规则,在修改ACL中的某条规则时,该规则中没有修改到的部分仍旧保持原来的状态;当ACL的匹配顺序为auto时,用户不能修改该ACL中的任何一条已经存在的规则,否则系统会提示错误信息。
在定义一条ACL规则的时候,用户可以不指定规则编号,这时,系统会从0开始,按照一定的编号步长,自动为规则分配一个大于现有最大编号的最小编号。假设现有规则的最大编号是28,编号步长是5,那么系统分配给新定义的规则的编号将是30。
新创建或修改后的规则不能和已经存在的规则相同,否则会导致创建或修改不成功,系统会提示该规则已经存在。
当ACL的匹配顺序为auto时,新创建的规则将按照“深度优先”的原则插入到已有的规则中,但是所有规则对应的编号不会改变。
当高级ACL被QoS策略引用对报文进行流分类时,请遵循如下约束:
n 当QoS策略应用于入方向(inbound)时,不支持配置logging、reflective和vpn-instance参数;不支持配置操作符operator取值为neq。
n 当QoS策略应用于出方向(outbound)时,不支持配置logging、reflective和vpn-instance参数;不支持配置操作符operator取值为gt、lt、neq和range。
下面是一个使用高级ACL rule命令定义一条高级ACL规则,允许从129.9.0.0网段的主机向202.38.160.0网段的主机发送的端口号为80的TCP报文通过的示例。
[Sysname] acl number 3000
[Sysname-acl-adv-3000] rule permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq 80
2. 高级ACL配置示例
本示例要配置一个高级ACL 3000,允许129.9.0.0网段的主机向202.38.160.0网段的主机发送端口号为80的TCP报文。具体配置命令和显示信息如下:
[Sysname] acl number 3000
[Sysname-acl-adv-3000] rule permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq 80
[Sysname-acl-adv-3000] display acl 3000
Advanced ACL 3000, named -none-, 1 rule,
ACL's step is 5
rule 0 permit tcp source 129.9.0.0 0.0.255.255 destination 202.38.160.0 0.0.0.255 destination-port eq www