ACL访问控制列表
一、ACL概述
(1)ACL是应用在路由器接口的指令列表,在路由器上读取OSI七层模型的第三四层包
头中的信息;如源地址、目的地址、源端口、目的端口等。
(2)ACL可分为两种基本类型:
标准访问控制列表:检查数据包的源地址。其结果基于源网络/子网/主机IP,来决定
允许还是拒绝转发数据包。它使用1~99之间的数字作为表号。
扩展访问控制列表:对数据包的源地址与目标地址均与进行检查。它也能检查特定的
协议、端口号及其他参数。它使用100~199之间的数字作为表号。
(3)ACL的工作原理:
ACL是一组规则的集合,应用在路由器的某个接口上。
ACL的两个方向:
出,已经进过路由器出来,正离开路由器接口的数据包
入,已到达路由器接口的数据包,将被路由器处理。
ACL,检查如果不匹配将继续往下检查,如果有任何一条匹配路由器将允许该数据包
通过不在检查,如果没有任何一条匹配则丢弃。要注意ACL的顺序。
二、访问控制类表的类型及配置
1、 标准访问控制列表
根据数据包的原IP地址来允许或拒绝数据包,表号1~99。
(1)创建ACL
R(config)#access-list access-list-number { permit|deny} source [source-wildcard]
access-list-number:访问控制列表表号,1~99.
permit|deny:允许|拒绝通信流量。
Source:数据包的源地址,可以是主机也可是网络地址。
source-wildcard:子网掩码的反码。
例:R(config)#access-list 1 permit 192.168.1.1 0.0.0.0
R(config)#access-list 1 permit 192.168.1.0 0.0.0.255
(2)关键字
Host:用来表示单个ip any:用来表示整个网段
(3)删除已建立的标准ACL
R(config)#no ip access-list access-list-number 在命令前加一个no,只需写列表号
(4)将ACL应用于接口
R(config-if)#ip access-group access-list-number {in|out}
在接口上取消ACL,在命令前叫no
例:R(config)#access-list 1 deny host 192.168.10.1
R(config)#access-list 1 permit any
R(config)#int f0/0
R(config)#ip access-group 1 in
查看配置:show access-lists
注:每个方向上只能有一个ACL,也就是每个接口做多只能有两个ACL:一个入方向,一个出
2、扩展访问控制类表配置
(1)创建ACL
R(config)#access-list access-list-number { permit|deny} protocol
{ sourcesource-wildacrddestinationdestination-widcard} [perator opran]
access-list-number:控制访问列表好,扩展ACL在100~199之间。
permit|deny:允许|拒绝通信流量。
Source、destination:源和目的,用来表实源地址和目的地址。
source-wildacrd、destination-widcard:子网掩码的反面。
perator opran:lt(小于)、gt(大于)、eq(等于)、neq(不等于)和一个端口号。 Echo
例:R(config)#access-list 101 deny tcp 192.168.1.0 .0.0.0.255 host 192.168.2.2 eq 21
拒绝1.0网段访问FTP服务器192.168.2.2
R(config)#access-list 101 deny icmp192.168.1.0 .0.0.0.255 host 192.168.2.2 echo
禁止1.0网段中的主机ping服务器192.168.2.2
(2)删除已建立的扩展ACL
R(config)#no access-list acces-list
扩展ACL与标准ACL一样,不能删除单条ACL语句,只能删除整个ACL。
(3)将ACL应用于接口
(4)将ACL应用于接口
R(config-if)#ip access-group access-list-number {in|out}
3、命名控制访问列表配置
(1)创建ACL
R(config)#access-list { standard | extended} access-list-name
standard | extended:标准|扩展
access-list-name:可以使用字母、数字组合的字符串。
标准命名ACL
R(config-std-nacl)#[Sequnce-Number] { permit | deny} source [source-wildcard]
扩展命名ACL
R(config-std-nacl)#[Sequnce-Number] { permit | deny} protocol
{source source-wildcard destination destination-widacard} [ooperator operan]
Sequnce-Number:表明配置的ACL语句在命令ACL所处的位置,默认情况第一条为10,第二条
为20,一次类推。如果不选择Sequnce-Number,参数就会添加到ACL列表末
尾序列号加10。
例1:允许1.1流量通过,拒绝其他。
R(config)#ip access-list standard cisco
R(config-std-nacl)#permit host 192.168.1.1
R(config-std-nacl)#deny dney
更改需求,出允许来自1.1的外,也允许来自2.1的通过
R(config-std-nacl)#ip access-list standard cisco
R(config-std-nacl)#15 permit host 192.168.2.1
例2:拒绝1.0访问FTP服务器2.2的流量,允许其他任何流量,扩展ACL
R(config)#ip access-list exrended cisco
R(config-std-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
R(config-std-nacl)#permit ip any any
(2)删除已建立的命名ACL
R(config)#no ip access-list { standard | extended} access-list-name
删除某个ACL语句
R(config)#no Sequnce-Number
也可用
R(config)#ip access-list standard cisco
R(config-std-nacl)#no 15 permit host 192.168.2.1
注:对命名ACL来说,可删除单条ACL,而不必删除整个ACL。并ACL语句可有选择的插入到列表中的某个位置,使得ACL配置更加灵活。
4、定时控制访问列表配置
配置定时ACL,需要建立一个时间范围,然后使用扩展ACL或命名扩展ACL引用这个时间范围。
(1)配置时间范围的名称
1>定义时间范围的名称
R(config)#time-range time-range-name
2>指定该时间范围何时生效
定义一个时间周期
R(config-time-range)#periodic days-of-the-week hh:mm to [days-of-the-week] hh:mm
days-of-the-week :取值表Monday(一)、Tuesday(二)、Wednesday(三)、Thursday(四)、Friday(五)、Saturday(六)、Sunday(日)、Daily(每天)、Weekdays(z周一到五)、Weekend(周六日)
定义一个绝对时间
R(config-time-range)#absolute [start hh:mm day month year] [end hh:mm day month year]
(2)在扩展ACL中引入时间范围
R(config)#access-list access-list-number {permit|deny} protocol { source source-wildcard destination destination-wildcard} [operator operan] time-range time-range-name
(3)将ACL应用与接口
R(config-if)#ip access-group accesslist-number {in|out}
例:定义时间范围
每周一到五8:30到17:30,允许所有IP通过
R(config)#time-range mytime
R(config-time-range)#periodic weekdays 8:30 to 17:30
R(config-time-range)#exit
R(config)#access-list 101 permit ip any any time-range mytime
R(config)#int f0/0
R(config-if)#ip access-group 101 in
例:定义绝对时间
在2009年5月10日8:00到20日18:00,允许所有IP通过。
R(config)#time-range mytime
R(config-time-range)#absolute start 8:00 10 may 2009 end 18:00 20 may 2009
R(config-time-range)#exit
R(config)#access-list 101 permit ip any any time-range mytime
R(config)#int f0/0
R(config-if)#ip access-group 101 in