访问控制列表——ACL_acl访问控制列表-程序员宅基地

技术标签: 网络  Datacom-HCIA学习日记  网络协议  p2p  

1.ACL简介

        当需要针对数据流量或者报文进行一些过滤的时候,需要一个抓取要过滤的工具。类似于过滤石灰粉和石子的过程,那么我们是需要一个滤网或者其他的过滤工具来进行筛选。经过筛选获取到的石子,是丢弃还是用作其他用途,并不是过滤工具来决定的,它是取决于调用工具的时候,来判断,是否需要这些石子,或者丢弃。

        ACL(访问控制列表)就提供了类似于滤网的功能,它可以精准匹配到想要抓取的报文或者流量,然后在不同的场景下,去应用ACL的功能。

2.ACL的组成

        ACL是由多条不同的规则组成的,这些规则组成了一个滤网的功能,通过permit/deny的动作,来决定是抓取还是不抓取。

 rule 5 permit source 192.168.1.0 0.0.0.255 
 rule 10 deny source 192.168.2.0 0.0.0.255 
 rule 15 deny

        上面是ACL的三条规则,rule是规则关键字,后面的数字5,10,15是规则编号,这个编号在配置的时候可以指明也可以不指明,但是一条规则就是一个编号,编号不能重复。如果不指明编号,默认第一条规则的编号是5,后面每增加一条规则,编号就会加5,也就是说默认的编号是从5开始,步长是5,即每增加一个编号,编号就会在上一条规则编号的基础上加5。之所以留出编号的间隔,是为了能够适应各种应用场景,方便在规则之间,插入新的规则。ACL在进行匹配的时候,是根据编号的顺序,从小到大一条条往下进行的,一旦由匹配到的规则,则不会继续向下匹配,如果匹配到最后都没有,则命中默认规则,默认是deny所有。规则编号的默认步长可以修改,修改了步长以后,所有的规则根据新的步长重新自动排号,为新步长的整倍数,顺序不会改变。

        ACL有两个动作,permit和deny,permit相当于石子,在漏网里;deny相当于石灰粉,即过滤掉了,不在漏网中。

        source是指根据源来进行过滤的,是过滤的条件,当然也可以有其他的一些过滤条件。也就是在选对象的时候,可以身高进行筛选,也可以根据体重等其他属性来进行筛选。

        192.168.1.0是网络前缀,后面紧跟的0.0.0.255是通配符,不是网络掩码。通配符为0则表示不可变,为1表示可变。即前面24为不能变,必须是192.168.1,后面8位可以自由组合。

网络前缀 192.168.1.00000000
通配符 0.0.0.11111111
表示范围 192.168.1.0-192.168.1.255

        通配符是为了精准匹配要控制的范围,可以不连续。 

        反掩码是子网掩码进行非运算得出的,由于子网掩码是连续的,所以反掩码也必须是连续的。

3.ACL分类

        ACL根据编号可以分为一下几类:

                基本ACL:编号范围2000-2999,可以通过匹配源IP进行过滤。

                高级ACL:编号范围3000-3999,可以通过匹配源目IP、源目端口、协议等进行匹配。

                二层ACL:编号范围4000-4999,可以通过匹配源目MAC等进行匹配。

                用户自定义ACL:编号范围5000-5999

                用户ACL:编号范围6000-6999

        ACL的编号不同于规则中的rule编号,ACL的编号相当于是水缸编号,规则编号则是水缸中的每一条鱼的编号。

4.ACL的写法以及经典案例

        案例一:

                匹配192.168.1.1单个IP地址


acl 2000
    rule 5 permit source 192.168.1.1 0 

        案例二:

                匹配192.168.1.0/24整个网段的地址

acl 2000
    rule 5 permit source 192.168.1.0 0.0.0.255

         案例三:

                匹配192.168.1.0/24整个网段的地址,拒绝192.168.2.0/24网段的地址

acl 2000
    rule 5 permit source 192.168.1.0 0.0.0.255
    rule 10 deny source 192.168.2.0 0.0.0.255

 

          案例四:

                匹配192.168.1.0,192.168.1.1,192.168.1.2,192.168.1.3

acl 2000
    rule 15 permit source 192.168.1.0 0.0.0.3

               ACL规则的标准是精确匹配,简化规则,虽然也可以写4条permit规则,但是地址过多的时候,工作量剧增,因此可以通过通配符整合为一条规则。 

         分析:

192.168.1.0 192.168.1.00000000
192.168.1.1 192.168.1.00000001
192.168.1.2 192.168.1.00000010
192.168.1.3 192.168.1.00000011
通配符 0.0.0.3

         由于4个地址的前30位都是不变的,只有后面两位是变动的,因此通配符位0.0.0.3

        案例五:

                匹配192.168.1.12——192.168.1.19

acl 2000
    rule 5 permit source 192.168.1.12 0.0.0.3 
    rule 10 permit source 192.168.1.16 0.0.0.3 

                分析:

192.168.1.12 192.168.1.00001100
192.168.1.13 192.168.1.00001101
192.168.1.14 192.168.1.00001110
192.168.1.15 192.168.1.00001111
192.168.1.16 192.168.1.00010000
192.168.1.17 192.168.1.00010001
192.168.1.18 192.168.1.00010010
192.168.1.19 192.168.1.00010011

         由于12-15之间不变的位相同,16-19之间不变的位相同,由于是两个不同的不变位,所以没办法集合位一条规则进行匹配,因此需要两条规则。

        12-15的前缀和通配符为:192.168.1.12  0.0.0.3 

        16-19的前缀和通配符为:192.168.1.16  0.0.0.3 

        案例六:

                匹配192.168.1.0/24的奇偶数地址

acl 2000
    rule 5 permit source 192.168.1.0 0.0.0.254 ----仅匹配偶数地址
acl 2001
    rule 5 permit source 192.168.1.1 0.0.0.254 ----仅匹配奇数地址

        案例七:

                匹配除了RFC1918以外的其他地址

acl number 2000  
 rule 5 deny source 10.0.0.0 0.0.0.255 
 rule 10 deny source 172.16.0.0 0.15.255.255 
 rule 15 deny source 192.168.0.0 0.0.255.255 
 rule 20 permit 

5.ACL的调用方式

        可以在过滤数据包时调用,匹配的数据包通过,不匹配的数据包不通过。

        可以在路由策略中调用。

        可以在Qos中调用。

        可以在团体属性中调用等。

        在过滤数据包时,分为inbound和outbound两个方向。

        inbound方向:数据发送来时,先查看接口下是否调用了inbound方向的ACL,没有则直接接收;有则查看是否允许通过,permit则接收数据,deny则丢弃数据。

          outbound方向:数据发送时,先查看路由表,无路由则不转发,有路由,再先查看路由接口下是否调用了outbound方向的ACL,没有则直接转发;有则查看是否允许通过,permit则转发数据,deny则不转发数据。

        在outbound方向时,如果是本设备始发的数据,则ACL不生效。

6.ACL的配置实验

        拓扑:

 描述:要求R1和R2不能互访,R1也不能访问R4,其他可以互相访问。

基本信息:

设备 接口 IP地址 子网掩码 网关
PC1 E0/0/1 192.168.1.1 255.255.255.0 192.168.1.254
PC2 E0/0/1 192.168.2.1 255.255.255.0 192.168.2.254
PC3 E0/0/1 192.168.3.1 255.255.255.0 192.168.3.254
PC4 E0/0/1 192.168.4.1 255.255.255.0 192.168.4.254
R1 G0/0/0 10.1.12.1 255.255.255.0
G0/0/1 192.168.1.254 255.255.255.0
G0/0/2 192.168.2.254 255.255.255.0
R2 G0/0/0 10.1.12.2 255.255.255.0
G0/0/1 192.168.3.254 255.255.255.0
G0/0/2 192.168.4.254 255.255.255.0

R1配置:      

[r1-GigabitEthernet0/0/0]ip address 10.1.12.1 255.255.255.0 --配置接口IP
[r1-GigabitEthernet0/0/1]ip address 192.168.1.254 255.255.255.0 --配置接口IP
[r1-GigabitEthernet0/0/2]ip address 192.168.2.254 255.255.255.0 --配置接口IP
[r1]ip route-static 192.168.3.0 255.255.255.0 10.1.12.2 ---配置静态路由
[r1]ip route-static 192.168.4.0 255.255.255.0 10.1.12.2 ---配置静态路由
[r1]acl 2000 ---创建基本ACL 2000
[r1-acl-basic-2000]rule 5 deny source 192.168.1.0 0.0.0.255 ----deny源192.168.1.0
[r1-acl-basic-2000]rule 10 permit ----其他默认permit
[r1-GigabitEthernet0/0/2]traffic-filter outbound acl 2000 ---在接口的出方向调用acl 2000


 R2配置:      

[r2-GigabitEthernet0/0/0]ip address 10.1.12.2 255.255.255.0 --配置接口IP
[r2-GigabitEthernet0/0/1]ip address 192.168.3.254 255.255.255.0 --配置接口IP
[r2-GigabitEthernet0/0/2]ip address 192.168.4.254 255.255.255.0 --配置接口IP
[r2]ip route-static 192.168.1.0 255.255.255.0 10.1.12.2 ---配置静态路由
[r2]ip route-static 192.168.2.0 255.255.255.0 10.1.12.2 ---配置静态路由
[r2]acl 2000 ---创建基本ACL 2000
[r2-acl-basic-2000]rule 5 deny source 192.168.1.0 0.0.0.255 ----deny源192.168.1.0
[r2-acl-basic-2000]rule 10 permit ----其他默认permit
[r2-GigabitEthernet0/0/2]traffic-filter outbound acl 2000 ---在接口的出方向调用acl 2000


在R1上ping测试: 

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sunboy_guo/article/details/124819691

智能推荐

mysql查看表属性_mysql 查看当前表属主-程序员宅基地

文章浏览阅读1.5w次。1、查看指定表show table status from databasename like 'tablename' \G;2、查看数据库中所有表的属性show table status \G;_mysql 查看当前表属主

06.SpringCloud学习笔记--热部署Devtools_devtools: livereload: port: 35939 restart: poll-in-程序员宅基地

文章浏览阅读1.3k次。热部署Devtools_devtools: livereload: port: 35939 restart: poll-interval: 3000ms quiet-p

差分进化算法python_L单目标差分进化算法-程序员宅基地

文章浏览阅读424次。# -*- coding: utf-8 -*-import geatpy as ea # 导入geatpy库import numpy as npfrom sys import path as pathsfrom os import pathpaths.append(path.split(path.split(path.realpath(__file__))[0])[0])class soea_D..._传入的种群对象必须是单染色体的种群类型。

Apollo进阶课程 ④ | 开源模块讲解(下)_apollo平台技术框架包括()a车辆认证平台b硬件开发平台c开源软件平台d云端服务-程序员宅基地

文章浏览阅读2k次。目录1)Apollo平台技术框架2)Apollo版本迭代原创:阿波君Apollo开发者社区1周前上周,阿波君与大家讨论了自动驾驶的核心问题——安全性。本期,我们将为大家具体介绍百度Apollo开放平台。这是Apollo创立之初就遵循的16字金句:开放能力、共享资源、加速创新、持续共赢。话不多说,欢迎各位开发者一起进入进阶课程第四期。1)Apollo平台技术..._apollo平台技术框架包括()a车辆认证平台b硬件开发平台c开源软件平台d云端服务

swift语言IOS8开发战记22 Core Data3_swift coredata兼容ios8-程序员宅基地

文章浏览阅读1.4k次。上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc(Info),不然后面会报错,我也不知道为什么。然后在viewController中添加代码如下代码来实现:import UIKitimport CoreDataclass ViewController: UIVie_swift coredata兼容ios8

学习opencv之(四)- 图像格式之间的转换_rga 转 opencv-程序员宅基地

文章浏览阅读1.3w次。1 opencv中的几种常见的图像类型opencv中,几种常见的图像类型有:IplImage,Mat,CvMat,CvArr CvArr :老版本的结构了。是一个抽象基类,在函数原型中,常见到CvArr(CvArr*),这就允许吧CvMar* 或者IplImage* 传递到程序或函数参数中了。CvMat :矩阵结构,IplImage :是较老版本的一种类型了_rga 转 opencv

随便推点

JS 计算两个时间之间的间隔(天、时、分、秒)_js 计算时间间隔-程序员宅基地

文章浏览阅读8.3k次,点赞3次,收藏14次。function fun () { let startTime = new Date('2015-12-20'); // 开始时间 let endTime = new Date(); // 结束时间 let usedTime = endTime - startTime; // 相差的毫秒数 let days = Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数 let leavel = usedTime % (24_js 计算时间间隔

Janusgraph安装部署与IDEA链接Cassandra_janus graph 部署-程序员宅基地

文章浏览阅读588次。下载目录:https://github.com/JanusGraph/janusgraph/releases演示包版本的是:下载janusgraph-full-0.5.2.zip,上传离线包到linux服务器。创建用户(启动使用)://linux 添加用户adduser janusgraph//设置密码passwd janusgraph//添加用户到组,并赋予文件所有者chown -R 用户:组 目录chown -R janusgraph:root elasticsearch-6.3.2/_janus graph 部署

如何在QT下调用VC/MFC编写的DLL,分为两种方式。_qml调用mfc dll-程序员宅基地

文章浏览阅读2.9k次。1:采用导入直接调用的方式#pragma comment(lib,"XXX.lib")extern "C"_declspec(dllimport) BOOL API_YYY();然后,直接调用API_YYY2:采用load方式 QLibrary cryptLib; typedef BOOL (*tempFuc)(); cryptLib.load(); tempFuc tp=(tempFu_qml调用mfc dll

您有一份AndroidX升级指南未领取_androidx.test.espresso升级-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏3次。转载请注明出处本文出自 容华谢后的博客1.介绍相信大家对Android Support Libray都不陌生,随着Android版本的快速迭代,Google推出了Support Libray用以兼容低版本的Android设备。但是随着版本越来越多,支持库的维护和使用也变得越来越复杂,于是AndroidX应运而生,接下来我们一起来学习下如何迁移到AndroidX吧!AndroidX基于A..._androidx.test.espresso升级

java集成kettle:配置资源库,并执行资源库中保存的转换_kettle 执行java存储数据-程序员宅基地

文章浏览阅读5k次,点赞3次,收藏10次。首先配置资源库1.安装kettle7.12.将mysql-connector-java-5.1.46.jar复制到D:\Program Files\kettle7.1\data-integration\lib目录下3.配置kettle资源库上图就是在cgmrepositorydb数据库中初始化建立表格呢。需要建立1分钟左右。..._kettle 执行java存储数据

MKD5使用“Go To Definition Of ”时提示“source browser:‘xxxx‘undefined definition/reference”_source browser:undefined部分函数-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏2次。学习外部中断章节的时候,想查看EXTI_Init()函数的定义,go to definition of时报错,将自己的工程文件和实例工程文件对比之后发现,FWLib文件夹少了一个文件stm32f10x_exti.c文件,往文件夹中添加了该文件后,再编译运行就可以跳转了..._source browser:undefined部分函数

推荐文章

热门文章

相关标签