ACL概述
ACL:访问控制列表
- 是一个包含了多个“规则”的列表,不同规则通过 “规则号”进行区分
- 每个“规则”都包含:动作+条件两部分内容
- 动作分为:允许(permit)和拒绝(deny)
- 条件分为:地址、端口、通配符
- ACL本质上是一种报文过滤器,可以根据规则来过滤数据报文,比如允许数据通过,比如拒绝数据通过
ACL的作用
- 对网络中数据报文进行识别,实现对数据报文的精确控制
- 防止网络攻击,提高带宽利用率
ACL匹配原则
- 根据ACL规则编号从小到大匹配(编号越小越优先被匹配)
- 匹配即停止(匹配上了第一条规则,就按照规则的动作去执行,不在向下查找第二条规则)
- 如果数据报文没有匹配到第一条规则,继续向下查找第二条规则,如果匹配,则按照第二条规则的动作去执行
- 如果所有的规则都无法匹配,则执行隐含规则
- 隐含规则(默认规则):隐含规则有两个一个允许所有,一个拒绝所有
- 允许所有:只要使用traffic-filter调用ACL规则时默认规则是允许所有
- 拒绝所有:只要不使用traffic-filter调用ACL就是拒绝所有(没有规则就是拒绝所有)
拓扑
需求
- PC1不能访问Server1
- PC2可以访问Server1
- 允许其他所有流量互通(允许PC1访问PC2)
配置思路
- 分析PC1和Server1的数据转发路径
- 判断在那个设备上配置ACL
- 判断在那个接口上调用ACL
配置命令
第一步:配置PC1/2和Server1的IP地址,掩码,网关
第二步:在R1中配置ACL
R1配置:
[R1]int g0/0/0
[R1-G0/0/0]ip address 192.168.10.254 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip address 192.168.20.254 24
[R1-G0/0/1]int g0/0/2
[R1-G0/0/2]ip address 192.168.30.254 24
[R1-G0/0/2]quit
[R1]acl 2000 //创建基本ACL
[R1-acl-basic-2000]rule 10 deny source 192.168.20.0 0.0.0.255 //配置基本ACL规则
[R1-acl-basic-2000]quit
[R1]int g0/0/0
[R1-G0/0/0]traffic-filter outbound acl 2000 //在接口上调用ACL对数据报文进行过滤
验证测试
PC1 ping Server1 不通
PC2 ping Server1 通
PC1 ping PC2 通
小结补充
对于ACL命令的解释
备注1:命令解析
acl 2000
rule 10 deny source 192.168.1.0 0.0.0.255
字段解析:
acl 2000 :表示的ACL的名字,代表是基本ACL
rule 10 :表示的是规则10 (10代表规则的编号)
deny : 表示的是动作,deny代表拒绝
source : 表示的源,在当前规则中代表的是源IP地址
192.168.1.0 :在当前规则中代表的是源IP地址段
0.0.0.255 :表示的通配符,在当前规则中代表,检查的字段是192.168.1 (前三个字段)
备注2:命令解析
int g0/0/0
traffic-filter outbound acl 2000
字段解析:
traffic-filter :表示的是流量过滤
outbound :表示的是出方向上过滤数据报文
备注:
一个接口的同一个方向上只能调用基于一个ACL进行报文过滤
如果要进行更改,则要先undo原来调用的acl
查询ACL命令补充
[R1]display acl all //查看acl
[R1]display traffic-filter applied-record //查看acl调用信息
如果ACL配置失误应该怎么删除呢?
删除ACL:
[R1]acl 2000
[R1-acl-basic-2000]undo rule 10
[R1-acl-basic-2000]quit
删除ACL的调用:
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]undo traffic-filter outbound
[R1-GigabitEthernet0/0/0]quit