ACL
ACL
ACL(Access Control List):访问控制列表
ACL是一种包过滤技术,可过滤掉一些报文。
基于三层和四层过滤。
一般配置在三层端口上,一个端口有进(进入网络设备)和出(从网络设备出去)两种情况。
用途:流量控制,匹配条目(NAT)。
ACL原理
1)ACL表必须应用到接口的进或出方向,建表+应用才完整。
2)一个接口的一个方向(进/出)只能应用一张ACL表!
3)ACL表是严格自上而下检查每一条,所以要注意书写顺序。
4)ACL表中每一条记录是由条件和动作(即允许permit和拒绝deny)组成,当数据帧满足执行条件时(无论被允许还是被拒绝),就不会再看下面的记录,直接执行动作,不满足时才匹配下面的记录。末尾隐含一条deny所有报文的指令。也就是说,当接收到的数据包和ACL所有的明细条目都不匹配的时候,则就会触发这条隐藏的指令,直接将报文丢弃。
5)书写顺序一般由小范围到大范围,自行琢磨。
6)一般情况下,标准或扩展ACL一旦编写,无法修改某一条,也无法删除某一条,也无法往中间插入新的条目,只能一直在最后添加新的条目如想修改插入或删除,只能删除整张表,重新写。后面有不一般的!
标准ACL
ACL表号(范围1-99)
标准ACL只能基于源IP地址进行过滤。
access-list 表号 permit/deny 源IP或源网段 反子网掩码 #设置标准ACL的配置
注:本文设备命令是cisco的设备命令
表号就是ACL 的ID。
反子网掩码
将正子网掩码0和1倒置
255.0.0.0 -> 0.255.255.255
255.255.0.0 -> 0.0.255.255
255.255.255.0 -> 0.0.0.255
作用:用来匹配条件,与0对应的需要严格匹配,与1对应的忽略
如:access-list 1 deny 10.0.0.0 0.255.255.255
255对应的位置是谁无所谓,10.1.0.0,10.1.0.1,这些都是一样的,与0对应的10,20.0.0.0和10.0.0.0就不一样(这里的一样/不一样是指匹配条件上),所以这条命令意思就是拒绝源IP为10.x.x.x(即10 网段)的数据包通过。
tips:反子网掩码全为0就是具体IP(host),全为255就是全部人(any)。
扩展ACL
可以基于源IP、目标IP、端口号、协议对包进行过滤
access 表号 permint/deny 协议 源IP或源网段 反子网掩码 目标IP 或源网段 反子网掩码 [eq 端口号]([]号代表可有可无)
协议部分可以有:tcp/udp/icmp/ip......等协议,后面的端口号与前面的协议对应
注:当有端口号时,拒绝/接受该应用该协议的端口号。
无端口号时,拒绝/接受 基于上面协议的全部端口号。
eq是等于号
类似:neq(不等于)lt(小于)le(小于等于)gt(大于)ge(大于等于)
如:access 100 permit tcp 10.1.1.1 0.0.0.0 20.1.1.3 0.0.0.0 eq 80
这条命令就是允许10.1.1.1访问20.1.1.3的80端口,当去掉80时,就允许10.1.1.1访问20.1.1.3的基于tcp协议的全部端口号。
命名ACL
可以对标准或扩展ACL进行自定义命名(本身拥有标准/扩展ACL的功能)
特点:可以任意修改某一条,或删除某一条,也可以往中间插入某一条
ip access-list standard/extended 自定义表名
这里的standard和extended就是选择设定为标准或扩展ACL。
命令可参考里面的40、ACL部分:参考