一、ACL
1.作用
访问控制列表(Access Control List),是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL可以过滤网络中的流量,是控制访问的一种网络技术手段。
配置ACL后,可以限制网络流量,允许特定设备访问,指定转发特定数据包等。如可以配置ACL禁止局域网内的设备访问外部公共网络,或者只能使用FTP服务。ACL既可以在路由器上配置,也可以在具有ACL功能的业务软件上进行配置。

2.工作原理
一个端口执行哪条ACL,需要按照列表中的条件语句执行顺序来判断,如果一个数据包的报头跟表中某个条件判断语句相匹配,那么后面的语句就将被忽略,不再进行检查。
数据包只有在跟第一个判断条件不匹配时,它才会被交给ACL中的下一个条件判断语句进行比较。如果所有的ACL语句都检测完毕仍没有匹配的语句出口,则该数据包将视为被拒绝而被丢弃。

3.分类
--标准ACL
标准访问控制列表基于源IP地址过滤数据包,仅仅关注源IP地址,ID范围是1~99;
--扩展ACL
扩展访问控制列表基于源IP地址、目的IP地址、指定协议及端口来过滤数据包,ID范围是100~199;
--命名ACL
命名访问控制列表可以为ACL起一个有意义的名字,通过名称就可以得知该ACL要实现什么功能。同时,因为使用的是名称而不是数字,也就没有了ACL数量上的限制。

4.ACL的使用
--创建格式
access-list {ID} permint | deny x.x.x.x y.y.y.y
说明:
ID范围1~99 或100~199
permit 表示允许, deny 表示拒绝
x.x.x.x 表示一个IP地址或一个网络范围
y.y.y.y 是通配符,其中0表示匹配的位,1表示不匹配的位。
--举个例子:
access-list 1 permit 192.168.1.0 0.0.0.255
首先分析ACL的类型,ID号是1,所以是标准ACL;
其次分析ACL的匹配条件,提取源IP地址中与通配符0所对应的位,与acl中的条件进行比对,如果相同,则表示匹配成功,执行动作permit或deny;如果不同则表示匹配失败,继续查找下一个匹配条件。
--调用ACL
调用acl时要注意确定在正确时设备上、在正确的端口上、在正确的方向上。
如:
interface f0/0
ip access-group 1 in

注意:
-任何一个ACL后面都有一个隐含的deny any;
-当一个ACL中有多个条目时,对每个条件匹配时是按照序列号从小到大依次进行检查匹配的;
-标准ACL应该调用在距离目标近的位置;
-扩展ACL应该调用在距离源近的位置。

工作中常用命名的ACL
配置如下:
--创建:
#ip access-list standard notPing         // notPing 是自己命名的
#10 deny 192.168.1.2 0 0 0 0
#20 permint any
#exit
--调用:
#interface f0/0
ip access-group notPing

为了匹配更加精确的流量,我们使用扩展ACL
配置如下:
--创建:
#ip access-list extend notPing
#10 deny icmp host 192.168.1.2 host 192.168.1.254
#20 permit ip any any

--调用:
#interface f0/0
#ip access-group notPing in

--验证
#show ip access-list
#show ip interface f0/0