标准ACL,扩展ACL
ACL概述
名为访问控制列表,对数据包进行过滤,工作在三层,在接口上启用。
ACL类型有三大类,基于编号ACL,基于名称ACL,基于时间ACL,这里只讲常用的编号ACL
- 基于编号ACL
- 标准ACL——使用编号1-99和1300-1999功能简单。只对源IP进行过滤。
用法如下
access-list ACL编号 {permit或者deny} 来源IP 通配符屏蔽码
(通配符屏蔽码,也叫子网掩码反掩码,不懂就跟子网掩码反着写就对了) - 扩展ACL——使用编号100-199和2000-2699。功能强大,能够应用到各种环境,可对协议类型,源IP,目的IP,端口号进行过滤
用法如下
access-list ACL编号 {permit或者deny} 协议类型 来源IP 通配符屏蔽码 目的IP 通配符屏蔽码 【选填功能】
以上标准或扩展ACL写完后,在接口上启用如下
ip access-group ACL编号 in或者out
ACL执行规则
查看下图标准ACL表(show access-lists)
-
表中有写两条ACL语句,序号为10和20,在写入规则时,系统默认加10写入,方便以后在中间插入规则。
-
程序查看ACL表时从上往下执行。当经过接口的数据包匹配到ACL语句时将结束查看,根据语句允许转发或者拒绝转发。
-
当数据包不符合任何语句时默认丢弃,也就是说在表的最后面默认有一条隐藏ACL语句——拒绝转发所有数据包。
-
所以通常在编写完后都加一条允许所有数据包转发(如上图序号20 permit any)以保证其他数据包能够正常转发。
实验部分
实验环境:Cisco Packet Tracer7.0
拓扑结构如下
以下为IP及rip配置,使网络各节点可通,可忽略不看
Router>en //R1
Router#configure terminal
R1(config)#hostname R1
R1(config)#interface f0/0
R1(config-if)#ip address 192.168.1.254 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#interface s2/0
R1(config-if)#ip address 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#clock rate 64000
R1(config-if)#exit
R1(config)#router rip
R1(config-router)#network 192.168.1.0
R1(config-router)#network 12.1.1.0
Router>en //R2
Router#configure terminal
Router(config)#hostname R2
R2(config)#interface s2/0
R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#interface f0/0
R2(config-if)#ip address 192.168.2.254 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#interface f1/0
R2(config-if)#ip add 192.168.3.254 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#router rip
R2(config-router)#network 12.1.1.0
R2(config-router)#network 192.168.2.0
R2(config-router)#network 192.168.3.0
配置开始
- 标准ACL——实验目的:拒绝PC1到PC3的网络
//在R2上配置
//在全局配置下写ACL语句
R2(config)#access-list 1 deny 192.168.1.0 0.0.0.255 //拒绝192.168.1.0网络
R2(config)#access-list 1 permit any //允许所有
//到接口启用
R2(config)#interface f1/0
R2(config-if)#ip access-group 1 out //f1/0启用编号为1的ACL列表 out表示数据从接口出去时启用
PC1 ping PC3和PC2
当PC1的ping包到R2时被 匹配到deny 数据包被拒绝,由于在f1/0上启用,PC1与PC2正常通信。
R2(config-if)#no ip access-group 1 out //在f1/0接口取消启用,让网络重新互通。
扩展ACL——实验目的:拒绝PC1到PC3的ICMP包
R1(config)#access-list 100 deny icmp 192.168.1.0 0.0.0.255 192.168.3.1 0.0.0.255
//拒绝来自R1到目的R3的ICMP包(ping网络时用的就是ICMP协议)
R1(config)#access-list 100 permit icmp any any
//允许所有ICMP包
R1(config)#interface f0/0
R1(config-if)#ip access-group 100 in
同理PC1 ping PC3 被拒绝。
注意:这里没有允许其他协议的数据包,其他协议都被拒绝了。
实验结束
拓展:——关于在哪个接口启用问题
实验中,标准ACL在R2的f1/0启用。拓展ACl在R1的f0/0接口启用。
标准ACL只能对来源IP进行过滤,可以看出在拓扑结构中其他接口启用都会导致PC1到PC2的数据包也被一同拒绝。
扩展ACL已经知道数据包目的IP地址,能够精准控制,不会出现误伤。所以扩展ACl只要启动在PC1到PC2的必经之路上就可以。若在R2的f1/0启用还是要经过R1,浪费R1算力,带宽等。
所以
配置标准ACL时应靠近目的IP,避免误伤。
配置扩展ACL时接近源IP,省带宽。
文章为个人整理笔记,如有错误,请评论指出。