计算机网络-ACL访问控制列表

上一篇介绍NAT时候就看到了ACL这个东西了,这个是什么意思?有什么作用呢?

一、ACL访问控制列表

访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具,能够对报文进行匹配和区分。简单来讲就是一个过滤列表,一般配合其它技术实现功能。ACL可以通过对网络中报文流的精确识别,与其他技术结合,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。

比如下面这种情况: ACL使用场景

我们实际上使用不同VLAN划分不同网段以区分不同功能。因此对于内网不同网段的策略可以使用ACL访问控制列表进行控制。网络流量是有方向和一来一回数据流的,因此一般可以在发送或者接收时调用ACL。

二、ACL的组成

ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。

ACL组成
ACL组成

2.1 ACL编号

在网络设备上配置ACL时,每个ACL列表都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同。这个编号与下面将要介绍的ACL分类相关。

2.2 ACL规则

前面提到了,一个ACL通常由若干条“permit/deny”语句组成,每条语句就是该ACL的一条规则。ACL规则包含规则编号,规则处理动作,匹配项,如果没有指定规则编号则有缺省规则编号和步长。

2.1 规则编号(Rule ID):

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

2.2 步长(Step):

步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,缺省值为5。步长的作用是为了方便后续在旧规则之间,插入新的规则。比如缺省规则编号:0 ,5 ,10 ,15 ....

规则编号
规则编号

2.3 动作

每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。

2.4 匹配项

ACL定义了极其丰富的匹配项。例子中体现的源地址,ACL还支持很多其他规则匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等。只有匹配到相应的条件才执行相应的动作。

在这里需要了解一个知识:通配符 (Wildcard)

  • 通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配。
  • 通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。 通配符
通配符可以不连续
通配符可以不连续

因为ACL一般用来匹配源地址、目的地址、源端口和目的端口,因此需要使用地址+通配符形式进行匹配。参考上面图例:192.168.1.0 0.0.0.255 转换成二进制可以表示0段必须为192.168.1,最后一段可以为1-255。192.168.1.0 0.0.0.255 表示一个网段,192.168.1.1 0 表示一个主机位,即全部匹配,0.0.0.0 255.255.255.255 表示所有地址

通配符中的1或者0可以不连续,进行灵活匹配,一般用于匹配网段或者一个主机。

注意:每个ACL系统都在ACL末尾隐含的规则拒绝所有rule 4294967294 deny

三、ACL的分类

一般有两种分类:基于ACL规则号分类,基于ACL命名的ACL,一般常用编号进行定义。

基于ACL规则定义方式的分类:常用的为基本ACL和高级ACL。

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

基于ACL标识方法的分类:

分类规则定义描述
数字型ACL传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
命名型ACL通过名称代替编号来标识ACL。

我们这里主要学习基本ACL和高级ACL。 基本ACL和高级ACL

基本ACL一般只用来匹配源地址,高级ACL可以匹配源地址、目的地址、源端口、目的端口,更为灵活。因此基本ACL一般用来匹配一个网络所有流量,高级ACL匹配一个网络去往不同目的网络或者不同流量的匹配(HTTP、DNS、FTP、TELNET等等)

四、ACL的工作原理

1、ACL的匹配机制: 匹配机制

2、ACL的匹配机制概括来说就是:

  • 配置ACL的设备接收报文后,会将该报文与ACL中的规则逐条进行匹配,如果不能匹配上,就会继续尝试去匹配下一条规则。
  • 匹配顺序按照规则编号从小到大匹配
  • 一旦匹配上,则设备会对该报文执行这条规则中定义的处理动作,并且不再继续尝试与后续规则匹配。
  • 在末尾有一条隐含的拒绝所有流量的rule规则

3、ACL的匹配顺序与结果; 匹配顺序与结果 建议匹配严格的规则放在前面,宽泛匹配的放在后面顺序匹配。

4、ACL的匹配位置:

匹配位置
匹配位置

入站与出站 可以想象成一条数据为写一封信,从你寄出信--接收方收到信-再到接收方回复内容--你收到回信这才是一个完整的过程,你可以选择在发出时候进行匹配,或者在回信的过程进行匹配拦截。ACL的应用可以在物理接口或者三层逻辑接口如VLANIF上以及路由策略等应用。

一般情况下建议遵循以下规则:

  • 基本ACL在靠近发送端,因为基本ACL匹配所有流量,影响全部流量
  • 高级ACL部署在靠近接收端,因为只是匹配其中特定特征流量,可能不会影响其它流量

四、ACL的配置应用与实践

ACL的应用很广泛,可以用于以下场景:

  • 匹配IP流量
  • 在Traffic-filter中被调用
  • 在NAT(Network Address Translation)中被调用
  • 在路由策略中被调用
  • 在防火墙的策略部署中被调用
  • 在QoS中被调用
  • 其他……

ACL配置:因为基本ACL和高级ACL的匹配项不一样,因此配置上有一些不一样。

基本ACL:

# 创建基本ACL,并进入基本ACL视图。
[Huawei] acl [ number(2000~2999) ] acl-number [ match-order config ]# 配置基本ACL的规则
[Huawei-acl-basic-2000] rule [ rule-id ] { deny | permit } [ source { source-address source-wildcard | any } | time-range time-name ] # 示例
acl number 2000  rule 5 permit source 192.168.1.0 0.0.0.255

高级ACL:

# 创建高级ACL,进入高级ACL视图。
[Huawei] acl [ number(3000-3999) ] acl-number [ match-order config ]# 配置基本ACL的规则
# 根据IP承载的协议类型不同,在设备上配置不同的高级ACL规则。对于不同的协议类型,有不同的参数组合。
# 当参数protocol为IP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } ip [ destination { destination-address destination-wildcard | any } | source { source-address source-wildcard | any } | time-range time-name | [ dscp dscp | [ tos tos | precedence precedence ] ] ] # 当参数protocol为TCP时,高级ACL的命令格式为
rule [ rule-id ] { deny | permit } { protocol-number | tcp } [ destination { destination-address destination-wildcard | any } | destination-port { eq port | gt port | lt port | range port-start port-end } | source { source-address source-wildcard | any } | source-port { eq port | gt port | lt port | range port-start port-end } | tcp-flag { ack | fin | syn } * | time-range time-name ] *# 简单说就是IP协议可以匹配源地址、目的地址,TCP可以匹配源端口、目的端口
# 示例
acl number 3000  rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255rule 10 permit tcp source 192.168.1.0 0.0.0.255 source-port eq telnet destinati
on 192.168.2.0 0.0.0.255

总结:ACL一般使用编号进行区分。基本ACL(2000-2999)支持源地址匹配,高级ACL(3000-3999)支持匹配源地址、目的地址、源端口和目的端口。地址的匹配使用地址+通配符进行匹配选择,通配符可以不连续进行灵活匹配。每个ACL末尾隐含一条拒绝所有的rule,ACL规则按顺序匹配,如果没有指定rule编号则缺省步长为5。基本ACL靠近源端匹配,高级ACL靠近目的端进行匹配,ACL可以应用于流量过滤、NAT、路由策略、策略路由等场景。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙原生应用/元服务实战-AGC团队账户

多人及内外结合去开发运营鸿蒙原生应用元服务时,需要用到团队账户,AGC提供了强大的团队角色与权限分工能力。 团队帐号是开发者联盟为实名开发者提供的多个成员帐号登录与权限管理服务。当前团队帐号支持成员参与应用市场(付费推广、应用内付…

设备树(1)-设备树是什么?设备树基础概念及语法

1.简介 设备树:device tree DTS:设备树源码文件,采用树形结构描述板级信息,例如IIC、SPI等接口接了哪些设备 DTSI:设备树头文件,描述SOC级信息,例如几个CPU、主频多少、各个外设控制信息等 DTB…

vue列表飞入效果

效果 实现代码 <template><div><button click"add">添加</button><TransitionGroup name"list" tag"ul"><div class"list-item" v-for"item in items" :key"item.id">{{ i…

校园水电抄表系统

校园水电抄表系统是一种现代化的水电管理方式&#xff0c;它通过高科技手段实现对校园内水电使用情况的实时监测和数据化管理&#xff0c;从而提高水电资源的利用效率&#xff0c;降低管理成本&#xff0c;为构建绿色、环保、节约型校园奠定基础。 一、系统概述 校园水电抄表…

K8S---NetworkPolicy

一、简介 在操作系统中,服务器有出口流量和入口流量,可以为服务器设置网络策略,允许哪些ip可以访问本机器的哪些端口,设置本机器可以访问哪些其他机器;在K8S系统类似,pod如同服务器,可以设置哪些其他pod可以访问本pod的哪些端口,也可以设置本pod可以访问外部哪些pod的…

力扣 | 11. 盛最多水的容器

双指针解法–对撞指针 暴力解法public int maxArea1(int[] height) {int n height.length;int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int area Math.min(height[i], height[j]) * (j - i);ans Math.max(ans, area);}}return ans;}双指针解法…

vue动画(transition)

Vue动画&#xff08;transition&#xff09; 动画列表&#xff08;选择其中一个即可&#xff09; /* fade */ .fade-enter-active, .fade-leave-active {transition: opacity 0.28s; } ​ .fade-enter, .fade-leave-active {opacity: 0; } /* fade */ ​ /* fade-transform */…

ARP相关

ARP报文格式&#xff1a; 目的以太网地址&#xff0c;48bit&#xff0c;发送ARP请求时&#xff0c;目的以太网地址为广播MAC地址&#xff0c;即0xFF.FF.FF.FF.FF.FF。 源以太网地址&#xff0c;48bit。 帧类型&#xff0c;对于ARP请求或者应答&#xff0c;该字段的值都为0x08…

怎么剪切视频中的一部分?看完你就知道了

怎么剪切视频中的一部分&#xff1f;随着自媒体的兴起&#xff0c;越来越多的人开始关注视频编辑和后期制作。在众多自媒体平台上&#xff0c;我们经常可以看到一些精彩的短视频&#xff0c;而这些视频往往都是经过精心编辑和剪切的。那么&#xff0c;怎么剪切视频中的一部分呢…

刘阳,定格历史,守护中华文化!

2021年2月24日&#xff0c;#圆明园365张珍贵老照片#的话题凭3.7亿阅读量冲上热搜。这批时代跨越80年的老照片仿佛重启记忆的按钮&#xff0c;让人梦回“夏宫”&#xff1b;少有人知道&#xff0c;它们的拥有者&#xff0c;却是一位不折不扣的80后。 刘阳&#xff0c;土生土长北…

springboot多数据源支持自定义连接池

背景 springboot 多数据源网上的文章很多&#xff0c;但大多都是互相抄袭&#xff0c;虽然可以实现多数据源的效果&#xff0c;但都是使用的默认的连接池&#xff0c;如果盲目使用可能会导致自定义的连接池参数没生效从而引发数据库连接问题。下面是参考官方文档多数据源支持自…

制作一个Python聊天机器人

我们学习一下如何使用 ChatterBot 库在 Python 中创建聊天机器人&#xff0c;该库实现了各种机器学习算法来生成响应对话&#xff0c;还是挺不错的 什么是聊天机器人 聊天机器人也称为聊天机器人、机器人、人工代理等&#xff0c;基本上是由人工智能驱动的软件程序&#xff0…

情人节专属--HTML制作情人节告白爱心

💕效果展示 💕html展示 <!DOCTYPE html> <html lang="en" > <head>

基于springboot+vue的旅游网站系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Kotlin 类型别名

Kotlin 提供 给 已存在的类型 取 别名的功能&#xff0c;称为 类型别名&#xff08;Type Aliases&#xff09;。 语法&#xff1a; typealias <别名> <类型或函数>对 简化 长类名 和 泛型类型名 很有用&#xff0c;比如&#xff1a; typealias FileTable<K&…

Spring MVC学习之——上传文件

在Spring MVC中加入上传文件的功能 1.添加依赖 <!--文件上传--> <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version> </dependency>2.配置文件…

Java 类与对象(对象的分配机制、对象的创建过程、匿名对象)

面向对象 面向对象编程&#xff08;Object-Oriented Programming 简称 OOP&#xff09;是一种程序设计思想和编码架构。 Java 是完全面向对象的&#xff0c; 必须熟悉 OOP 才能够编写 Java 程序。 面向对象的程序是由对象组成的&#xff0c;每个对象包含对用户公开的特定功能…

深入解析与实践:Ajax异步请求在Web开发中的应用指南

一、概述 1、定义 ​ Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;异步请求是现代Web开发中不可或缺的技术组件&#xff0c;它允许网页在不刷新整个页面的情况下从服务器获取并更新数据&#xff0c;从而实现动态、流畅的交互体验。 2、异步和同步 浏览器访…

【主题广范|见刊快】2024年海洋工程与测绘遥感国际学术会议(ICOESRS 2024)

【主题广范|见刊快】2024年海洋工程与测绘遥感国际学术会议(ICOESRS 2024) 2024 International Conference Ocean Engineering and Surveying Remote Sensing(ICOESRS 2024) 一、【会议简介】 随着人类对海洋的认识和开发不断深入&#xff0c;海洋工程和测绘遥感技术的研究和应…

C生万物呀

1、快捷键 快捷键描述ctrl滚轮字体变大小ctrlKC注释ctrlKU取消注释home行首end行末 2、C语言标准库函数 stdio.h&#xff1a;包含了输入输出相关的函数&#xff0c;如printf()、scanf()、fgets()等。 stdlib.h&#xff1a;包含了通用工具函数&#xff0c;如malloc()、free()…