访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
ACL本质上是一种报文过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用ACL的业务模块的处理策略来允许或阻止该报文通过。
基于ACL规则定义方式,可以将ACL分为基本ACL、高级ACL、二层ACL等种类。基本ACL根据源IP地址、分片信息和生效时间段等信息来定义规则,对IPv4报文进行过滤。如果只需要根据源IP地址对报文进行过滤,可以配置基本ACL。
1.“3P”原则
在路由器上应用ACL时,可以为每种协议(Per Protocol)、每个方向(Per Direction)
和每个接口(Per Interface)配置一个ACL,一般称为“3P原则”。
(1)一个ACL只能基于一种协议,因此每种协议都需要配置单独的ACL。
(2)经过路由器接口的数据有进(ln)和出(Out)两个方向,因此在接口上配置访问控制列表也有进(In)和出(Out)两个方向。每个接口可以配置进方向的ACL,也可以配置出方向的ACL,或者两者都配置,但是一个ACL只能控制一个方向。
(3)一个ACL只能控制一个接口上的数据流量,无法同时控制多个接口上的数据流量。
2.语句顺序决定了对数据的控制顺序
ACL的语句是一种自上而下的逻辑排列关系。数据匹配过程中是依次对语句进行比较,一旦匹配成功则按照当前语句控制策略处理,不再与之后的语句进行比较。因此,正确的语句顺序才能得到所需的控制效果。
3.至少有一条允许(Permit)语句
所有ACL的最后一条语句都是隐式拒绝语句,表示当所有语句都无法匹配时,将拒绝数据通过并自动丢弃数据,以防数据意外进入网络。因此,在写“拒绝(deny)”的ACL时,一定至少要有一条允许(Permit)语句,否则配置ACL的接口将拒绝任何数据通过,影响正常的网络通信。
4.最有限制性的语句应该放在ACL的靠前位置
最有限制性的语句放在ACL的靠前位置,可以首先过滤掉很多不符合条件的数据,节省后面语句的比较时间,从而提高路由器的工作效率。
华为与思科的访问控制列表序号有所不同,如下
acl 访问控制列表,对匹配的数据进行限制.
基本acl 2000~2999 可以对源ip限制
高级acl 3000~3999 可以对源ip,目标ip,协议,端口限制
按照图-2所示拓扑结构,禁止主机pc2与pc1通信,而允许所有其他流量
配置思路:
①在路由器上配置两个端口,设置好ip地址
②配置好主机的ip/子网掩码/网关
③在路由器上添加一条访问控制权限,基本acl 2000
④把这条acl限制规则应用到g0/0/1的端口上(可以称作监听端口)
R1配置:
测试:
1) pc1 ping pc3 , 通信成功
2) pc1 ping pc2, 通信失败
3) pc2 ping pc3, 通信成功
还是刚才的案例,将[Huawei-acl-basic-2000]rule deny source 192.168.2.1 0更改为
[Huawei-acl-basic-2000]rule deny any 即可
实验要求:仅允许pc2访问pc1
根据acl规则4:最有限制性的语句应该放在ACL的靠前位置 和规则3: 至少有一条允许(Permit)语句
配置如下:
实验要求: 禁止pc2访问pc1的ftp服务,禁止pc3访问pc1的www服务,所有主机的其他服务不受限制
tcp与http都是基于tcp协议的,所以我们可以拒绝tcp协议来限制
R1配置: