访问控制列表(Access Control Lists,ACL)与哈希查找的爱恨情怨
访问控制列表(Access Control Lists,ACL)与哈希查找
- 什么是访问控制列表ACL?
- 直接说ACL是干啥的
- ACL概念
- 为什么需要ACL
- ACL类型
- ACL匹配机制
- 使用例子
- 哈希查找
- 什么是哈希查找?
- 哈希查找的基本原理
- 哈希查找的步骤
- 哈希查找在ACL中的作用
- 具体作用
- 代码解析
- 实际应用
什么是访问控制列表ACL?
直接说ACL是干啥的
通俗来说ACL就是一个网络流量过滤器。具体来说读取数据包中的IP头部,TCP/DUP 头部中的源IP地址,目的IP地址,和源端口,目的端口根据设置好的ACL决定数据的丢弃还是允许通过。
ACL概念
ACL,中文名称是“访问控制列表”,它由一系列规则(即描述报文匹配条件的判断语句)组成。这里的条件包括五元组-分别是报文的源地址、目的地址、源端口、目的端口、端口号等
为什么需要ACL
根据规则过滤的ACL,能够做到阻塞攻击报文、为不同类报文流提供差分服务、对Telnet登录/FTP文件下载进行控制等的功能,从而提高网络环境的安全性和网络传输的可靠性。
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可以由多条“deny或permit”语句组成,每一条语句描述一条规则,这些规则可能存在包含关系,也可能有重复或矛盾的地方,因此ACL的匹配顺序是十分重要的。
华为设备支持两种匹配顺序:自动排序(auto模式)和配置顺序(config模式)。缺省的ACL匹配顺序是config模式。
自动排序,是指系统使用“深度优先”的原则,将规则按照精确度从高到低进行排序,并按照精确度从高到低的顺序进行报文匹配。
配置顺序,系统按照ACL规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。
使用例子
- 仅允许pc访问168.127.27.0/24网络
[Huawei]acl number 2000 (创建ACL 2000)
[Huawei-acl-basic-2000]rule permit source 168.127.2.0 0.0.0.255 (添加一条规则:允许168.127.27.1这台主机通过, 0.0.0.255地址表示主机)
[Huawei-acl-basic-2000]dis th(查看状态)
[V200R003C00]
#
acl number 2000 rule 5 permit source 168.127.2.0 0.0.0.255 (这里多了一个设定好的规则 rule 5 是他的规则序号,序号越小执行优先级越高)
#
return
[Huawei-acl-basic-2000]rule deny source any (添加一个拒绝规则,any 表示所有地址
都不允许通过)
[Huawei-acl-basic-2000]dis th (再次查看状态)
[V200R003C00]
#
acl number 2000 rule 5 permit source 168.127.2.0 0.0.0.255 rule 10 deny (这里又多了一条规则 ,规则号是10)
#
return
[Huawei]int g0/0/2 (进入接口)
[Huawei-GigabitEthernet0/0/2]ip add 168.127.27.254 24 (给接口添加IP地址)
[Huawei-GigabitEthernet0/0/2]traffic-filter outbound acl 2000 (给端口调用 acl2000 的配置,outbound表示将这个端口设置为出口模式即从路由器出来的数据要经过 acl 规则进行匹配)
哈希查找
什么是哈希查找?
哈希查找是一种用于快速检索数据的算法。它通过将关键字(例如IP地址、MAC地址等)转换为一个固定长度的索引值,并使用这个索引值在哈希表中查找对应的数据,从而大大提高检索速度。
哈希查找的基本原理
- 哈希函数:将关键字转换为固定长度的哈希值。好的哈希函数应当尽量将不同的关键字映射到不同的哈希值,以减少冲突。
- 哈希表:一种数据结构,用于存储哈希值和对应的数据项。哈希表通常是一个数组,哈希值作为索引,用于定位数据项。
哈希查找的步骤
- 计算哈希值:使用哈希函数计算关键字的哈希值。
- 查找数据项:在哈希表中通过哈希值定位数据项。如果没有冲突,可以直接找到数据项;如果有冲突,根据处理冲突的方法找到数据项。
哈希查找在ACL中的作用
具体作用
在访问控制列表(ACL)管理中,哈希查找用于快速匹配数据包与ACL规则,提高匹配效率。ACL用于控制网络流量,包含一系列规则,规定哪些流量可以通过,哪些需要阻止。使用哈希查找可以加速ACL规则的匹配过程,尤其在规则数量较多时效果显著。
代码解析
static void
vl_api_acl_plugin_use_hash_lookup_get_reply_t_handler (vl_api_acl_plugin_use_hash_lookup_get_reply_t *mp)
{vat_main_t *vam = acl_test_main.vat_main;clib_warning ("ACL hash lookups enabled: %d", mp->enable);vam->result_ready = 1;
}
- 主要功能
消息类型:处理 vl_api_acl_plugin_use_hash_lookup_get_reply_t 类型的API消息回复。这种消息类型通常包含哈希查找使能状态的信息。 - 参数说明:
mp:指向 vl_api_acl_plugin_use_hash_lookup_get_reply_t 结构体的指针,包含哈希查找使能状态信息。
vam:指向 vat_main_t 结构体的指针,从 acl_test_main 全局变量中获取。 - 处理逻辑:
clib_warning (“ACL hash lookups enabled: %d”, mp->enable);:打印哈希查找使能状态。mp->enable 是一个整数,通常值为0或1,分别表示哈希查找未使能或已使能。
vam->result_ready = 1;:设置 vat_main_t 结构体中的 result_ready 标志为1,表示结果已准备好。
实际应用
假设在一个大型网络环境中,网络管理员需要管理数千条ACL规则。为了提高效率,可以通过API启用哈希查找功能,然后通过上述代码检查哈希查找是否已成功启用。
相关文章:
访问控制列表(Access Control Lists,ACL)与哈希查找的爱恨情怨
访问控制列表(Access Control Lists,ACL)与哈希查找 什么是访问控制列表ACL?直接说ACL是干啥的ACL概念为什么需要ACLACL类型ACL匹配机制使用例子 哈希查找什么是哈希查找?哈希查找的基本原理哈希查找的步骤 哈希查找在…...

一文讲清楚分销裂变是什么?怎么做好分销裂变?【附案例】
在数字化营销日益盛行的今天,分销裂变作为一种高效的推广手段,受到了越来越多企业的青睐。那么,分销裂变究竟是什么?我们又该如何做好分销裂变呢?林叔将从定义、方法以及案例分析三个方面进行阐述。 一、分销裂变是什…...

Mybatis Plus 详解 IService、BaseMapper、自动填充、分页查询功能
结构直接看目录 前言 MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 愿景 我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效…...
鸿蒙开发组件:【FA模型的Context】
FA模型的Context FA模型下只有一个Context。Context中的所有功能都是通过方法来提供的,它提供了一些featureAbility中不存在的方法,相当于featureAbility的一个扩展和补全。 接口说明 FA模型下使用Context,需要通过featureAbility下的接口…...

Linux下手动修改服务器时间(没网环境下)
在客户服务器上更新程序时,发现服务器时间不对,现在应该是下午13:44:00,但服务器却显示为:21:40:53,所有是不对的。 date解决办法: 1、由于服务器是没有网的,只能手动设置时间,输入…...
嵌入式系统软件开发环境_3.主要功能和典型产品
1.嵌入式系统软件开发环境的主要功能 由于嵌入式系统的软件开发通常采用的是交叉开发方式,因此其开发环境中的工具应支持这种交叉开发的特点。嵌入式系统软件开发环境的功能应覆盖嵌入式软件开发过程,即编码过程、编译过程、构建过程、下载过程、调式过程…...

使用Python保护或加密Excel文件的7种方法
目录 安装Python Excel库 Python 使用文档打开密码保护 Excel 文件 Python 使用文档修改密码保护 Excel 文件 Python 将 Excel 文件标记为最终版本 Python 保护 Excel 工作表 Python 在保护 Excel 工作表的同时允许编辑某些单元格 Python 锁定 Excel 工作表中的特定单元…...

【嵌入式Linux】<总览> 文件IO(更新中)
文章目录 前言 一、常用函数 1. open函数 2. close函数 3. write函数 4. read函数 5. dup函数 6. dup2函数 二、文件读写细节 1. 换行符 2. 文件描述符 3. errno和perror 前言 在Linux系统中,一切皆文件。因此,掌握Linux下文件IO常用的函数…...

【无线传感网】分簇路由算法介绍
目录 1、LEACH路由算法 2、PEGASIS 算法 3、TEEN 算法 5、APTEEN 5、LEACH-C 算法 无线传感网中的路由协议就是寻找一条路径让网络中节点沿着这条路径将数据信息传输出去。路由协议的两大关键要点就是路径的优化和数据的分组,在传统计算机网络中,是将网络的拓扑…...
java 利用poi读取wps嵌入式图片,自测
代码 主要工具类 需要引入依赖: package com.chenkang.demo.util;import cn.wps.officeDocument.x2017.etCustomData.CellImagesDocument; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.…...

git 常用操作指令
文章目录 git clonegit configgit addgit commitgit rmgit branch/checkoutgit pull/pushgit rebash/merge git clone git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。 拷贝项目命令格式如下:git clone [u…...

达梦导入导出
针对导出数据库表结构通常有 3 种方法: 使用 DTS 导出 打开 DTS 迁移工具,选择【DM-->SQL】并链接到数据库中,如下图所示: 添加定义脚本,并选择【迁移范围】(仅迁移对象定义),如…...

超级数据查看器 教程pdf 1-31集 百度网盘
百度网盘链接 提取码1234https://pan.baidu.com/s/1s_2lbwZ2_Su83vDElv76ag?pwd1234 通过百度网盘分享的文件:超级数据查看器 … 链接:https://pan.baidu.com/s/1s_2lbwZ2_Su83vDElv76ag?pwd1234 提取码:1234 复制这段内容打开「百度网盘APP 即可获取」...

一、开发环境安装 Avalonia
1、概述 官网中是这么介绍Avalonia的,Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这…...
融资A轮B轮是什么意思?
环境: 融资 问题描述: 融资A轮B轮是什么意思 解决方案: 在A轮融资之前,通常有以下几轮融资阶段: 种子轮(Seed Round):这是企业生命周期中最早的融资阶段,通常发生在…...

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边
今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景: 业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示 原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…...
手机网络卡顿,试试飞行模式
当你遇到某个网页刷新慢或者打不开,而通过切换飞行模式就能解决这个问题,可能的原因有以下几种: 1. 网络连接重置 切换飞行模式会导致你的手机断开当前的网络连接(包括Wi-Fi和移动数据),然后重新建立连接…...
【退役之重学 AI】Ubuntu 安装 Anaconda
一. 下载 安装文件 https://www.anaconda.com/download/success 二. 安装 bash anaconda****.bash 一路 enter,yes 最后一个问你 要不要 conda init,这里得输入yes(默认是no,所以不要直接 enter),否则你…...
flutter 命令
1.查看依赖树 flutter pub deps 2.清理Flutter缓存 flutter clean 3.清理Gradle缓存 ./gradlew cleanBuildCache 4.清理Pub缓存: flutter pub cache repair 5.获取依赖项: flutter pub get 6.更新依赖项: flutter pub upgrade 7.…...

商超仓库管理系统
摘要 随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展&#…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...