ACL 包过滤技术
一、ACL基本概念
1、ACL 全称:Access Control List
2、ACL是一种包过滤技术。
3、APL是基于IP包头的IP地址、四层TCP/UDP头部的端口号、[五层数据]。 (基于三层和四层顾虑)
4、ACL在路由器上配置,也可以在防火墙上配置(防火墙上一般称为策略)。
二、ACL分类:
ACL主要分为 标准ACL 和 扩展ACL
1、标准ACL:
表号:1 — 99
特点:只能基于源IP对包进行过滤。
2、扩展ACL:
表号:100 — 199
特点:可以基于源IP、目标IP、端口号、协议等对包进行过滤。
三、ACL原理:
1、ACL表必须应用到接口的进或出方向才能生效;
2、一个接口的一个方向只能应用一张表;
3、进还是出方向应用?取决于流量控制的总方向;
4、ACL表是严格自上而下检查每一条,所以要注意书写顺序;
5、每一条是由条件和动作组成的,当流量完全满足条件时,执行动作,当某流量没有满足某条件时,则继续检查下一条;
6、标准ACL尽量写在靠近目标的地方
经验总结:
1)做流量控制,首先要先判断ACL写的位置(哪个路由器?哪个接口的那个方向?);
2)再考虑怎么写ACL;
3)如何写?
首先要判断最终要允许所有还是拒绝所有;
然后写的时候要注意:将严格地控制写在前面;
一般情况下,标准或扩展ACL一旦编写好,无法修改某一条,也无法删除某一条,也无法修改顺序,也无法往中间插入新的条目,只能一直在最后添加新的条目,如果修改或插入或删除,只能删除整张表重新写。
删除表的命令:
config terminal
no access-list 表号 删除某张表
四、命令:
1、标准ACL:
config terminal
access-list 表号 permit/deny 源IP或源网段 反子网掩码
注释:反子网掩码:将正子网掩码的0和1倒置。如:255.0.0.0 --> 0.255.255.255
发子网掩码的作用:用来匹配条件,与0对应的需要严格匹配,与1对应的忽略!
例如:access-list 1 deny 10.0.0.0 0.255.255.255 该条目用来拒绝所有源IP为10开头的。
access-list 1 deny 10.1.1.1 0.0.0.0 该条目用来拒绝所有源IP为10.1.1.1的主机。
可简写为:access-list 1 deny host 10.1.1.1
access-list 1 deny 0.0.0.0 255.255.255.255 该条目用来拒绝所有人
可简写为:access-list 1 deny any
标准ACL一般不用于做流量控制来使用,有其他的用途。
2、扩展ACL:
config terminal
access-list 表号 permit/deny 协议 源IP或源网段 反子网掩码 目标IP或目标网段 反子网掩码 [ eq 端口号 ]
注释:1)协议有:TCP、UDP、IP、ICMP;
2)中括号内的为可选项,其他的都是必须的;
3)当命令中写端口号时,前面的协议只能是TCP或UDP(端口号对应);
4)当不需要写端口号时,前面的协议可以是TCP、UDP、IP、ICMP中的一个。
5)如果协议是IP,则表示几乎对所有类型的数据进行相应的操作,因为TCP、UDP、ICMP都得经过IP协议。
举例:
1)acc 100 permit tcp host 10.1.1.1 host 20.1.1.2 eq 80 表示允许主机10.1.1.1访问20.1.1.2的80端口(TCP协议)
2)acc 100 permit icmp host 10.1.1.1 host 20.1.1.0 0.0.0.255 echo-replay 表示允许主机10.1.1.1向20.1.1.0网段发送ICMP协议的replay回应包
3)acc 100 deny ip host 10.1.1.1 host 20.1.1.0 0.0.0.255 表示拒绝主机10.1.1.1向20.1.1.0网段发送IP协议类型的数据(几乎大多数数据都被拒绝了)。
4)acc 100 permit ip any any 表示任何IP协议的数据都通过。(一般写在最后)
所有的ACL表的最后都有隐藏的一条 acc 表号 deny any 表示没有匹配前面的任何一条,则拒绝通过
五、命名ACL
作用:可以对标准ACL或扩展ACL进行自定义命名。(命名ACL其实是在标准ACL和扩展ACL的基础上的提升,可以是标准ACL也可以是扩展ACL,所以严格的来说并不是第三类。)
优点:1)自定义命名更容易辨认,也便于记忆;
2)可以任意修改、或删除表中的某一条,也可以往中间插入某一条;
3)
命令:
config terminal
ip access-list standard/extended xxoo 定义一张名为xxoo的标准(或扩展)ACL表
开始从deny或permit编写ACL条目 进入这张命名好的表编写条目不再需要在前面写 access-list 表号 了
exit 退出该表
删除某一条:
ip access-list standard/extended xxoo 进入该表
no 条目ID (所有的ACL的每一条策略前面都会有对应的编号,no 10 表示删除 编号为30的这一条。)
插入某一条:
ip access-list standard/extended xxoo 进入该表
条目ID 动作 条件
exit
(想要插入在什么位置,就根据ID的大小自定义一个ID号,ACL表的ID号按从小到大排列,即ID越小越靠前。)
提前定义好某一条的条目ID:
如:1000 permit ip any any 这条的编号就是1000,再写其他的条目只要ID小于1000的都会排在它的前面。
对于标准或扩展ACL也可用以上操作,表号即可当做表名。
六、补充:
查看ACL表的命令:
show ip access-list [表号或表名] 如果后面写了表号表示查看某一张表,如果不写表示查看所有表。
将ACL表应用到接口:
interface f0/x 进入接口f0/x
ip access-group 表号 in/out in表示将该表应用在进入方向,对进入该接口的数据进行检查,out表示接口的出方向。
no ip access-group 表号 表示取下该接口上的该表,与上一条相反 (但是该表并没有被删除)
查看接口和应用于该接口的ACL表:
show running-config