ACL详解

计算机网络 专栏收录该内容
48 篇文章 2 订阅

一. ACL概述

          ACL(Access Control List)访问控制列表,主要用于过滤网络中的流量,是控制访问的一种技术手段。网络设备为了过滤报文,需要配置一系列的匹配条件对报文进行分类,应用在端口上,根据预先设定的策略,对特定端口的流量起到控制作用。
访问控制列表(ACL)由一组规则组成,在规则中定义允许或拒绝通过路由器的条件。
利用ACL可以对经过路由器的数据包按照设定的规则进行过滤,使数据包有选择的通过路由器,起到防火墙的作用。
       ACL一般只在以下路由器上配置:

1. 内部网和外部网的边界路由器。

2. 两个功能网络交界的路由器。

二. ACL的作用

      1. ACL可以限制网络流量、提高网络性能。例如,ACL可以根据数据包的协议,指定数据包的优先级。
      2. ACL提供对通信流量的控制手段。例如,ACL可以限定或简化路由更新信息的长度,从而限制通过路由器某一网段的通信流量

3. ACL是提供网络安全访问的基本手段。如:ACL允许主机A访问人力资源网络,而拒绝主机B访问。

      4. ACL可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。例如,用户可以允许E-mail通信流量被路由,拒绝所有的Telnet通信流量。

三. ACL的分类

ACL分类方法:

一种分为:标准ACL,扩展ACL和命名ACL。

另一种分为:标准MAC ACL,时间控制ACL,IP ACL,IPv6 ACL。

MAC ACL 是对二层包字段的过滤,比如Macaddress,ethertype,vlanid,cos等。

IP ACL 主要是对IPv4的报文进行过滤,应用的域从IPv4报头开始。

IPv6 ACL 是针对IPv6报文特有的域进行过滤。

时间控制ACL 就是在设定的时间范围内ACL才生效,其中有相对时间和绝对时间两种。

命名ACL,用字母和数字组合的字符串定义ACL,其中的名字范围为1~31个字符。而且是全局唯一的。

ACL语句

一个访问控制列表(ACL)可由多条语句组成,每条ACL语句的形式为:

Router(config)#access-list 表号处理方式 条件

ACL表号:用于区分各访问控制列表。

一台路由器中可定义多个ACL,每个ACL使用一个表号。

其中针对IP数据报的ACL可使用的表号为:

标准访问控制列表:1~99。

扩展访问控制列表:100~199。

同一个ACL中各语句的表号相同。

       

处理方式:取值有permit(允许)和deny(拒绝)两种。当数据包与该语句的条件相匹配时,用给定的处理方式进行处理。

条件:定义一系列的匹配方式,一条ACL语句只能定义一个条件。

例:

access-list 1 permit 10.0.0.0 0.255.255.255

access-list 1 deny 20.0.0.0 0.255.255.255

第1句表示允许地址为10.*.*.*的数据包通过。

第2句表示拒绝地址为20.*.*.*的数据包通过。

这里的地址指数据包的源地址。注:ACL用的是反掩码,0代表匹配,1代表不匹配。


标准ACL

       标准ACL只能使用地址作为条件。

       标准ACL使用数据包的源地址匹配ACL语句中的条件。

       定义标准ACL时,可使用的表号为1~99。(针对IP数据报)

标准ACL的语句

       R1(config)#access-list 1 permit 10.0.0.0 0.255.255.255

       R1(config)#access-list 50 deny 192.168.0.0 0.0.0.255

       R1(config)#access-list 99 permit 192.168.1.0 0.0.0.0

扩展访问ACL
       扩展ACL可以使用地址作为条件,也可以用上层协议作为条件。

       扩展ACL既可以测试数据包的源地址,也可以测试数据包的目的地址。

       定义扩展ACL时,可使用的表号为100~199。(针对IP数据报)

扩展ACL的语句

      access-list 表号 处理方式 条件

      表号:取值100~199。

      处理方式:permit(允许)或deny(拒绝)。

      条件:协议 源地址 目的地址[运算符 端口号][established]

      协议:用于匹配数据包使用的网络层或传输层协议,如IP、TCP、UDP、ICMP、IGMP等。

      源地址、目的地址:使用“地址 通配符掩码”的形式,也可以使用any、host关键字。

      运算符 端口号:用于匹配TCP、UDP数据包中的端口号。

      R1(config)#access-list 100 denyt cp any any eq 20

      R1(config)#access-list 101 permit udp 192.168.1.0  0.0.0.255 any eq 40

      R1(config)#access-list 199 permit icmp any any precedence 7

命名ACL    

      命名ACL使用一个符号串作为ACL的名字,不再使用表号。

      (config)#ip access-list acl1

      (config-ipv4-acl)# permit 1 any any tos0x11 0xff

      (config-ipv4-acl)# deny igmp any 192.1.0.0 255.255.0.0

      命名的ACL和扩展的ACL可以对流量进行更加精确的控制。

      注意:在每个ACL末尾都有一条默认语句:

      默认deny所有ip包,permit所有二层包(在没有配置定义匹配ethertype时),当macacl定义了匹配ethertype的rule时默认的语句为denyanyany。

三. ACL的工作过程


      访问控制列表(ACL)由多条判断语句组成。每条语句给出一个条件和处理方式(允许或拒绝)。

      路由器对收到的数据包按照判断语句的书写次序进行检查,当遇到相匹配的条件时,就按照指定的处理方式进行处理。

      ACL中各语句的书写次序非常重要,如果一个数据包和某判断语句的条件相匹配时,该数据包的匹配过程就结束了,剩下的条件语句被忽略。

四. 通配符掩码


      在ACL语句中,当使用地址作为条件时,它的一般格式为:地址 通配符掩码(反掩码)。

      通配符掩码决定了地址中的哪些位需要精确匹配,哪些为不需要匹配。

      通配符掩码是一个32位数,采用点分十进制方式书写。匹配时,“0”表示检查的位,“1”表示不检查的位。

      如:192.168.1.1 0.0.255.255

      表示检查前16位,忽略后16位,所以这个条件表示的地址是192.168.*.*。

     

      any条件:

      当条件为所有地址时,如果使用通配符掩码应写为:

      0.0.0.0 255.255.255.255

      这时可以用“any”表示这个条件。

      如:

      Router(config)#access-list1 permit 0.0.0.0 255.255.255.255

      Router(config)#access-list1 permit any

     上面两个语句是等价的。

 

     host关键字:

     当条件为单一IP地址时,如果使用通配符掩码应写为:

     IP地址 0.0.0.0

     这时可以用“host”关键字定义这个条件。

     如:

     Router(config)#access-list 1 permit 200.1.1.5 0.0.0.0

     Router(config)#access-list 1 permit host 200.1.1.5

     上面两个语句是等价的。

将创建好的ACL应用与路由器的接口上

不管是标准ACL还是扩展ACL只有将创建好的ACL应用与路由器的接口上才算是有效的。语法如下:

Router(config-if)#ip access-group access-list-number {in|out}

参数解释如下:

access-list-number:创建ACL时指定的访问控制列表号

in:应用到入站接口。

out:应用出站接口。

取消接口上的ACL应用可以使用如下命令:

Router(config-if)#no ip access-group access-list-number {in|out}

可以使用show access-lists命令查看ACL配置。

注意:不管是标准ACL或者是扩展ACL,只要应用了该规则就不可以在向里面添加新的规则了,只能是删除整个ACL。这样很不方便我们管理ACL,那么我们改这么办呢?下面我们来讲解命名访问控制列表。

————————————————
版权声明:本文为CSDN博主「huhu8812」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/azsx02/article/details/69258233

  • 2
    点赞
  • 1
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值