ACL
访问控制列表(Access Control List,ACL)是目前使用最多的访问控制实现技术。
访问控制列表是路由器接口的指令列表,用来控制端口进出的数据包。
ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。访问控制列表可以分为基本访问控制列表和高级访问控制列表。
ACL的默认执行顺序是自上而下,在配置时要遵循最小特权原则、最靠近受控对象原则及默认丢弃原则。
华为设备ACL分类如表所示。
分类 | 编号范围 | 支持的过滤选项 |
---|---|---|
基本ACL | 2000~2999 | 匹配条件较少,只能通过源IP地址和时间段来进行流量匹配,在一些只需要进行简单匹配的功能中可以使用 |
高级 ACL | 3000~3999 | 匹配条件较为全面,通过源IP地址、目的IP地址、ToS、时间段、协议类型、优先级、ICMP报文类型和ICMP报文码等多个维度对流量进行匹配,在大部分功能中都可使用高级ACL进行精确流量匹配 |
基于MAC地址的ACL | 4000~4999 | 由于数据链路层使用MAC地址来进行寻址,所以在控制数据链路层帧时需要通过MAC地址来对流量进行分类 。基于MAC地址的ACL 就可以通过源MAC地址、目的MAC地址、CoS、协议码等维度来进行流量匹配 |
ACL规则匹配方式有以下两种:
(1)配置顺序。配置顺序根据ACL规则的I进行排序,ID小的规则排在前面,优先进行匹配。当找到第一条匹配条件的规则时,查找结束。系统按照该规则对应的动作处理。
(2)自动顺序。自动顺序也叫深度优先匹配。此时ACL规则的ID由系统自动分配,规则中指定数据包范围小的排在前面,优先进行匹配。当找到第一条匹配条件的规则时,查找结束。系统按照该规则对应的动作处理。
1)对于基本访问控制规则的语句,直接比较源地址通配符,通配符相同的则按配置顺序。
2)对于高级访问控制规则,首先比较协议范围,再比较源地址通配符,都相同时比较目的地址通配符,仍相同时则比较端口号的范围,范围小的排在前面,如果端口号范围也相同则按配置顺序。
ACL配置步骤如下:
(1)执行命令system-view
,进入系统视图。
(2)执行命令acl [number ] acl-number [match-order {config| auto } ]
,创建基本ACL并进入相应视图。
1)acl-number的取值决定了ACL的类型,ACL的取值范围基本在2000~2999之间。
2)match-order指定了ACL各个规则之间的匹配顺序:选择参数config,ACL的匹配顺序按照规则ID来排序,ID小的规则排在前面,优先匹配;选择参数auto,将使用深度优先的匹配顺序。默认值是config,按照规则ID来排序。
(3)执行命令,创建基本ACL规则。
rule [rule-id]{deny|permit} [logging|source{source-ip-address {0|sourcewildcard}| address-setaddress-set-name|any} |time-rangetime-name]*[descriptiondescription]
如配置时没有指定编号rule-id,表示增加一条新的规则,此时系统会根据步长,自动为规则分配一个大于现有规则最大编号且是步长整数倍的最小编号。如配置时指定了编号rule-id,如果相应的规则已经存在,表示对已有规则进行编辑,规则中没有编辑的部分不受影响;如果相应的规则不存在,表示增加一条新的规则,并且按照指定的编号将其插入到相应的位置。
配置好ACL,还需要将ACL应用到相应的接口才会生效。应用ACL时,为了尽可能提高效率和降低对网络的影响,通常基本ACL尽量部署在靠近目标主机的区域接口上,而高级ACL尽量部署在靠近源主机所在区域的接口上。
在AR系列路由器中,也可以使用以下方式应用ACL:
interface GigabitEthernet0/0/1
traffic-filter inbound acl 3000
//在接口上应用ACL进行报文过滤