ACL 介绍

ACL 是一款 IOS 软件工具,而不是某种协议。从名字上来看,ACL 的主要功能是控制对网络资源的访问。事实上这是 ACL 最早的用途。现在 ACL 除了能够限制访问外,更多时候,我们用它来标识流量(识别某种流量的特征)。

ACL 特点:

  • 有序的声明,是一张由 permit 或 deny 的声明组成的列表
  • ACL 仅是一种工具,如果不进行调用的话,不会产生任何效果
  • 使用通配符掩码来匹配一定范围内的 IP 主机
  • ACL 在接口上调用时,必须指定方向,ACL 只对流量入接口的入方向或出接口的出方向产生效果
  • 每个 ACL 的底部,总会包含一个隐式的拒绝语句。它会匹配所有流量。
  • 所有的 ACL 都应该至少包含一个 permit,否则该 ACL 没有意义

ACL 应用场景:

包括常见的访问控制,NAT,远程连接限制,VPN 匹配感兴趣流量,配合分法列表过滤路由等。

ACL 分类

ACL大体可以分为标准 ACL 和扩展 ACL 两大类。用于匹配流量的标准主要是 IP 数据包的 3 层和 4 层报文的内容。

下面是 ACL 标准和拓展协议的对比:

可以看到:

  • 标准 ACL 功能较为简单,三层 ACL,基于 IP 头进行匹配,只能匹配源 IP 地址。
  • 拓展 ACL 则可以匹配源,目的,端口等等信息。

ACL 写法

首先来看一下 ACL 匹配过程:

可以看到:

  1. ACL 自上而下进行匹配
  2. 匹配成功就执行 Action:Permit 或者 Action

所以在编写 ACL 时,越精确的范围越应该优先处理,写在前面。

在写 ACL 时,标准 ACL 和 拓展都有两种命名方式:

  • 标号的 ACL,不容易修改。

    • 比如编写了 access-list 10 permit 10.1.1.0 255.255.255.0 access-list 10 permit 10.1.2.0 255.255.255.0
    • 这时发现第二条 ACL 写错了,就必须把所有的 no access-list 10 删掉,重新写。
  • 命名的 ACL:在每个 ACL 中会有序列号,修改时可以修改序列号。

标准 ACL

省略写法,匹配唯一主机地址:

  1. permit host 1.1.1.0
  2. permit 1.1.1.0 0.0.0.0

省略写法,匹配所有:

  1. permit any any
  2. permit 0.0.0.0 255.255.255.255

在写时,尽量靠近目的端,因为只能匹配源,匹配范围较广

拓展 ACL

在写时,尽量靠近源端,因为拓展 ACL 更精确

在每个接口,每个方向上,针对每个协议只能调用一个 ACL,并且 ACL 不能过滤自己产生的数据.

案例

案例一:标准 ACL 和 拓展 ACl 对比

这里都是想要禁止掉 PC2 的流量,分别采用标准 ACL 和拓展 ACL:

对于标准 ACL 来说,可以看到配置在路由器上的 Gi0/1 的出接口上,因为使用标准 ACL 推荐尽量离源远的位置。

对于拓展 ACl 来说,配置在 Gi0/0 的入接口上,因为使用拓展 ACL 推荐尽量离源近的位置。

案例二:标准 ACL 配置

  1. # 标准 ACL
  2. Router(config)#access-list 100 permit ip 10.1.4.0 0.0.0.255 10.1.8.0 0.0.0.255
  3. Router(config)#access-list 100 permit ip 10.1.5.0 0.0.0.255 10.1.7.0 0.0.0.255
  4. Router(config)#access-list 100 permit eigrp any any
  5. Router(config)#do show access-lists
  6. # 调用 ACL
  7. Router(config)#int e 0/1
  8. Router(config-if)#ip access-group 100 out

VPC2 能 ping 通 VPC5 ,VPC5 不能 ping 通 VPC2

  1. Router(config)#access-list 100 deny ip 10.1.5.0 0.0.0.255 10.1.8.0 0.0.0.255 echo-reply
  2. Router(config)#access-list 100 permit ip any any
  3. Router(config)#do show access-lists
  4. Router(config)#int e 0/1
  5. Router(config-if)#ip access-group 100 out

总结

在这篇文章中,介绍了 ACL 常见的应用场景,以及 ACL 的匹配过程。

并且知道了 ACL 分为标准和拓展两种,标准只是对 3 层源 IP 进行过滤,而拓展则加上了目的 IP,端口等多个属性。

对于标准 ACL 来说,因为其匹配范围较广,尽量在靠近目的编写 ACl。

对于拓展 ACL 来说,因为匹配更加精确,尽量靠近源来编写,可以更好的节省带宽。

在编写 ACL 时,要将精确匹配的 ACL 写在前面,并且尽量使用命名 ACL 代替标号 ACL。并且 ACL 对于自己产生的数据包,是无法进行过滤的。

IOS - ACL (访问控制列表)的更多相关文章

  1. CCNA 之 十 ACL 访问控制列表

    ACL 访问控制列表 ACL(Access Control List) 接入控制列表 ACL 的量大主要功能: 流量控制 匹配感兴趣流量 标准访问控制列表 只能根据源地址做过滤 针对曾哥协议采取相关动 ...

  2. 普通ACL访问控制列表

    配置OSPF R1: R2: R3: R4: 在R1上查看OSPF的学习 测试R1与R4环回接口连通性 配置普通ACL访问控制列表: 先在R4配置密码用R1与R4建立telnet建立 密码huawei ...

  3. 高级ACL访问控制列表

    实验拓扑: 配置: 基本配置做完之后搭建OSPF网络 R1: ospf 1 area 0 network 10.0.13.0 0.0.0.255 network 1.1.1.1 0.0.0.0 R2: ...

  4. Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单

    Kong Gateway - 11 基于网关服务的ACL访问控制列表 黑名单 同一服务名称 book 不允许即创建白名单访问控制列表又创建黑名单访问控制列表 启用服务的白名单&黑名单配置文件时 ...

  5. [转载]ACM(访问控制模型),Security Identifiers(SID),Security Descriptors(安全描述符),ACL(访问控制列表),Access Tokens(访问令牌)

    对于<windows核心编程>中的只言片语无法驱散心中的疑惑.就让MSDN中的解释给我们一盏明灯吧.如果要很详细的介绍,还是到MSDN仔细的看吧,我只是大体用容易理解的语言描述一下. wi ...

  6. 交换路由中期测验20181226(动态路由配置与重分发、NAT转换、ACL访问控制列表)

    测试拓扑: 接口配置信息 HostName 接口 IP地址 网关 Server 0 Fa0 172.16.15.1/24 172.16.15.254 Server 1 Fa0 100.2.15.200 ...

  7. ACL访问控制列表

    acl是基于文件系统的,所以支不支持acl在于使用什么文件系统. FAT32文件系统不支持权限,也不区分大小写 如果一个分区不是安装系统时分的分区,是一个新的分区的话,默认是不支持acl CentOS ...

  8. ensp,acl访问控制列表

    ACL分类: 基本ACL 编号范围: 2000-2999     参数:源ip地址 高级ACL 编号范围: 3000-3999     参数:源ip地址,目的ip地址,源端口,目的端口等 二层ACL ...

  9. CentOS 7 文件权限之访问控制列表(ACL)

    Linux的ACL是文件权限访问的一种手段.当拥有者所属组其他人(own,group,other)不能满足给一个单独的用户设置单独的权限时,ACL的出现就很好的解决了该问题. 比如其他用户own,不属 ...

  10. 访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性

    通过之前的文章简单介绍了华为交换机如何配置SSH远程登录,在一些工作场景,需要特定的IP地址段能够SSH远程访问和管理网络设备,这样又需要怎么配置呢?下面通过一个简单的案例带着大家去了解一下. 要实现 ...

随机推荐

  1. freeMarker随手笔记

    freemarker官网:http://docs.freemarker.cn/ 注意: 1.如果标签没有嵌套内容(在开始标签和结束标签之间的内容),那么可以只使用开始标签 (详情:http://fre ...

  2. row_number() over()排序功能说明

    1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...

  3. 少儿编程:python趣味编程第二课,如何在pygame中写文字

    python趣味编程第二课:本文仅针对8-16岁的青少年,所以流程是按如何去教好中小学生走的,并不适合成人找工作学习,因为进度也是按照青少年走的 大家好,我是C大叔,上一篇文章已经跟大家介绍了一款开发 ...

  4. 从一次故障聊聊前端 UI 自动化测试

    背景 事件的起因在于老板最近的两次"故障",一次去年的,一次最近.共同原因都是脚手架在发布平台发布打包时出错,导致线上应用白屏不可用. 最神奇的是,事后多次 Code Review ...

  5. go : 连接数据库并插入数据

      package main import ( "database/sql" "fmt" "log" "net/http" ...

  6. Linux内存大页设置

    实际环境中,遇到3次由于内存大页设置参数不合理或者错误,导致系统内存不足,或者数据库内存不足的问题. 按照如下方式,推荐设置大页参考下发设置! 参考HugePages on Oracle Linux ...

  7. 【翻译】.NET 5 Preview7发布

    今天,发布了.NET 5.0 Preview7.这是倒数第二个预览版本(在转移到RC之前).此时,大多数功能应该已经非常接近完成了.Single file和ARM64 intrinsics是两个花费了 ...

  8. 题解 洛谷 P2280 【[HNOI2003]激光炸弹】

    这道题因为要求价值最大值,所以正方形应尽可能多覆盖目标,因此所得的正方形四个顶点一定在格点上. 经过分析后,我们就可以知道,该题做法就是用二维前缀和进行事前预处理,然后一个一个枚举每个点覆盖到的总价值 ...

  9. Python实现初始化不同的变量类型为空值

    常见的数字,字符,很简单,不多解释. 列表List的其值是[x,y,z]的形式 字典Dictionary的值是{x:a, y:b, z:c}的形式 元组Tuple的值是(a,b,c)的形式 所以,这些 ...

  10. 用windbg查看dmp文件,定位bug位置

    windbg + .dmp + .pdb + 源代码,可以看到是哪个代码崩溃的 设置符号文件所在路径 File->Symbol File Path... 在输入框中填入.pdb文件所在的文件夹路 ...