我们知道访问控制列表(ACL)是为了对路由器处理的流量进行过滤而在路由器上建立的规则,在今天路由的世界里它在改善网络性能和加强网络安全等方面已经发挥出越来越重要的作用。但这个玩意是如何发挥作用的?教材上已经有详细的描述,我们这里简单的说一下。

我们来看看ACL的本质,ACL是访问控制列表的英文缩写,顾名思义,这个是在访问中加于控制而建立的一张列表。现在,很多企业内部都在使用路由的NAT技术进行地址转换,而NAT技术中就包含了ACL的应用。在中高端的路由中,通过ACL,我们可以控制哪些私有地址能上外网,哪些只能上内网。然后把这些过滤好的数据,进行NAT转换。同时,企业内部也需要对服务器的资源访问进行控制,通过ACL过滤出哪些用户能完全访问,哪些用户只能限制访问,哪些用户不能访问。

在从实际应用中,我们可以这样理解ACL的本质其实是一种流量分类技术,它是人为定义的一组或几组规则策略,目的是通过网络设备对数据流分类,以便执行用户规定的动作。换句话说,ACL本身不能直接达到访问控制的目的,它间接辅助特定的用户策略,达到人们所需效果的一种技术手段(区分不同的数据流)。

理解的ACL的本质后我们再来看访问控制列表的作用
1.提供网络访问的基本安全手段
2.访问控制列表可用于QOS,对数据流量进行控制
3.提供对通信流量的控制
访问控制列表应用不同决定了路由不同的处理过程
1.路由器对进入的数据包先检查入访问控制列表,对允许传输的数据包才查询路由表
2.而对于外出的数据包则先查询路由表,确定目标接口后才查看出访问控制列表

接一下再来看访问控制列表的工作原理:
ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。ACL适用于所有的路由器协议:如IP、IPX、AppleTalk,可以在路由器或多层交换机来配置来控制来自特定网络资源的访问。
ACL的两种类型
1.标准访问控制列表:检查被路由数据包的源地址,使用1到99,1300至1999之间的数字作为表号,应该把标准列表放在离目标地址近的地方。
2.扩展访问控制列表:对数据包的源地址与目标地址都进行检查,也能进行协议、端口号,使用100到199,2000至2699之间的数字来作为表号,根据源和目的IP地址、源和目的端口、协议类型等信息作出过滤,应该把扩展列表放在离源地址近的地方。

实例讲解:
在访问控制列表中使用反码来标记一个或多个地址是被允许还是拒绝。0表示要检查的位,1代表不检查要忽略的位。通配符any可以替代0.0.0.0 255.255.255.255,host可代表反码位全0的情况即0.0.0.0
通过命名访问控制列表可以对已有的语名进行删除、添加等操作,而不必去掉整个条目,在IOS11.2以后的版本上支持
一些访问控制语句例子,我们来看:
标准ACL配置
r(config)#access-list access-list-number{permit | deny | remark}  source [widcard-mask]
                                    编号                  允许 | 拒绝 | 注释                     通配符掩码
省略通配符掩码,则默认为0.0.0.0,这仅限于表转ACL
remark  为ACL添加注释
no access-list access-list-number   通过这条删除整个ACL

根据ACL两种类型可以分为如下二种
基本:Switch#access-list access-list-number(1~99) {permit|deny}{anyA|source[source-wildcard-mask]}{any|destination[destination-mask]}
扩展:Switch#access-list access-list-number(100~199) {permit|deny} protocol{any|source[source-mask]}{any|destination[destination-mask]}[port-number]

基本式的:
access-list 10  permit 192.168.10.0   0.0.0.255         允许192.168.10.0这个网段访问
ip access-group 1 in                                               把标准访问控制列表1应用到接口上
access-list 20 deny 172.16.0.0 0.0.255.255              禁止172.16.0.0网络上的主机访问
access-list 30 permit 0.0.0.0 255.255.255.255          允许所有IP的访问
access-list 40 deny 192.168.10.5 0.0.0.0                   禁止192.168.10.5主机的通信

再来看一下扩展式实例
access-list 100 deny tcp any any eq ftp                 禁止网上FTP下载  any(可以替代0.0.0.0 255.255.255.255
access-list 110 permit tcp any any eq www            允许www上网

access-list 120 permit tcp host 192.168.0.10 host 192.168.0.20  eq telnet         

                                                                         允许192.168.0.10这台主机通过telnet访问192.168.0.20主机
access-list 130 permit icmp any any                      允许icmp数据包从任何地址到任何地址
access-list 140 permit tcp 192.168.10.0 0.0.0.255 172.16.1.0 0.0.0.255 eq 80            
                                                                           允许192.168.10.0网络通过WEB80端口访问172.16.1.0的服务器
到此,相信你应该有个比较清楚的了解了。同时也完全解释了BBS中有人曾提到的ACL访问的疑问。