什么是ACL

ACL(Accress Control List)访问控制列表
用来实现数据包识别功能的一个组件
他可以针对数据的五元组进行进行条件匹配
比较典型的几个ACL应用:

  • 包过滤
    基于访问控制列表的包过滤,可以针对某些访问敏感数据的数据包进行过滤
  • NAT
    可以针对网络地址转换,来匹配需要被转换的地址
  • QoS
    QoS服务质量,ACL同样可以实现数据的分类和匹配
  • 路由策略
    用于匹配路由器上的各种路由信息,需要实施策略时候调用
  • 拨号
    各种建立连接需要拨号的场景,可以用ACL来匹配数据

基于ACL的包过滤

包过滤
通常在路由器上实现包过滤的核心内容就是ACL
他可以对进出的数据包逐个过滤,规则丢弃或者是允许通过
且包过滤具有方向性,每个接口的出入站方向(Outbound)(Inbound)

ACl包过滤流程

包过滤流程
ACL 规则的匹配条件主要包括数据包的源 IP 地址、目的 IP 地址、协议号、源端口号、目的端口号等(这就是五元组)另外还可以有 IP 优先级、分片报文位、MAC 地址、VLAN 信息等,不同的 ACL分类所能包含的匹配条件也不同,其中,ACL的规则动作有两个:允许(Permit)和拒绝(Deny)
入图上所示:
根据规则递进查询,匹配规则看规则是允许还是拒绝,拒绝则丢弃,允许则放行
如果所有的都匹配完了还没有进行操作,则匹配最后的默认规则,是放行还是拒绝
[H3C] (包过滤)默认允许(其他拒绝)
[Cisco] 默认拒绝

通配符掩码

就是我们常说的反网掩码,简单的计算算法就是由255减去子网掩码所得的数位。
反网掩码通常用于匹配一个地址范围
实例

ACl的标识

根据所过滤的数据类型不同,分为一下三个类
基本ACL高级ACL二层ACL

基本ACL

序号范围2000 - 2999
只针对于报文的源IP地址进行匹配
实例

高级ACL

序号范围3000 - 3999
根据报文的源IP地址信息、目的IP地址信息、IP承载的协议类型、协议的特性等三、四层信息制定规则
实例

二层ACL

序号范围4000 - 4999
根据报文的源 MAC 地址、目的 MAC 地址、VLAN优先级、二层协议类型等二层信息制定规则
实例

如何配置ACL

acl basic [acl-number] 
//创建基本ACL
acl advanced [acl-number]
//创建高级ACL
[基本ACL视图] rule [rule-id] permit/deny source [ip address] [wild-mask]
//创建 [rule-id]的规则,规则是允许/拒绝 源地址匹配 [ip address] [反网掩码匹配范围]
[高级ACL视图] rule [rule-id] permit/deny [protocol] source [ip address] [wild-mask] source-port [port] destination [ip address] [wild-mask] destination-port [eq/lt/gt/neq]
//创建[rule-id]的规则,规则是允许/拒绝 [协议/udp/tcp] 源地址为[ip address] [反网掩码匹配] 源端口[port] 目的地址 [ip address] [反网掩码匹配] 目的端口 [范围是eq(等于)gt(大于)lt(小于)neq(不等于)range(之间)]
[接口视图]packet-filter [acl-number] [inbound/outbound]
//在接口中应用ACL规则,配置在接口的入方向或者出方向
[系统视图] packet-filter default deny/permit
//更改默认动作为允许or拒绝

ACL配置注意事项

一个 ACL 中可以包含多个规则,而每个规则都指定不同的报文匹配选项,这些规则可能存在动作冲突。由于 ACL 规则是顺序匹配的,如果发生动作冲突,将以先命中的规则的动作为准
实例
不同顺序的匹配会导致结果不同
因此,在配置ACL的场景下尽可能在靠近数据源的路由器接口上配置ACL以减少不必要的流量转发
例如:

高级ACL

应该在靠近被过滤源的接口上应用ACL,以尽早阻止不必要的流量进入网络
高级ACL部署

基本ACL

过于靠近被过滤源的基本ACL可能阻止该源访问合法目的,应在不影响其他合法访问的前提下,尽可能使ACL靠近被过滤的源
基本ACL部署