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

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

permit host 1.1.1.0
permit 1.1.1.0 0.0.0.0

省略写法,匹配所有:

permit any any
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 配置

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

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

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
Router(config)#access-list 100 permit ip any any
Router(config)#do show access-lists Router(config)#int e 0/1
Router(config-if)#ip access-group 100 out

总结

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

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

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

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

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

最新文章

  1. PHP设计模式(七)适配器模式(Adapter For PHP)
  2. Linux学习之CentOS(二十一)--Linux系统启动详解
  3. zTree v3.5配置
  4. archaism remains
  5. CentOS7 SSH相关
  6. Open Xml SDK 引文
  7. C++ 字符串操作常见函数
  8. Codis 集群搭建
  9. 关于$.ajax中data字段的整理--包括json转换和spring注解
  10. Struts 2知识回顾----拦截器(Intercept)总结
  11. texedo 分布式事务
  12. Microsoft Visual Studio 6.0 Enterprise Edition
  13. Android系统Surface机制的SurfaceFlinger服务的线程模型分析
  14. javascript动画效果之透明度(修改版)
  15. Spark环境搭建(上)——基础环境搭建
  16. tp系统常量定义
  17. Menubutton按钮弹出菜单
  18. Django by example -----1总结
  19. (转)source insight的使用方法逆天整理
  20. BarTender怎么打印公式化的三列标签

热门文章

  1. Threejs实现滴滴官网首页地球动画
  2. C、C++、Java到Python,编程入门学习什么语言好?
  3. Python Ethical Hacking - Packet Sniffer(1)
  4. T3 成绩单 题解
  5. Linux好学吗?怎么自学Linux?6个值得你去学习Linux的理由!
  6. 利用华为eNSP模拟器实现vlan之间的通信
  7. 【bfs+链式向前星】防御僵尸(defend)计蒜客 - 45288
  8. go test 测试用例那些事(二) mock
  9. 2020 年百度之星·程序设计大赛 - 初赛三
  10. ⛅剑指 Offer 11. 旋转数组的最小数字