学习日记Day27:ACL原理与配置

一、概述。

       ACL的用处非常的广泛他在匹配IP流量、Traffic-filter中被调用、在NAT(Network Address Translation)中被调用、在路由策略中被调用、在防火墙的策略部署中被调用、在QoS中被调用等许多地方都有用到。关于ACL的组成和功能有以下两点:

  • ACL是由permit或deny语句组成的一系列有顺序的规则的集合;它通过匹配报文的相关字段实现对报文的分类。
  • ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具;ACL还能够用于匹配路由条目。
二、组成。

       下面是一条完整的ACL配置:

[Huawei]acl 2000 
[Huawei-acl-basic-2000]rule 5 permit source 1.1.1.0 0.0.0.255
acl2000
访问控制列表的编号

       ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。

       下面是用户自定义的一条规则:

rule5permitsource 1.1.1.00.0.0.255
规则编号动作匹配项通配符

(1)规则:前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。
       规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。
(2)动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。

  • 比如:ACL如果与流量过滤技术结合使用(即流量过滤中调用ACL),permit就是“允许通行”的意思,deny就是“拒绝通行”的意思。

(3)匹配项:ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。
(4)通配符:在通配符中,1表示随机,0表示精确匹配;0和1的位置没有限制。后面具体讲。
        所以这条语句的具体意思是:允许源地址是1.1.1.0 - 1.1.1.255的所有流量通过。值得注意的是在接口视图下应用ACL系统会在ACL末尾添加一条隐含的规则默认是允许所有流量通过;在VTY用户视图下应用ACL系统也会在ACL末尾添加一条隐含的规则默认是拒绝所有流量通过。

三、规则编号、步长和ACL的匹配顺序。

       在一条ACL中可以有多个规则每个规则都有一个相应的编号。

acl 000
 rule	 5	deny	source  10.1.1.1  0
 rule	10	deny	source  10.1.1.2  0
 rule	15	permit	source  10.1.1.0  0.0.0.255

       步长,是指系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值。系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。ACL的缺省步长为5,使用下面的命令可以修改步长。

[Huawei]acl 2000
[Huawei-acl-basic-2000]step 2    //修改步长为2

       如果重新调整了步长值(例如调整为2),系统则会自动从当前步长值开始重新排列规则编号,规则编号变成2、4、6…。恢复步长值为缺省值后,系统则会立刻按照缺省步长重新调整规则编号,规则编号变成5、10、15…。
       设置步长的作用,在于方便后续在旧规则之间插入新的规则。例如:假设,一条ACL中,已包含了三条规则rule 5、rule 10、rule 15。如果希望源IP地址为10.1.1.3的报文也被拒绝通过,该如何处理?

rule 5 deny source 10.1.1.1 0  //表示拒绝源IP地址为10.1.1.1的报文通过                   
rule 10 deny source 10.1.1.2 0 //表示拒绝源IP地址为10.1.1.2的报文通过                    
rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0/24网段地址的报文通过

       由于ACL匹配报文时遵循一旦命中即停止匹配的原则,所以源IP地址为10.1.1.1和10.1.1.2的报文,会在匹配上编号较小的rule 5和rule 10后停止匹配,从而被系统拒绝通过;而源IP地址为10.1.1.3的报文,则只会命中rule 15,从而得到系统允许通过。若想让源IP地址为10.1.1.3的报文也被拒绝通过,则必须为该报文配置一条新的deny规则。可以在rule 15之前插入一条新规则rule 11,这样源IP地址为10.1.1.3的报文,就会因先命中rule 11而被系统拒绝通过。插入rule 11后,该ACL的旧规则编号不受影响,且新的规则排序为rule 5、rule 10、rule 11、rule 15。

rule 5 deny source 10.1.1.1 0  //表示禁止源IP地址为10.1.1.1的报文通过                   
rule 10 deny source 10.1.1.2 0 //表示禁止源IP地址为10.1.1.2的报文通过                    
rule 11 deny source 10.1.1.3 0 //表示拒绝源IP地址为10.1.1.3的报文通过  
rule 15 permit source 10.1.1.0 0.0.0.255 //表示允许源IP地址为10.1.1.0网段地址的报文通过

       关于ACL的匹配顺序有两种模式配置顺序和自动排序。

在这里插入图片描述
       配置顺序,即系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

  • 如果配置规则时指定了规则编号,则规则编号越小,规则插入位置越靠前,该规则越先被匹配。
  • 如果配置规则时未指定规则编号,则由系统自动为其分配一个编号。该编号是一个大于当前ACL内最大规则编号且是步长整数倍的最小整数,因此该规则会被最后匹配。

       自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。规则中定义的匹配项限制越严格,规则的精确度就越高,即优先级越高,系统越先匹配。

四、通配符掩码。

       关于通配符掩码可以类比子网掩码、反掩码。具体见下表:

类别区别用处
子网掩码在掩码中,1表示精确匹配,0表示随机;连续的1和0组成。配置IP地址时要配置子网掩码
反掩码在反掩码中,1表示随机,0表示精确匹配;连续的0和1组成。OSPF配置时用到反掩码
通配符掩码在通配符中,1表示随机,0表示精确匹配;0和1的位置没有限制。ACL配置用到通配符掩码

       下面的几个例子理解通配符掩码的用法:

  1. 精确匹配192.168.1.1这个IP地址?
      192.168.1.1      0.0.0.0
  1. 匹配所有IP地址?
      192.168.1.1      255.255.255.255     //前面的IP地址可以任意写
  1. 匹配10.1.1.1/24网段中所有地址?
      10.1.1.1         0.0.0.255    
  1. 匹配192.168.1.0/24这个子网中的奇数IP地址和偶数IP地址,例如奇数192.168.1.1、192.168.1.3、192.168.1.5等?
    所有的二进制奇数都是1结尾,偶数是0结尾。所以前24bit和第32bit都需严格匹配。
      192.168.1.1      0.0.0.254       //匹配奇数
      192.168.1.0      0.0.0.254      //匹配偶数
五、ACL的分类、标识和ACL的匹配位置。

       ACL可以分为以下几类,ACL的编号代表不同的ACL种类。

类型区别
基本ACL编号范围2000~2999,仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则。
高级ACL编号范围3000~3999 ,可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则。
二层ACL编号范围4000~4999,使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等。
用户自定义ACL编号范围5000~5999,使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则。
用户ACL编号范围6000~6999,既可使用IPv4报文的源IP地址或源UCL(User Control List)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。

       关于ACL的标识有两种:数字型ACL和命名型ACL。

  • 数字型ACL:传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
    在这里插入图片描述
  • 命名型ACL:通过名称代替编号来标识ACL。
    在这里插入图片描述
    在这里插入图片描述

       ACL的匹配位置是在inbound(入站)方向和outbound(出站)方向:

  • inbound(入站)方向:对接口收到的流量生效。
  • outbound(出站)方向:对接口发出的流量生效。

       值得注意的是outbound方向对路由器自己产生的流量没有作用。

六、ACL的配置。
1、基本ACL。
  • 配置基于源IP地址(主机地址)过滤报文的规则
    在ACL 2001中配置规则,允许源IP地址是192.168.1.3主机地址的报文通过。
<Huawei> system-view
[Huawei] acl 2001
[Huawei-acl-basic-2001] rule permit source 192.168.1.3 0
  • 配置基于源IP地址(网段地址)过滤报文的规则
    在ACL 2001中配置规则,仅允许源IP地址是192.168.1.3主机地址的报文通过,拒绝源IP地址是192.168.1.0/24网段其他地址的报文通过,并配置ACL描述信息为Permit only 192.168.1.3 through。
<Huawei> system-view
[Huawei] acl 2001
[Huawei-acl-basic-2001] rule permit source 192.168.1.3 0
[Huawei-acl-basic-2001] rule deny source 192.168.1.0 0.0.0.255
[Huawei-acl-basic-2001] description Permit only 192.168.1.3 through
  • 配置基于时间的ACL规则
    创建时间段working-time(周一到周五每天8:00到18:00),并在名称为work-acl的ACL中配置规则,在working-time限定的时间范围内,拒绝源IP地址是192.168.1.0/24网段地址的报文通过。
<Huawei> system-view
[Huawei] time-range working-time 8:00 to 18:00 working-day
[Huawei] acl name work-acl basic
[Huawei-acl-basic-work-acl] rule deny source 192.168.1.0 0.0.0.255 time-range working-time

下面的配置中,在ACL 2001中引用了时间段“test”,“test”包含了三个生效时间段:

time-range test 8:00 to 18:00 working-day 
time-range test 14:00 to 18:00 off-day 
time-range test from 00:00 2014/01/01 to 23:59 2014/12/31 


acl number 2001                                                                 
 rule 5 permit time-range test 
  1. 第一个时间段,表示在周一到周五每天8:00到18:00生效,这是一个周期时间段。
  2. 第二个时间段,表示在周六、周日下午14:00到18:00生效,这是一个周期时间段。
  3. 第三个时间段,表示从2014年1月1日00:00起到2014年12月31日23:59生效,这是一个绝对时间段。

时间段“test”最终描述的时间范围为:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。

2、高级ACL。
  • 配置基于ICMP协议类型、源IP地址(主机地址)和目的IP地址(网段地址)过滤报文的规则

       在ACL 3001中配置规则,允许源IP地址是192.168.1.3主机地址且目的IP地址是192.168.2.0/24网段地址的ICMP报文通过。

<Huawei> system-view
[Huawei] acl 3001
[Huawei-acl-adv-3001] rule permit icmp source 192.168.1.3 0 destination 192.168.2.0 0.0.0.255
  • 配置基于TCP协议类型、TCP目的端口号、源IP地址(主机地址)和目的IP地址(网段地址)过滤报文的规则

       在名称为deny-telnet的高级ACL中配置规则,拒绝IP地址是192.168.1.3的主机与192.168.2.0/24网段的主机建立Telnet连接。

<Huawei> system-view
[Huawei] acl name deny-telnet
[Huawei-acl-adv-deny-telnet] rule deny tcp destination-port eq telnet source 192.168.1.3 0 destination 192.168.2.0 0.0.0.255 

       在名称为no-web的高级ACL中配置规则,禁止192.168.1.3和192.168.1.4两台主机访问Web网页(HTTP协议用于网页浏览,对应TCP端口号是80),并配置ACL描述信息为Web access restrictions。

<Huawei> system-view
[Huawei] acl name no-web
[Huawei-acl-adv-no-web] description Web access restrictions
[Huawei-acl-adv-no-web] rule deny tcp destination-port eq 80 source 192.168.1.3 0
[Huawei-acl-adv-no-web] rule deny tcp destination-port eq 80 source 192.168.1.4 0
  • 配置基于TCP协议类型、源IP地址(网段地址)和TCP标志信息过滤报文的规则

       在ACL 3002中配置规则,拒绝192.168.2.0/24网段的主机主动发起的TCP握手报文通过,允许该网段主机被动响应TCP握手的报文通过,实现192.168.2.0/24网段地址的单向访问控制。同时,配置ACL规则描述信息分别为Allow the ACK TCP packets through、Allow the RST TCP packets through和Do not Allow the other TCP packet through。
       完成以上配置,必须先配置两条permit规则,允许192.168.2.0/24网段的ACK=1或RST=1的报文通过,再配置一条deny规则,拒绝该网段的其他TCP报文通过。

<Huawei> system-view
[Huawei] acl 3002
[Huawei-acl-adv-3002] rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack
[Huawei-acl-adv-3002] display this   //如果配置规则时未指定规则编号,则可以通过此步骤查看到系统为该规则分配的编号,然后根据该编号,为该规则配置描述信息。
#                                                                               
acl number 3002                                                                 
 rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack           //系统分配的规则编号是5      
#                                                                               
return 
[Huawei-acl-adv-3002] rule 5 description Allow the ACK TCP packets through
[Huawei-acl-adv-3002] rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst
[Huawei-acl-adv-3002] display this
#                                                                               
acl number 3002                                                                 
 rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack syn                
 rule 5 description Allow the ACK TCP packets through                 
 rule 10 deny tcp source 192.168.2.0 0.0.0.255 tcp-flag rst       //系统分配的规则编号是10          
#                                                                               
return   
[Huawei-acl-adv-3002] rule 10 description Allow the RST TCP packets through
[Huawei-acl-adv-3002] rule deny tcp source 192.168.2.0 0.0.0.255
[Huawei-acl-adv-3002] display this
#                                                                               
acl number 3002                                                                 
 rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack syn                
 rule 5 description Allow the ACK TCP packets through                 
 rule 10 deny tcp source 192.168.2.0 0.0.0.255 tcp-flag rst                
 rule 10 description Allow the RST TCP packets through                
 rule 15 deny tcp source 192.168.2.0 0.0.0.255       //系统分配的规则编号是15   
#                                                                               
return   
[Huawei-acl-adv-3002] rule 15 description Do not Allow the other TCP packet through

备注:ACK位等于1时表示对对方主机建立连接请求的确认。RST是重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晶晶娃在战斗

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值