配置ACL
介绍了MA5680T设备中ACL分类、ACL规则及其相关配置。
背景信息
ACL(Access Control List),即访问控制列表,通过配置的一系列匹配规则对特定的数据包进行过滤,从而识别需要过滤的对象。在识别出特定的对象之后,根据预先设定的策略允许或禁止相应的数据包通过。ACL过滤报文流过程是在为进行QoS或用户安全的配置做准备。
ACL分类如所示。
表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个字节示意图
表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 |
说明:
各个字段的偏移量是它们在ETH II+VLAN tag数据帧中的偏移量。在用户自定义ACL中,用户可以使用规则掩码和偏移量两个参数共同从数据帧中提取前80个字节中的任意字节,然后和用户定义的规则比较,从而过滤出匹配的数据帧,作相应的处理。
任务示例
举例:从0/3/0端口送到MA5680T的报文为携带两层VLAN tag的QinQ报文,现在要求将外层VLAN(其内层VLAN ID为10)的cos优先级修改为5。
图2 QinQ报文格式
huawei(config)#acl 5001
huawei(config-acl-user-5001)#rule 1 permit 8100 ffff 16
说明:
QinQ报文的类型值,不同的厂家有不同的设置,华为公司采用默认的0x8100。如所示,该类型值的偏移量应该是16个字节。
huawei(config-acl-user-5001)#rule 10 permit 0a ff 19
说明:
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