ACL 是一系列有序语句的组合,用唯一的数值编号或名称标识。

目的是对经过的数据包做分析判断,然后决定是否让他通过,判断的标准是,sourceIP(对于标准ACL而言之有这一个)destinationIP, 协议,端口。

ACL将允许所有流量,就像没有使用任何ACL一样。但是不同的是,一旦其中有了一条语句,不管是permit还是deny,最后就会有一条隐藏的denyany any。所以,在实际配置中一定要先写完ACL,再应用到接口上。

这里打一个比喻,路由器交换机相当于一个有N个进出口的检查站,每个进出口都配有两个保安(IOS的守护进程,具体的我不清楚,以我个人的推测可能是这样,大致不会差),一个负责检查进来的人(in),一个负责检查出去的人(out),ACL的这个list,就是一个任务或人员清单,也就是这些保安要核查的人的名单。当是空ACL的时候,也就是说,给你保安一张白纸,他就不会有行动,所有的进进出出都不管。一旦有了命令,他就会全权负责,根据人的从哪里来(源IP,要到那里去(目的IP,职业(这个比喻协议,似乎有点不恰当,但是没想到更好的),带了什么东西(端口是运输层的信息,可以说明是什么服务的数据包,也就相当于确定了带的东西。)来判断是放行(permit)还是不允许通过(deny)。为了尽可能地保证安全,还会选择,不允许没有出现在命令清单中的人通过(隐式拒绝denyany any.)

可应用的接口可以是物理接口,逻辑接口。

标准ACL实例:

R1#conf t //进入配置全局模式

R1(config)#access-list 1 deny 10.10.1.0 0.0.0.255 //创建ACL , 注意通配符,若没有就需要完全匹配。

R1(config)#access-list 1 deny 10.10.2.0 0.0.0.255

R1(config)#access-list 1 permit any

R1(config)#int f0/0 //进入端口配置模式

R1(config-if)#ip access-group 1 out // 在端口上启用该ACL.

ACLVTY的限制:

R2(config)# access-list 99 permit 192.168.1.0 0.0.0.255

R2(config)# Line vty 0 4

R2(config-line)# access-class 99 in

//out 参数会限制经过这台设备到达目的IPtelnet,connect,ssh流量.

扩展ACL:

标号范围是100~199,2000~2699.

语句中可使用的协议包括:ip,icmp,tcp,gre,udp,igrp,eigrp,igmp,ipinip,nos,ospf.

与编号ACL不同,命名ACL可以删除单个条目而不是整个ACL.

相关命令关键词:

Terminal monitor //可以实时显示匹配情况

Remark //用于注释

Ip access-list {standard/extended} acl-name/# //相当于进入ACL列表里

No # //这两条用于删除其中一个条目

# permit/deny xx //用于添加一条

Ip access-list resequence acl-name starting# increment //ACL条目重排序,初始编号,增量。

标准ACL应尽量靠近目的站点,保证不至于影响原站点的其他服务,因为只更具IP地址做出判断。但是这回造成整个网络的带宽浪费。

扩展ACL则可以解决以上问题,及时靠近源站点也可以很好的控制具体服务而不影响其他服务。