当前位置: 首页 > news >正文

计算机网络-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 多平台发布

相关文章:

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

上一篇介绍NAT时候就看到了ACL这个东西了,这个是什么意思?有什么作用呢? 一、ACL访问控制列表 访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具,能够对报文进行匹配…...

论文学习记录之SeisInvNet(Deep-Learning Inversion of Seismic Data)

目录 1 INTRODUCTION—介绍 2 RELATED WORKS—相关作品 3 METHODOLOGY AND IMPLEMENTATION—方法和执行 3.1 方法 3.2 执行 4 EXPERIMENTS—实验 4.1 数据集准备 4.2 实验设置 4.3 基线模型 4.4 定向比较 4.5 定量比较 4.6 机理研究 5 CONCLUSION—结论 1 INTRODU…...

深度学习中的优化方法

深度学习中的优化问题通常指的是:寻找神经网络上的一组参数 θ \theta θ,它能显著地降低代价函数 J ( θ ) J(\theta) J(θ...

【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?

文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…...

Spring MVC学习之——Controller类中方法的返回值

Controller类中方法的返回值 1.返回ModelAndView RequestMapping("/hello")public ModelAndView hello(){//封装了页面和数据ModelAndView view new ModelAndView();//对这个请求的页面添加属性(数据)view.addObject("hello",&quo…...

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置: -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m 3.JVM虚…...

Angular: DOCUMENT

不用原生的 document,是因为不利于后端渲染,所以避免使用原生浏览器的对象 import { DOCUMENT } from angular/common; import { Directive, Inject, Input, OnChanges, Output, Renderer2, SimpleChanges } from angular/core;Directive({selector: [a…...

mybatis-plus批量保存异常及效率优化

最近基于自己公司内部服务维护,发现其中调度中心近期出现不少错误日志,但是该任务却是正常执行,生成的报表数据也是正常的,所以很多天没有发现问题 这就匪夷所思了, 经仔细排查发现,是触发了feign超时hyst…...

查找局域网树莓派raspberry的mac地址和ip

依赖python库: pip install socket pip install scapy运行代码: import socket from scapy.layers.l2 import ARP, Ether, srpdef get_hostname(ip_address):try:return socket.gethostbyaddr(ip_address)[0]except socket.herror:# 未能解析主机名ret…...

乐观锁与悲观锁:高并发场景下的选择

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

vue2 省市区联动组件封装

在element ui中有级联选择器el-cascader,其实已经够用了,但是在实际需求中,发现el-cascader如果有三级,数据数组必须得三个才能完全展示,所以不符合实际需求,还是自定义封装吧 需求:省市区联动数组,有多少个显示多少个 这里使用element ui得el-select组件,思路是使用…...

VScode远程开发

VScode远程开发 在SSH远程连接一文中,我么介绍了如何使用ssh远程连接Jetson nano端,但是也存在诸多不便,比如:编辑文件内容时,需要使用vi编辑器,且在一个终端内,无法同时编辑多个文件。本节将介绍一较为实用…...

芯片设计重要工具—— IBM LSF 分布式高性能计算调度平台

IBM Spectrum LSF Suites 是面向分布式高性能计算 (HPC) 的工作负载管理平台和作业调度程序。基于 Terraform 的自动化现已可用,该功能可在 IBM Cloud 上为基于 IBM Spectrum LSF 的集群供应和配置资源。 借助我们针对任务关键型 HPC 环境的集成解决方案&#xff0…...

RDMA Scatter Gather List详解

1. 前言 在使用RDMA操作之前,我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?对于一个使用RDMA进行开发的程序员来说&#…...

【动态规划】24子数组系列_最长湍流子数组_C++

题目链接:最长湍流子数组 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求返回 arr 的 最大湍流子数组的长度 由题可得: 如果比较符号在子数组中的…...

fastJson和jackson的日期数据处理

目录 1.jackson 2.fastjson 3.总结 1.jackson jackson是spring mvc默认的JSON解析方法,前端的数据序列化处理之后,后端经过反序列化处理可以直接使用实体对象进行接收。后端接口返回实体对象,经过序列化处理后前端可以接收并进行处理。 …...

书生·浦语大模型实战营第五节课笔记及作业

LMDeploy 大模型量化部署实践 1 大模型部署背景 1.1 模型部署及大模型特点 1.2 大模型部署挑战及方案 2 LMDeploy简介 2.1 核心功能-量化 2.2 核心功能-推理引擎TurboMind 2.1 核心功能-推理服务api server 3 动手实践及作业 按照文档LMDeploy 的量化和部署中的步骤在Intern…...

如何在CentOS 7 中基于OpenSSL 3.0 搭建Python 3.0 环境

1、OpenSSL 1.1 原因 [rootlocalhost ~]# openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 [rootlocalhost ~]#通过执行openssl version可知Linux系统已经安装了OpenSSL,但该版本较低;Python 3 要求 OpenSSL版本不能低于1.1.1,否则安装P…...

爬虫接口获取外汇数据(汇率,外汇储备,贸易顺差,美国CPI,M2,国债利率)

akshare是一个很好用的财经数据api接口,完全免费!!和Tushare不一样。 除了我标题显示的数据外,他还提供各种股票数据,债券数据,外汇,期货,宏观经济,基金,银行…...

Spring Cloud和微服务架构的关系

大话Spring Cloud 在Java悠久的历史长河中(其实也就十来年),有一个框架自诞生之初就成了Java企业级开发领域的弄潮儿,它以开放的姿态不断引领着技术改革(我们管他叫Java领域的“改革开放”),它就是久经考验的企业级开发框架,改革…...

C++:通过ofstream写入二进制文件内容

C++:通过ifstream读取二进制文件内容_c++ ifstream 二进制读取-CSDN博客 介绍了读取二进制文件的方法。 本文介绍一下写入二进制数据到文件的方法: 1.通过write #include <fstream> #include <string> using namespace std; int main() {int data = 0x0102030…...

系统配置dns主从服务器

一、准备两台主机&#xff0c;区分主从 二、完全区域传送 1、主DNS服务器配置 #安装相关的包 [rootoula1 ~]# yum install bind -y#关闭防火墙 [rootoula1 ~]# systemctl stop firewalld [rootoula1 ~]# setenforce 0#修改配置主文件 [rootoula1 ~]# vim /etc/named.conf opt…...

【git】解决网络连接问题

ssh: connect to host github.com port 22: Connection timed out $ ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. bash: ssh:: command not found bash: fatal:: command not found无效 检查网络&#xf…...

限制API接口访问速率

文章目录 依赖注解aophelperTest 免责声明&#xff1a;本人无意侵权&#xff0c;奈何找不到原文作者&#xff0c;也找不到网址&#xff0c;于是自己记录一下&#xff0c;如果有侵权之嫌&#xff0c;请联系我删除文章 依赖 <!-- https://mvnrepository.com/artifact/com.goo…...

广东省第三届职业技能大赛“网络安全项目”B模块--数字取证解析

广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应第二部分 数字取证调查任务 3: 网络数据包分析取证解析:第三部分 应用程序安全:需要环境可以私信博主~PS: 关注鱼影安全 模块 B 竞赛项目试题 本文件为:广东省第三届职业技…...

全链路压力测试:现代软件工程中的重要性

全链路压力测试不仅可以确保系统在高负载下的性能和稳定性&#xff0c;还能帮助企业进行有效的风险管理和性能优化。在快速发展的互联网时代&#xff0c;全链路压力测试已成为确保软件产品质量的关键步骤。 1、测试环境搭建 测试应在与生产环境尽可能相似的环境中进行&#xff…...

【计算机网络】难点、易遗忘点总结

文章目录 1. 单工通信、半双工通信和全双工通信2. TCP的三次握手和四次挥手 1. 单工通信、半双工通信和全双工通信 主要区别在于信息传输的方向和时间安排。单工通信是指信息只能在一个方向上传输的通信方式。半双工通信允许信息在两个方向上传输&#xff0c;但在任何给定的时…...

谷达冠楠科技:抖音开网店新手小白可以卖的产品

随着互联网的发展&#xff0c;越来越多的人选择在网上开设自己的店铺。而抖音作为目前最火的短视频平台&#xff0c;也提供了开店的功能。那么&#xff0c;对于新手小白来说&#xff0c;抖音开网店可以卖哪些产品呢? 我们可以考虑的是服装类商品。抖音上有很多时尚博主&#x…...

爬虫案例—根据四大名著书名抓取并存储为文本文件

爬虫案例—根据四大名著书名抓取并存储为文本文件 诗词名句网&#xff1a;https://www.shicimingju.com 目标&#xff1a;输入四大名著的书名&#xff0c;抓取名著的全部内容&#xff0c;包括书名&#xff0c;作者&#xff0c;年代及各章节内容 诗词名句网主页如下图&#x…...

阿里云容器服务助力万兴科技 AIGC 应用加速

作者&#xff1a;子白&#xff08;顾静&#xff09; 2023 年堪称是 AIGC 元年&#xff0c;文生图领域诞生了 Stable Diffusion 项目&#xff0c;文生文领域诞生了 GPT 家族。一时间风起云涌&#xff0c;国内外许多企业投身 AIGC 创新浪潮&#xff0c;各大云厂商紧随其后纷纷推…...