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

 

posted @ 2020-03-26 13:15  __大江东去  阅读(1330)  评论(0编辑  收藏  举报