目录
[ACL 访问控制列表](#ACL 访问控制列表)
[实验配置 限制ping](#实验配置 限制ping)
[实验配置 限制DNS](#实验配置 限制DNS)
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