目录
ACL 访问控制列表
根据一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现网络访问行为的控制、限制网络流量,提高网络性能、防止网络攻击。
ACL分类
分类 | 编号范围 | 功能概述 |
基于接口的ACL | 编号范围是1000~1999 | 根据报文的入接口对报文进行过滤 |
基本ACL | 编号范围是2000~2999 | 根据源地址对报文进行过滤 |
高级ACL | 编号范围是3000~3999 | 根据源/目的地址、源/目的端口号、协议类型等对报文进行过滤 |
二层ACL | 编号范围是4000~4999 | 根据源MAC地址、目的MAC地址和以太帧协议类型等二层信息对报文进行过滤 |
用户ACL UCL(User ACL) | 编号范围是6000~9999 | 根据报文的源IP地址、源业务组、源用户组、源端口号、目的IP地址、目的业务组、目的用户组、目的端口号、协议类型等内容定义规则,实现对报文的匹配过滤 |
基于MPLS的ACL | 编号范围是10000~10999 | 根据MPLS报文的Exp值、Label值、TTL值对报文进行过滤 |
经常使用的是基本ACL和高级ACL。
ACL的组成
比如:rule deny source 192.168.1.12 0.0.0.0
- 其中的0.0.0.0 不是子网掩码而是通配符掩码,并不是区分网络号和主机号的,0.0.0.0可以简写成0
- 通配符掩码用来告诉路由器,需要检查IP地址中的多少位(可以不是连续的1)
- 0表示需要检查的位,1表示不需要检查的位 0->感兴趣 1->不感兴趣
- 192.168.1.12 0.0.0.0表示精确匹配这个IP地址,而如果是0.0.0.0 255.255.255.255表示匹配所有(any)
- 如果精确匹配最后一段是奇数的地址,那么最后1bit肯定是1,所以可以写成例如192.168.1.1 0.0.0.254 的样式
通配符掩码可以是不是连续的0或者1,如图
ACL匹配机制
ACL调用方式
ACL调用分为inbound方向和outbound方向,inbound方向调用是先调用后路由,outbound方向调用是先路由后调用。
如果数据流方向如下图,那么在F0/0处就是IN方向,在F0/1就是OUT方向。
如果数据流方向如下图,那么就是反过来,在F0/1口是IN方向,在F0/0口是OUT方向。
实验配置
- 确定部署位置
- 匹配对应流量
- 决定调用方向
- 查看以及测试
不允许PC1访问PC4
第一步:确定部署位置
现在PC1 不允许访问PC4,控制肯定是在数据包的必经之路上,所以可以在R1和R2上配置,但是我们一般采用靠近源的位置进行配置,这个为了集中化部署。
我们选择R1上配置,但是R1上有俩个接口,G0/0/1和G0/0/2。选择G0/0/1,在数据的流向上,就是inbound入方向;选择G0/0/2,在数据的流向上,就是outbound出方向;一般我们还是采用靠近源的位置进行配置。
确认部署位置为R1的G0/0/1口。
第二步:匹配对应流量
[AR1]acl 2000
[AR1-acl-basic-2000]rule 5 deny source 192.168.1.11 0.0.0.0
[AR1-acl-basic-2000]rule permit source any
第三步:决定调用方式
[AR1] interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1] traffic-filter inbound acl 2000
第四步:查看和测试
查看ACL [AR1] display acl 2000
[AR1]display acl 2000
Basic ACL 2000, 2 rules
Acl's step is 5
rule 5 deny source 192.168.1.12 0
rule 10 permit (5 matches)
查看流量模板的应用 [AR1]display traffic-filter applied-record
[AR1]display traffic-filter applied-record
-----------------------------------------------------------
Interface Direction AppliedRecord
-----------------------------------------------------------
GigabitEthernet0/0/1 inbound acl 200
第五步:如何删除
删除的时候,使用rule 的编号进行删除
[AR1] acl 2000
[AR1-acl-basic-2000] undo rule 5
或者 删除所有的ACL
[AR1]undo acl all
Info: Now deleting all ACL configurations, please wait......
Deleting operation has finished!
只允许PC1访问PC4
第一步:确定部署位置
题目要求只允许PC1访问PC4,也就意味着剩余的PC2和PC3是不能访问PC4的,但PC1.PC2,PC3之间的通信应该是不受影响的,所以部署位置在R1的GE0/0/2或者R2的两侧接口处。我们一般选择靠近源的位置,也就是R1的G0/0/2口。
第二步:匹配对应流量
[AR1]acl 2000
[AR1-acl-basic-2000]rule permit source 192.168.1.11 0
[AR1-acl-basic-2000]rule deny source any
第三步:决定调用方式
[AR1]interface GigabitEthernet 0/0/2
[AR1-GigabitEthernet0/0/2]traffic-filter outbound acl 2000
第四步:查看和测试
[AR1]display acl 2000
Basic ACL 2000, 2 rules
Acl's step is 5
rule 5 permit source 192.168.1.1 0
rule 10 deny (62 matches)
[AR1]display traffic-filter applied-record
-----------------------------------------------------------
Interface Direction AppliedRecord
-----------------------------------------------------------
GigabitEthernet0/0/2 outbound acl 2000
-----------------------------------------------------------
高级ACL
基本概念
高级ACL可以针对数据包的源、目的IP地址、协议类型、源目的端口号等元素进行匹配
- 使用编号创建一个高级ACL,并进入ACL视图:
[Huawei] acl num
[Huawei-acl-adv-num]
高级ACL编号的范围是3000~3999。
- 根据IP配置高级ACL规则:
[Huawei-acl-adv-num] rule 5 {permit/deny} ip source src-address wildcard destination dst-address wildcard
除了IP协议,高级ACL还能根据IP承载的上层协议信息进行匹配,例如TCP、UDP、ICMP等等。
ACL配置:操作符的含义
操作符及语法 | 含义 |
equal portnumber | 等于端口号 portnumber |
greater-than portnumber | 大于端口号 portnumber |
less-than portnumber | 小于端口号 portnumber |
not-equal portnumber | 不等于端口号 portnumber |
range portnumber1 portnumber2 | 介于端口号 portnumber1和portnumber2之间 |
实验配置 限制ping
在PC1和PC2都可以访问Server1和Server2的情况下,限制PC2 ping Server2,放行其他流量
1.配置ACL 匹配对应流量
[AR1]acl 3000
[AR1-acl-adv-3000]rule deny ip source 192.168.1.2 0 destination 10.1.1.2 0 icmp-type echo#echo 和 echo reply 不同,如果都被限制,那么Server2也无法ping PC2,所以不能限制echo reply
[AR1-acl-adv-3000]rule permit ip
2.接口进行调用
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]traffic-filter inbound acl 3000
实验配置 限制DNS
在PC1和PC2都可以访问Server1和Server2的情况下,限制PC2访问Server2的DNS服务,放行其他流量
- DNS使用的是UDP服务
- DNS的传输层端口号是53
[AR1]acl 3000
[AR1-acl-adv-3000]rule deny UDP source 192.168.1.2 0 destination 10.1.1.2 0 dest ination-port eq 53
[AR1-acl-adv-3000]rule permit ip
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]traffic-filter inbound acl 3000
基于时间的ACL
命令规范
time-range time-name [ { time1 to time2 { days } | from time1 date1 [ to time2 date2 ] } ]
time-name 指定时间段的名称。
time-name | 指定时间段的名称 |
time1 | 指定时间段的开始时间 |
to time2 | 指定时间段的结束时间 |
days | 指定时间段在周几有效 |
from time1 date1 | 指定时间段从某一天某一时间开始 |
to time2 date2 | 指定时间段到某一天某一时间结束。 结束时间必须大于起始时间。 |
举例
- time-range test 14:00 to 18:00 off-day
- 配置时间段test,在周末下午14:00到18:00生效
- time-range test from 08:30 2013/1/1 to 18:00 2013/12/31
- 配置时间段test,从2013年1月1日早上8点半开始生效,2013年12月31日晚上6点停止生效
实验配置
规定员工在上班时间(周一到周五8:00-17:00)不能浏览taobao网站
1.创建时间范围 time-range
[AR1]time-range working-time 8:00 to 17:00 working-day
2.配置基于时间的ACL
[AR1]acl 3000
[AR1-acl-adv-3000]rule 4 deny tcp source 192.168.1.0 0.0.0.255 time-range working-time destination 10.1.1.1 0 destination-port eq 80
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]traffic-filter inbound acl 3000