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

访问控制列表(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类型

  1. 基本ACL:(2000-2999) 只使用报文的源IP地址、分片信息、生效时间段信息来定义规则
  2. 高级ACL:(3000-3999) 可使用IPv4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则
  3. 二层ACL:(4000-4999) 可根据源MAC、目的MAC、二层协议类型匹配
  4. 用户自定义ACL:(5000-5999) 使用报文头,偏移位置,字符串掩码,用户自定义字符串来定义规则
  5. 用户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规则编号从小到大的顺序进行报文匹配,规则编号越小越容易被匹配。

使用例子

  1. 仅允许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地址等)转换为一个固定长度的索引值,并使用这个索引值在哈希表中查找对应的数据,从而大大提高检索速度。

哈希查找的基本原理

  1. 哈希函数:将关键字转换为固定长度的哈希值。好的哈希函数应当尽量将不同的关键字映射到不同的哈希值,以减少冲突。
  2. 哈希表:一种数据结构,用于存储哈希值和对应的数据项。哈希表通常是一个数组,哈希值作为索引,用于定位数据项。

哈希查找的步骤

  1. 计算哈希值:使用哈希函数计算关键字的哈希值。
  2. 查找数据项:在哈希表中通过哈希值定位数据项。如果没有冲突,可以直接找到数据项;如果有冲突,根据处理冲突的方法找到数据项。

哈希查找在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;
}
  1. 主要功能
    消息类型:处理 vl_api_acl_plugin_use_hash_lookup_get_reply_t 类型的API消息回复。这种消息类型通常包含哈希查找使能状态的信息。
  2. 参数说明:
    mp:指向 vl_api_acl_plugin_use_hash_lookup_get_reply_t 结构体的指针,包含哈希查找使能状态信息。
    vam:指向 vat_main_t 结构体的指针,从 acl_test_main 全局变量中获取。
  3. 处理逻辑:
    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.…...

商超仓库管理系统

摘要 随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展&#…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...