概述
一个很通常的需求,就是在某个公司里,有时希望限制员工在某个时间范围内才可以访问网页,即HTTP服务,或其它服务,在时间范围之外,就不能访问,那么这样的需求,就可以通过配置基于时间的ACL来实现。
要通过ACL来限制用户在规定的时间范围内访问特定的服务,首先设备上必须配置好正确的时间。在相应的时间要允许相应的服务,这样的命令,在配置ACL时,是正常配置的,但是,如果就将命令正常配置之后,默认是在所有时间内允许的,要做到在相应时间内允许,还必须为该命令加上一个时间限制,这样就使得这条ACL命令只在此时间范围内才能生效。而要配置这样的时间范围,是通过配置time-range来实现的,在time-range中定义好时间,再将此time-range跟在某ACL的条目之后,那么此条目就在该时间范围内起作用,其它时间是不起作用的。
在定义time-range时,常用的时间简单分为两种,第一种叫做绝对时间(absolute),即这个时间只生效一次,比如2010年1月1月15:00;另一种时间叫做周期时间(periodic),即这个时间是会多次重复的,比如每周一,或者每周一到周五。
配置
前提:在R1路由器上需要提前配置好正确的时间,此步骤省略。
-
配置time-range
r1(config)#time-range TELNET
r1(config-time-range)#periodic weekdays 9:00 to 15:00
说明:定义的时间范围为每周一到周五的9:00 to 15:00
-
配置ACL
说明:配置R1在上面的时间范围内拒绝R2到R4的telnet,其它流量全部通过。
r1(config)#access-list 150 deny tcp host 10.1.1.2 any eq 23 time-range TELNET
r1(config)#access-list 150 permit ip any any
-
应用ACL
r1(config)#int f0/1
r1(config-if)#ip access-group 150 out
-
测试时间范围内的流量情况
(1)查看当前R1的时间
r1#sh clock
14:34:33.002 GMT Thu Oct 1 2009
r1#
说明:当前时间为周四14:34,即在所配置的时间范围内。
(2)测试R2向R4发起telnet会话
r2#telnet 14.1.1.4
Trying 14.1.1.4 ...
% Destination unreachable; gateway or host down
r2#
说明:可以看到,在规定的时间范围内,R2向R4发起telnet会话是被拒绝的。
(3)测试除telnet外的其它流量
r2#ping 14.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 14.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
r2#
说明:可以看到,在规定的时间范围内,除了telnet之外,其它流量不受限制。
(4)测试除R2之外的设备telnet情况
r3#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
说明:可以看到,除R2之外,其它设备telnet并不受限制。
-
测试时间范围外的流量情况
(1)查看当前R1的时间
r1#sh clock
15:01:15.206 GMT Thu Oct 1 2009
r1#
说明:当前时间为周四15:01,即在所配置的时间范围之外。
(2)测试R2向R4发起telnet会话
r2#telnet 14.1.1.4
Trying 14.1.1.4 ... Open
r4>
说明:在时间范围之外,所限制的流量被放开。