Cisco路由器中有两种常用访问控制列表(Access-List),一种是标准访问列表,另一种是扩展访问列表。前者主要用于基于源和目标地址的数据包过滤,而后者用于基于目标地址、源地址和网络协议及其端口号等的数据包过滤。随着网络技术的发展和用户要求的变化,从IOS 12.0开始,Cisco路由器新增加了一种基于时间的访问控制。通过它,可以根据一天中不同时间或者根据一周中的不同日期(当然也可以二者结合起来)控制网络数据包的转发,给网管人员的日常维护带来很大便利。
这种基于时间的访问列表是在原来标准访问列表和扩展访问列表中加入有效的时间范围来更合理有效地控制网络的。它先定义一个时间范围,然后在原来的各种访问列表的基础上应用它,对于编号访问表和名称访问表均适用。
命令及参数
可以用“time-range”命令来指定时间范围的名称,然后用“absolute”命令或者一个或多个 “periodic”命令来具体定义时间范围,IOS命令格式为:
time-range time-range-name absolute [start time date] 
[end time date] periodic days-of-the week hh:mm to [days-of-the week] hh:mm 

time-range:用来定义时间范围;
time-range-name:时间范围名称,用来标识时间范围,以便在后面的访问列表中引用;
absolute:该命令用来指定绝对时间范围。它后面紧跟start和 end两个关键字。在两个关键字后面的时间要以24小时制和“hh: mm(小时:分钟)”表示,日期要按照“日/月/年”形式表示。这两个关键字也可以都省略。如果省略start及其后面的时间,表示与之相联系的permit 或deny语句立即生效,并一直作用到end处的时间为止; 若省略end及其后面的时间,表示与之相联系的permit 或deny语句在start处表示的时间开始生效,并且永远发生作用(当然如把访问列表删除了的话就不会起作用了)。
为了便于理解,下面看两个例子。 如果要表示每天早8点到晚6点开始起作用,可以用这样的语句:
absolute start 8∶00 end 18∶00
再如,我们要使一个访问列表从2003年1月1日早8点开始起作用,直到2003年1月10日晚23点停止作用,命令如下:
absolute start 8∶00 1 January 2003 end 23∶00 10 January 2003
这样我们就可以用这种基于时间的访问列表来实现,而不用半夜跑到办公室去删除那个访问列表了。接下来,介绍一下periodic命令及其参数。
一个时间范围只能有一个absolute语句,但是可以有几个periodic语句。
periodic:主要以星期为参数来定义时间范围。它的参数主要有Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday中的一个或者几个的组合,也可以是daily(每天)、weekday(周一到周五)或者weekend(周末)。
我们还是来看几个具体的例子。比如表示每周一到周五的早9点到晚10点半,命令如下:
periodic weekday 9∶00 to 22∶30
每周一早7点到周二的晚8点可以这样表示:
periodic Monday to Tuesday 20∶00
在把时间范围定义清楚后,我们来看看如何在实际情况下应用这种基于时间的访问列表。
实例分析
在上图所示的网络中,路由器有两个以太网接口E0和E1,分别连接着202.111.170.0和202.222.100.0两个子网络,其中202.111.170.50和202.222.100.100分别是Web服务器1和Web服务器2。还有一个串口S1,连入Internet。为了让202.111.170.0子网的公司员工在工作时间不能进行Web浏览,从2000年12月1日1点到2000年12月31日晚24点这一个月中,只有在周六早7点到周日晚10点才可以通过公司的网络访问Internet。我们做如下的基于时间的访问控制列表来实现这样的功能:
Router# config t 
Router(config)# interface ethernet 0 
Router(config-if)#ip access-group 101 in 
Router(config-if)#time-range http 
Router(config-if)#absolute start 1∶00 1 December 2000 end 24∶00 31 
December 2000 periodic Saturday 7∶00 to Sunday 22∶00 
Router(config-if)#ip access-list 101 permit tcp any any eq 80 http 
我们在一个扩展访问列表的基础上再加上时间控制就达到了目的。因为要控制Web访问的协议,所以必须用扩展列表,也就是说,编号要在100~199之间。详细方法可参考其他关于Cisco或者CCNA的基础文档。我们定义这个时间范围的名称是http,在列表中的最后一句方引用了它。我们再看下面一个例子。
网络结构同上例,现在假设我们的访问要求变了,Web服务器2(IP:202.222.100.100)上放着新年贺岁版的公司主页,希望在2001年12月31日24点前,Internet的用户访问的是服务器Web1(IP:202.111.170.50)上的主页内容,而不能访问Web2上的内容。在此之后的新年里,访问的是新年版主页而不能访问旧版本的主页。下面,我们利用带有时间控制的访问列表来自动实现这个功能,而不必让网管员在新年半夜时手动删除。列表内容如下:
Router# config t 
Router(config)#interface serial 0 
Router(config-if)#ip access-group web in 
Router(config-if)# 
time-range changewebabsolute end 24∶00 31 December 2000 
Router(config-if)#ip access-list extended web 
permit tcp any host 202.111.170.50 eq 80 changeweb 
deny tcp any host 202.222.100.100 eq 80 changeweb 
permit tcp any host 202.222.100.100 eq 80 

第一句是进入端口控制模式。第二句是应用名称访问列表Web,并且是用在Serial 0的入口方向,即数据流入路由器的时候做协议控制分析。第三句定义一个时间范围名称changeweb。第四句定义扩展名称访问列表Web。第五、六句表示在新年前,只能允许访问Web1。第七句是允许所有到Web2的Web访问。表面看来第七句是在没有时间限制的情况下全部允许Web2的访问请求。实际上,路由器中访问控制列表的每个表项的顺序是很重要的,它是从上到下执行的,在新年之前,也就是第五、六句起左右的时候,访问Web2的请求已经被禁止了,所以,第七句就没有用了,而在新年之后第五、六句失效了,第七句才发挥它的作用,允许所有对Web2的访问请求。
看到这儿,读者是否感觉到这种方法的作用了?合理有效地利用基于时间的访问控制列表,可以更有效、更安全、更方便地保护我们的内部网络,这样您所在的网络才会更安全,网络管理员也会更轻松!