ACL是一组判断语句的集合,它主要用于对如下数据进行控制:
1、入站数据;
2、出站数据;
3、被路由器中继的数据
工作过程
1、无论在路由器上有无ACL,接到数据包的处理方法都是一样的:当数据进入某个入站口时,路由器首先对其进行检查,看其是否可路由,如果不可路由那么就丢弃,反之通过查路由选择表发现该路由的详细信息——包括AD,METRIC……及对应的出接口;
2、这时,我们假定该数据是可路由的,并且已经顺利完成了第一步,找出了要将其送出站的接口,此时路由器检查该出站口有没有被编入ACL,如果没有ACL 的话,则直接从该口送出。如果该接口编入了ACL,那么就比较麻烦。第一种情况——路由器将按照从上到下的顺序依次把该数据和ACL进行匹配,从上往下,逐条执行,当发现其中某条ACL匹配,则根据该ACL指定的操作对数据进行相应处理(允许或拒绝),并停止继续查询匹配;当查到ACL的最末尾,依然未找到匹配,则调用ACL最末尾的一条隐含语句deny any来将该数据包丢弃。
对于ACL,从工作原理上来看,可以分成两种类型:
1、入站ACL
2、出站ACL
上面的工作过程的解释是针对出站ACL的。它是在数据包进入路由器,并进行了路由选择找到了出接口后进行的匹配操作;而入站ACL是指当数据刚进入路由器接口时进行的匹配操作,减少了查表过程
并不能说入站表省略了路由过程就认为它较之出站表更好,依照实际情况而定:
如图所示,采用基本的ACL——针对源的访问控制
要求如下:
1、拒绝1.1.1.2访问3.1.1.2但允许访问5.1.1.2
2、拒绝3.1.1.2访问1.1.1.2但允许访问5.1.1.2
采用基本的ACL来对其进行控制
R1(config)#access-list 1 deny 1.1.1.2 0.0.0.255
R1(config)#access-list 1 permit any
R1(config)#int e0
R1(config-if)#access-group 1 in
R2(config)#access-list 1 deny 3.1.1.2 0.0.0.255
R2(config)#access-list 1 permit any
R2(config)#int e0
R2(config-if)#access-group 1 in |
从命令上来看,配置似乎可以满足条件。