配置ACL

介绍了MA5680T设备中ACL分类、ACL规则及其相关配置。

背景信息

ACL(Access Control List),即访问控制列表,通过配置的一系列匹配规则对特定的数据包进行过滤,从而识别需要过滤的对象。在识别出特定的对象之后,根据预先设定的策略允许或禁止相应的数据包通过。ACL过滤报文流过程是在为进行QoS或用户安全的配置做准备。

ACL分类如表1所示。

表1 ACL分类列表

类别

取值范围

特点

基本ACL

2000~2999

只能根据三层源IP制定规则,对数据包进行相应的分析处理。

高级ACL

3000~3999

可以根据数据包的源IP地址信息、目的IP地址信息、IP承载的协议类型、针对协议的特性(例如TCP的源端口、目的端口、ICMP消息的类型)等内容制定规则。

利用高级ACL制定比基本ACL更准确、更丰富、更灵活的规则。

链路层ACL

4000~4999

可以根据源MAC地址、VLAN ID、二层协议类型、目的MAC地址等链路层信息制定规则,对数据进行相应处理。

用户自定义ACL

5000~5999

可以根据二层数据帧的前80个字节中的任意32字节进行匹配,对数据报文作出相应的处理。

当一条报文流到达,与两条以上的流规则相匹配,系统匹配顺序如下:

· 同一条ACL内的子规则,如果同时激活,默认先配置的规则较后配置的规则具有更高的执行优先级。

· 同一条ACL内的子规则,如果是逐条单独激活,则后激活的规则较先激活的规则具有更高的执行优先级。

· 不同的ACL间下发的子规则,后激活的子规则较先激活的子规则具有更高的执行优先级。

注意事项

由于ACL在使用上灵活多变,所以在配置上给出以下建议:

· 建议在任何一条ACL的子规则里,首先定义一条普遍适用的规则,例如permit any 或者deny any,使任何报文都有一条流规则与之匹配,就能确认没有特别标识的报文默认是转发还是过滤。

· 激活后的ACL规则会占用到硬件资源,与协议模块(例如DHCP,IPoA等)功能共享硬件资源,同时这部分硬件资源较为有限,因此不可避免存在资源不足的情况。为了避免因为ACL占用相关硬件资源,而造成其他业务功能启动失败的情况,建议用户在配置数据时先启动协议模块,然后再激活ACL。出现启动某个协议模块失败的情况,处理思路如下:

1. 首先考虑是否是因为ACL占用资源过多而导致启动失败。

2. 如果确认是ACL问题,可以去激活或者删除一部分不重要,或者暂时不使用的ACL配置后,再来进行协议模块的配置和启用。

 

基本ACL:

举例:每周五的00:00 到12:00,MA5680T的0/9/0端口只能接收来自2.2.2.2的数据包,其他数据包将被丢弃。

huawei(config)#time-range time1 00:00 to 12:00 fri

huawei(config)#acl 2000

huawei(config-acl-basic-2000)#rule permit source 2.2.2.2 0.0.0.0 time-range time1

huawei(config-acl-basic-2000)#rule deny time-range time1

huawei(config-acl-basic-2000)#quit

huawei(config)#packet-filter inbound ip-group 2000 port 0/9/0

高级ACL :

高级ACL的编号取值范围为:3000~3999。

高级ACL支持根据以下信息对报文进行流分类:

协议类型

源IP地址

目的IP地址

源端口号(UDP或者TCP报文的源端口)

目的端口号(UDP或者TCP报文的目的端口)

ICMP报文的类型

precedence值:数据包的优先级字段

ToS(Type of Service)值:数据包的服务类型字段

DSCP(Diff-Serv Code Point)值:数据包的差分服务编码点

huawei(config)#acl 3001

huawei(config-acl-basic-3001)rule 1 deny icmp destination 10.10.10.101 0

huawei(config-acl-basic-3001)rule 2 deny tcp destination 10.10.10.101 0 destination-port eq telnet

huawei(config-acl-basic-3001)quit

huawei(config)#packet-filter inbound ip-group 3001 rule 1 port 0/1/0

huawei(config)#packet-filter inbound ip-group 3001 rule 2 port 0/1/0

huawei(config)#save

链路层ACL:

链路层ACL的编号取值范围为:4000~4999。

链路层ACL支持根据以下链路层的信息进行分类:

以太网承载的协议类型

802.1p优先级

VLAN ID信息

源MAC地址

目的MAC地址

操作步骤

举例:创建一条允许源MAC地址为2222-2222-2222、目的MAC地址为00e0-fc11-4141、VLAN ID为12、COS 值为1、类型为0x8863(pppoe-control消息)的数据包通过的规则。

huawei(config)#acl 4001

huawei(config-acl-link-4001)rule 1 permit type 0x8863 cos 1 source 12

2222-2222-2222 0000-0000-0000 destination 00e0-fc11-4141 0000-0000-0000

huawei(config-acl-basic-4001)quit

huawei(config)#save

 

用户自定义ACL:

用户自定义ACL访问控制列表可以根据数据帧的前80个字节中的任意32字节制定ACL规则。

图1 数据帧的前64个字节示意图
clip_image002

表1 字母与其含义对照列表

字母

含义

偏移量

字母

含义

偏移量

A

目的MAC地址

0

L

IP校验和

28

B

源MAC地址

6

M

源IP地址

30

C

VLAN tag字段

12

N

目的IP地址

34

D

协议类型

16

O

TCP源端口

38

E

IP版本号

18

P

TCP目的端口

40

F

TOS字段

19

Q

序列号

42

G

IP包的长度

20

R

确认字段

46

H

ID号

22

S

IP头长度和保留比特位

50

I

Flags字段

24

T

保留比特位和flags比特位

51

J

TTL字段

26

U

Window Size字段

52

K

协议号(6代表TCP,17代表UDP)

27

V

其他

54

clip_image001 说明:

各个字段的偏移量是它们在ETH II+VLAN tag数据帧中的偏移量。在用户自定义ACL中,用户可以使用规则掩码和偏移量两个参数共同从数据帧中提取前80个字节中的任意字节,然后和用户定义的规则比较,从而过滤出匹配的数据帧,作相应的处理。

任务示例

举例:从0/3/0端口送到MA5680T的报文为携带两层VLAN tag的QinQ报文,现在要求将外层VLAN(其内层VLAN ID为10)的cos优先级修改为5。

图2 QinQ报文格式
clip_image003

huawei(config)#acl 5001

huawei(config-acl-user-5001)#rule 1 permit 8100 ffff 16

clip_image001[1] 说明:

QinQ报文的类型值,不同的厂家有不同的设置,华为公司采用默认的0x8100。如图2所示,该类型值的偏移量应该是16个字节。

huawei(config-acl-user-5001)#rule 10 permit 0a ff 19

clip_image001[2] 说明:

19是指以数据包的头部为基准,偏移19个字节进行“与”操作。0a是指QinQ报文中内层TAG字段的取值。在本例中,内层TAG字段中第2个字节是VLAN ID的一部分,正好是内层VLAN ID的值(VLAN 10)。

huawei(config-acl-user-5001)#quit

huawei(config)#traffic-priority inbound user-group 5001 cos 5 port 0/3/0