访问控制列表(ACL)

读取第三层、第四层包头信息,根据预先定义好的规则对包进行过滤。

ACL访问控制列表理论_第1张图片

访问控制列表在接口应用的方向

列表应用到接口的方向与数据方向有关

:已经过路由器的处理,正离开路由器接口的数据包;
:已到达路由器接口的数据包,将被路由器处理。

ACL访问控制列表理论_第2张图片

访问控制列表的处理过程

ACL访问控制列表理论_第3张图片

访问控制列表的类型

标准访问控制列表

  • 基于源IP地址过滤数据包;
  • 标准访问控制列表的访问控制列表号是1 ~ 99。

扩展访问控制列表

  • 基于源IP地址、目的IP地址、指定协议、端口和标志来过滤数据包;
  • 扩展访问控制列表的访问控制列表号是100~ 199。

命名访问控制列表

  • 命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号。

标准访问控制列表的配置

基础命令:

Router(config)#access-list access-list-number {permit | deny} source [ source-wildcard ]  //创建ACL
Router(config)# no access-list access-list-number   //删除ACL
Router(config-i)# ip access-group access-list-number {in lout}   //将ACL应用于接口
Router(config-if)# no ip access-group access-list-number {in lout}   //在接口上取消ACL的应用

应用实例:

Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255     //创建ACL,允许网段192.168.1.0/24
Router(config)# access-list 1 permit 192.168.2.2 0.0.0.0         //创建ACL,允许IP192.168.2.2

注意访问控制列表隐含拒绝,当你不设置规则时默认拒绝,相当于用了下面命令:

Router(config)# access-list 1 deny 0.0.0.0 255.255.255.255

当我们设置固定的主机地址可以不写子网掩码,在IP地址前加上关键字host即可,当我们设置所有IP地址时,可以用any代替“0.0.0.0 255.255.255.255”。

扩展访问控制列表的配置

基础命令

Router(config)# access-list access-list-number { permit| deny } protocol { source source-wildcard destination destination-wildcard } [ operator operan ]   //创建ACL
Router(config)# no access-list access-list-number   //删除ACL
Router(config-if)# ip access-group access-list-number {in |out}   //将ACL应用于接口
Router(config-if)# no ip access-group access-list-number {in |out}   //在接口上取消ACL的应用

应用实例

Router(config)# access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0  0.0.0.255
Router(config)# access-list 101 deny ip any any
Router(config)# access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
Router(config)# access-list 101 permit ip any any
Router(config)# access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo
Router(config)# access-list 101 permit ip any any

命名访问控制列表的配置

基础命令

Router(config)# ip access-list { standard | extended } access-list-name   //创建ACL,standard标准命名ACL,extended配置标准命名ACL
Router(config-std-nacl)# [ Sequence-Number] { permit | deny } source [ source-wildcard]   //扩展命名ACL,Sequence-Number决定ACL语句在ACL列表中的位置
Router(config-ext-nacl)# [ Sequence-Number ] { permit| deny } protocol { source source-wildcard destination destination-wildcard } [ operator operan ]   //配置扩展命名ACL
Router(config)# no ip access-list { standard lextended } access-list-name   //删除整组ACL
Router(config-std-nacl)# no Sequence-Number       //删除组中单一ACL语句,建议这种方法
Router(config-std-nacl)#no permit host ACL语句     //删除组中单一ACL语句
Router(config-if)# ip access-group access-list-name {in |out}   //将ACL应用于接口
Router(config-if)# no ip access-group access-list-name {in |out}   //在接口上取消ACL的应用
Router#show access-lists   //查看ACL配置信息

应用实例

Router(config)# ip access-list standard cisco          //标准命名ACL
Router(config-std-nacl)#15 permit host 192.168.2.1
Router(config)# ip access-list extended cisco        //扩展命名ACL
Router(config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
Router(config-ext-nacl)# permit ip any any