目录
ACL
ACL原理
ACL包过滤方式
ACL通用命令
查看ACL表命令
删除整张表命令
接口配置ACL
ACL分类
标准ACL
标准ACL的动作与条件
通配符掩码
扩展ACL
扩展ACL的动作与条件
命名ACL
前言
书写方式
ACL
含义:访问控制列表,其是一种包过滤技术,主要实现了对访问资源的控制。
注意:
- ACL基于IP包头中的IP地址、四层TCP/IP头部的端口号(这里路由器破例可以参与四层工作)
- ACL在路由器上的接口处配置,也可以在防火墙上配置(在防火墙上配置的一般称为策略)
ACL原理
- ACL表必须应用到接口的进或出方向才能生效
- 一个接口的一个方向(进口/出口)仅能应用一张ACL表
- 进出方向的配置取决于流量控制的总方向
- ACL表是严格按照自上而下检查每一条策略,所以要注意书写顺序
- 每一条ACL条目由条件和动作组成,当某流量没有满足某条件,则继续检查下一条
- 所有ACL策略的末端默认有一条隐藏的拒绝所有策略,这个策略我们不用写。
ACL包过滤方式
当一个包来了之后,该包的特征若和条件特征完全吻合,那么就不会往后继续检查进而执行后面动作(放行或阻止),若有一丁点不吻合,则该条策略不起作用,进而检查下一条策略。
总结:层层过滤,层层放行。
ACL通用命令
查看ACL表命令
进入特权模式
show ip access-list [表号]
注意:这里面可以看到表条目的编号,该编号在命名ACL里面会有用。
删除整张表命令
进入全局模式
no access-list 表号
接口配置ACL
进入接口配置模式
在接口配置ACL:ip access-group 表号 in/out
将ACL从接口取出:no ip access-group 表号 in/out
注意:最后的in/out指明了该表应用在接口的进口还是出口方向上
ACL分类
前言
- 我们想要在路由器上过滤时,首先我们要在路由器上创建一张ACL表
- 当在路由器上创建一个标准ACL时,必须要首先指定标准ACL表的名字(表号)
- ACL表主要有标准ACL和扩展ACL
- 标准ACL的表号范围为1-99;扩展ACL表号范围为100-199
- 在一个路由器上表号不能相同,在多个路由器上表号可以相同
进入全局配置模式
ACL语法:access-list 表号 动作与条件
注意:
- 上面着个语法适用于所有种类ACL
- 不同ACL编写语法的不同也就是后面的动作与条件书写方式的不同
- 若路由器没有ACL表则执行以上命令会创建一张表并为表增加该条目,若有了该表,则执行以上命令就会为该表添加一个表条目
标准ACL
前言:标准ACL只能基于源IP对包进行过滤,其表号范围为1-99.
标准ACL的动作与条件
语法:动作 源IP/源网段范围
动作
- 允许:permit
- 否决:deny
源IP/源网段范围
- host IP地址:仅对某一个主机的源IP进行匹配(类似于——IP地址 0.0.0.0)
- 源IP/源网段 通配符掩码:匹配某一网段的范围或IP地址的数据包
- any:所有的范围的源IP进行匹配(类似于——IP地址 255.255.255.255)
通配符掩码
通配符掩码作用:用来匹配网段或IP地址,与0对应的需要严格匹配,与1对应的忽略,其主要用于控制该网段或IP地址包的过滤。
具体案例
源IP为10.1网段的包都进行阻止:access-list 1 deny 10.1.3.1 0.0.255.255
源IP为10.1.3.1IP地址的包都进行放行
- 普通写法:access-list 1 permit 10.1.3.1 0.0.0.0
- 简化写法:access-list 1 permit host 10.1.3.1
所有数据包都进行阻止
- 普通写法:access-list 1 deny 10.1.3.1 255.255.255.255
- 简化写法:access-list 1 deny any
扩展ACL
前言:扩展ACL可以基于源IP、目标IP、目标端口号、协议等来对包进行过滤,其表号范围为100-199
扩展ACL的动作与条件
语法:动作 协议 源IP/源网段范围 目标IP/目标网段范围 [逻辑符号 目标端口号]
动作
- 允许:permit
- 否决:deny
IP/网段范围
- host IP地址:仅对某一个主机的IP进行匹配(类似于——IP地址 0.0.0.0)
- IP/网段 通配符掩码:匹配某一网段的范围或IP地址的数据包
- any:所有的范围的IP进行匹配(类似于——IP地址 255.255.255.255)
注意:
- 协议类型:tcp/udp/icmp/ip(若后面加端口号,则前面协议仅有2个选择——tcp/udp)
- 逻辑符号:(eq:等于、gt:大于:lt:小于)主要用来匹配范围端口
- 目标端口号可以不写,但其他的条件必须写
- 若只满足其中的一点条件,那么不叫满足这个条件,只有来的数据包所有特征和这里面的条目完全吻合,才被称为满足条件,才会执行相应的动作
具体案例
10.1.1.1访问20.1.1.3中80端口的tcp数据都放行
access-list 100 permit tcp host 10.1.1.1 host 20.1.1.3 eq 80
放行所有ip数据包
access-list 100 permit ip any any
命名ACL
前言
- 一般情况下,标准或扩展ACL一旦编写好,那么就无法修改某一条,也无法删除某一条,甚至无法修改顺序,只能一直在最后添加新的条目。
- 在标准或扩展ACL中若想修改、插入、删除,只能删除整张表
- 之前我们通过表号对ACL进行命名,但是当我们在一台设备上起的表非常多的时候,我们不能很快的通过表号判断该表的作用,这就用到了命名ACL
命名ACL作用:可以对标准/扩展ACL进行自定义命名,也可以通过命名ACL对标准/扩展ACL进行条目的增删改操作。
优点:
- ACL自定义命名更容易辨认,也便于记忆
- 可以任意修改某一条,或删除某一条,也可以往中间插入某一条
书写方式
进入全局配置模式
创建/进入一张ACL表:ip access-list 表类型 ACL表名称
进入了扩展ACL配置模式
在扩展ACL配置模式下书写动作与条件
删除ACL条目:no ACL条目编号
插入ACL条目:ACL条目编号 动作与条件
表类型
- standred:标准ACL
- extended:扩展ACL
ACL条目编号
前言:下面的10、20、30就是ACL条目编号(在其中可以插入个位级的条目编号)
注意:
- 在创建ACL表时,表名称可以随意书写。
- 在特定的表类型的情况下仅能书写特定的动作与条件
- 命名ACL可以修改已经创建好ACL表的标准或扩展ACL,只需要通过表号作为表名称进入该表即可
- 命名ACL不属于ACL分类中的一种